avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 13, 2019, 04:46 AM
  • Proudly celebrating 13 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Tuxman [ switch to compact view ]

Pages: prev1 [2] 3 4next
What would you rather use and why?

I prototyped a new project (basically, a decision helper) in Javascript and ugly CSS and I need an idea if it would be worth the additional effort to reimplement it as native applications. (Platform-independent, of course.)

General Software Discussion / WINFILE is back
« on: April 09, 2018, 01:22 PM »
Finally, Microsoft came to the conclusion that people could want a multi-window file manager on Windows 10. :)

You know what sucks?
E-mail address standards suck.

"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"

Did you know that this is a valid e-mail address? Well, it is. Try to validate that!

Oh, wait, there is a solution for that: My very own e-mail validation library.

Will move away from GitHub some day. For now, it's there. Enjoy.

Looks like BitsDuJour has three SUMo offers by now:
- Discounts for a 1-Year License
- Discounts for a Lifetime License

- Free License. (At least according to the user name.)


Enjoy, probably.

The fan of old-school tools strikes again.  8)
(NANY 2019, anyone?)

Do you know what's missing in both POSIX and Windows? Right: A sane way to rename files/directories with a regular expression.
The usual approach on POSIX systems is:

ls * | sed -E 's/(.*)text(.*)to(.*)remove(.*)/mv & "$1$2$3$4"/' | sh

That is horrendously ugly and does not port well to Windows. Here is my slightly less horrendously ugly attempt to fix that:


N.A.N.Y. 2018 / NANY 2018 Release: UnClouder for Firefox
« on: November 18, 2017, 04:34 PM »
NANY 2018 Entry Information

Application Name UnClouder
Version 0.2
Short Description Replaces "the Cloud" marketing speech on websites you visit to correctly describe potential security issues.
Web Page
Download Link
System Requirements
  • Firefox 57 or higher
Version History
  • 0.1: Initial release
  • 0.2: Grammar fixes, (virtual) DOM fixes
Author mouser  :P (just in case anything breaks)

One more? Fuck yeah!

This little side-project of mine is my first approach at a content script (formerly known as "userscript") for Firefox's WebExtension thingy. It basically grew as a playfield while preparing ymarks development, I just had the time to finish it.


If you visit a German or English website talking about "the Cloud" bullshit, this extension will replace that bullshit by "other people's computers" so you can easily see why the bullshit is bullshit.

Portability issues:

  • I only added two languages for now. I am lazy.
  • The UnClouder uses Firefox's "CLD2" language detector. Addendum: Chrome et al. support that too, but the messaging infrastructure seems to work differently. If anyone of you needs a Chrome/Vivaldi/... version, let me know that it might be worth the effort.

Enjoy or whatever.

N.A.N.Y. 2018 / NANY 2018 Release: Gowser, a Gopher browser
« on: November 04, 2017, 04:57 PM »
NANY 2018 Entry Information

Application Name Gowser
Short Description A simple Gopher browser
Supported OSes Compiled for Windows, would probably compile on *ix though
Web Page (currently, source only)
System Requirements
  • Binary: Windows.
  • Source: Probably, Linux/Unix with GTK+ and Windows.
Version History
  • 20171104: init. DC build, may or may not break.

'member Gopher? I 'member.
Why is Gopher Still Relevant?

  • Gowser will browse Gopher.
  • Can make me procrastinate working on ymarks.

Planned Features
  • Support for image and sound files.
  • Support for Gopher's killer feature: searches.
  • Bookmarks.


Unrar. Open the .exe. Enjoy.

Using the Application
Enter a Gopher URL.

Remove the extracted .exe file.

Known Issues
  • Most of plain Gopher works, media files (images and sound files) don't (yet). As they rarely occur, I decided to postpone their implementation.
  • The one big advantage of Gopher towards HTTP is that you can easily search it. Maybe some day Gowser will support that, but it currently does not.
  • This build creates a debug log. If you experience crashes, you can send it to me or something.
  • There are crashes. Sorry.

N.A.N.Y. 2018 / NANY 2018 Release (preliminary alpha-or-so): ymarks
« on: October 30, 2017, 09:15 AM »
k0j8yAyE.jpg ymarks :: self-hosted cross-browser bookmarks sync

You know Xmarks, the almost legendary bookmark sync service that has been allowing you to synchronize your bookmarks across multiple browsers since 2006? I have been working on a self-hosted open-source alternative for a couple of months (skipping a couple of weeks because this is far from being my only ongoing development project) and I'm confident to be able to release a first version just in time for NANY 2018.

I implement the client part as a WebExtension, it will probably work with Firefox, Chrome, Vivaldi, Opera, and Edge without any modifications when I'm done. I'll also try to provide an Android app because mobile browsers suck when it comes to extensibility, but that does not have a high priority as of now.

DONEs and TODOs:

Bookmarks server:

  • Compiles on Windows done
  • Compiles on *ix done
  • Can retrieve and store bookmarks done
  • Can backup bookmarks done
  • Can send bookmarks to the client done

Browser extension:

  • Can upload bookmarks done
  • Can download bookmarks done
  • Can download previous bookmarks done
  • Automated downloads and uploads on start/changes done
  • Ensure cross-browser compatibility Write separate extensions because Mozilla is a cunt done

Android app:

  • Settings (UI & storage TODO
  • Bookmarks list TODO
  • Add/Edit/Delete bookmarks TODO


N.A.N.Y. 2018 / NANY 2018 Release: twtxtc
« on: September 17, 2017, 11:09 AM »
Application Name twtxtc
Short Description A command line client for the twtxt micro-blogging network
Supported OSes
  • tested on FreeBSD and Windows 10
  • will probably work everywhere else as long as a decent C compiler and curl exist
LicensesMostly WTFPL, includes one MIT-licensed library
Web Page
Download Link Check the attachment or compile your own version from the website
System Requirements
  • runtime: curl (executable) in your PATH
  • building: CMake and a C compiler
Author Take a guess!

A command-line client for the twtxt micro-blogging system, written in C.

README (excerpts pasted here for your convenience, please refer to the website for boring technical details and TODOs):

What is twtxt?

twtxt is a decentralised, minimalist approach to micro-blogging, similar to Twitter but with self-hosted plaintext files. See the original twtxt documentation for details. twtxtc is a twtxt client written in the C language.


Build or download an appropriate curl binary for your system and place it into your $PATH or the twtxtc folder. If you don't, you won't be able to retrieve your timeline. Sorry.


./twtxtc [COMMAND]


tweet <text>            Adds <text> to your twtxt timeline.
timeline                Displays your twtxt timeline.
following               Gives you a list of all people you follow.
follow <user> <URL>     Adds the twtxt file from <URL> to your timeline.
                        <user> defines the user name to display.
unfollow <user>         Removes the user with the display name <user> from your timeline.
help                    Displays a help screen.


If found, twtxtc will use the .twtxtconfig file inside your HOME directory. (See twtxtc help for information on where it should be found.) The .twtxtconfig file is meant to be a valid JSON file like this:

    "nickname": "tux0r",
    "twtxtfile": "twtxt.txt",
    "maxlog": 100,
    "spacing": "   ",
    "following": {
        "user_1": "",
        "user_2": ""

Possible entries are:

  • nickname: Your preferred nickname. Only used to filter mentions to other people.
  • twtxtfile: The location of your twtxt.txt file. Defaults to ./twtxt.txt.
  • maxlog: The maximum number of entries shown when you view your timeline. Defaults to 100.
  • spacing: A string value that contains the spacing between the user name and the text when viewing your timeline. Defaults to three spaces.
  • following: A list of users you follow. Can be managed with the follow and unfollow commands.
The current limit of the list of users you are following is at 4 KiB. You probably won't reach that limit any time soon.

A Windows binary is attached. Here is the source code for your pleasure:

Have fun etc. etc.

While reviewing small browsers, I came across NetSurf as well. NetSurf is a fast and bloat-free web browser which happens to have got JavaScript support in younger incarnations by adding the Duktape ECMAScript engine.

Duktape, written in C, is much smaller than V8 or similar JS engines, making it a good choice for embedded systems or things like adding a scripting functionality to existing software. No web browser involved! It supports ECMAScript 5.1 with some additions from newer revisions, including regular expressions and Unicode. For lazy people like me, there is a C++ wrapper named Dukglue (quack!) available which lacks (good) documentation but works like a charm. If you ever thought that your application could need a good scripting engine, Duktape seems to be a good choice. Your C/C++ code can access any script functions and your scripts can access exported C/C++ symbols which is easier than it sounds.

You want an example? You get an example!
Assume that you want to have a JavaScript plug-in which doubles any input value.

Code: Javascript [Select]
  1. var DemoScript = {};
  2. DemoScript.double = function(number) {
  3.     return number*2;
  4. }
  5. DemoScript;

Here's how Dukglue probably* handles it:

Code: C++ [Select]
  1. #include <string>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <dukglue/dukglue.h> // <- this is important
  6. // ... blah ...
  8. void processScripts(scriptfile) {
  9.     duk_context* ctx = duk_create_heap_default();
  11.     std::ifstream infile(scriptfile); // add the exists() check yourself pls.
  12.     std::string file_contents = [&infile] {
  13.         // Read the script file contents for processing.
  14.         std::ostringstream ss{};
  15.         ss << infile.rdbuf();
  16.         return ss.str();
  17.     }();
  19.     try {
  20.         // Give me a local handle to the script:
  21.         DukValue script = dukglue_peval<DukValue>(ctx, file_contents.c_str());
  23.         // Try to call double(2):
  24.         int value = dukglue_pcall_method<int>(ctx, script, "double", 2);
  25.         std::cout << "The double value of 2 is " << value << std::endl;
  26.     }
  27.     catch (DukException& e) {
  28.         // Damn.
  29.         std::cout << "Blimey! Something bad happened. " << e.what();
  30.     }
  32.     duk_destroy_heap(ctx);
  33. }
  35. // now call processScripts("double.js"); or whatever.

* I was lazy, I just assumed it would work like this and it probably does. A more complex and actually tested ;) example is part of my blog software (nudge, nudge).

According to mouser, this might be interesting for more people than just me. So here it is. :)

Learning through pain, my friends ...

A UX design flaw in the Google's Chrome browser could allow malicious websites to record audio or video without alerting the user or giving any visual indication that the user is being spied on. (...) Bar-Zik reported the security issue to Google on April 10, 2017, but the company doesn't consider this as a valid security vulnerability.

Stop using Chrome. All of you. Now.

At least in Germany, you can currently get SoftMaker Office Standard or Professional for less than 23 €, including a free copy of the Paragon Partition Manager. Not sure about other countries though. Try it.

irc:// links don't work. (See the infobox.)

Mini-Reviews by Members / qutebrowser - Mini-Review
« on: April 01, 2017, 06:01 PM »
Basic Info

App Namequtebrowser
App Version Reviewed0.10.1
Supported OSesmost (or even all?) OSs which have Python 3 and QtWebKit available
Support Methods
Pricing Schemequtebrowser is licensed under the terms of the GPLv3, meaning that you're - at least - free to use it without spending any money.
Screencast Video URL



In 2017, the world wide web has long lost one of its key features, namely its simplicity. Remember when you could just visit most websites with a text-mode browser and not lose any relevant information? By today, the web has turned into a giant blob of anti-features, making it unnecessarily hard to keep a low memory and CPU footprint while trying to use it. Browsers like NetSurf which feature their own engine and manage to use as few resources as possible are neat, but they fail to be compatible with just anything, at least right now.

A pretty good compromise between a low footprint and an adequately large feature set is the qutebrowser which is amazing in multiple ways: It is fast even with its Python core, it is efficient even with its QtWebKit engine, it is accessible even though being modeled after Vim.

Here is my review.

Who is this app designed for:

The qutebrowser is a great alternative for the Unix-only uzbl browser and Firefox's to-be-deprecated Vimperator and Pentadactyl extensions, focusing on Vim-like UI and keyboard features. Having to use the mouse can be annoying in a text-based medium like the web.

If you prefer a minimal waste of screen space and efficient keybindings to giant toolbars and weird mouse (or even touch) gestures, qutebrowser could be for you.

The Good

If you know Vim, qutebrowser won't be a big deal for you. You can use most of Vim's basic keybindings (including hjkl), one-key commands (like O for opening something in a new tab) and some Vimperator-like commands like :tab-close. (You can still switch between the tabs with your mouse if you want to.) qutebrowser will show a DuckDuckGo tab and a Quickstart manual on its first start (see the screenshot above).


There is a built-in ad blocker, advertised on the first start: Just type :adblock-update and you're good. Also, have I mentioned the low resource usage?


If you're not happy with some of the defaults, the built-in settings page provides a couple of rather advanced options including things like the window title format and the statusbar padding. Sorely missed from recent Firefoxes. And: Of course the qutebrowser has an "insert mode" for forms.  ;)

The needs improvement section


How does it compare to similar apps

Compared to Firefox with Vimperator or Pentadactyl, qutebrowser is not nearly as extensible but it saves you quite some headaches. There are official FAQ about that. :)


I'll see if this will be my default browser after Firefox's effective death on Nov. 14. You can never have enough options. For now, I'm impressed - I uninstalled NetSurf and dismissed Otter and I'll give this one a ride for a while.  :Thmbsup:


Here, here:
Bits du Jour

Living Room / The end of replaceable batteries in smartphones
« on: January 24, 2017, 06:57 AM »
That's it. LG's upcoming G6 will not have a replaceable battery anymore.
Because, ha, as if modern devices would last long enough to see the demise of their batteries...

At least my life has suddenly become more interesting as I'll probably need to throw a dice about my next smartphone. LG was a safe bet until now.  :(

N.A.N.Y. 2017 / NANY 2017: Tiny Server Inventory
« on: December 25, 2016, 08:39 AM »
While my evil plan to release a great application for NANY 2017 was cancelled by the particular application becoming much too complicated for a quick release, I decided that I'd just write a small(ish) utility in time just for the sake of it.



Some of you might know that, once you started renting your own servers, it can quickly become not so easy anymore to keep track of what's where. I, for one, have been using Evernote for this. You might see that Evernote is not perfect for this - the more servers you have, the more annoying it is to maintain your server/service list.

This application aims to be a server/service database. See the screenshot for what it can do and what not.


WTFPL. Take it or leave it.

Technical interior:

I spent half of the past week trying to make sense of Object Pascal. This is how far I have come. There are quirks (to be solved later, maybe).

Future plans:

I might add a search functionality some day. Probably not in 2016 anymore. A lot of other projects to do.
Cancelled. Do it yourself.

Enjoy. Or don't.

General Software Discussion / Any replacement for ac'tivAid?
« on: December 22, 2016, 02:24 PM »
As the ac'tivAid development seems to have been stopped, I wonder if there is a similar software available. I mainly use the function to assign global hotkeys to applications (so I can e.g. start ConEmu with Ctrl-Alt-Space) and the Shutdown dialog (Windows+Q).

Any ideas?

Non-Windows Software / FYI: Cross-platform ASM
« on: December 04, 2016, 08:36 AM »

The project aim is to create a fully portable library for visual assembly language programming. The supported operating systems for now are Win32, Linux and KolibriOS. Other systems might be added later.


Found Deals and Discounts / WinRAR: 1/3 off
« on: December 04, 2016, 08:34 AM »
Looks like there is a notable offer:

Not sure when it will expire though. After having played with Bandizip for a couple of weeks, I might, however, give WinRAR another spin for this price.

So - has everyone left Firefox yet?

Good luck.


TL;DR: the world's largest ads provider wants its piece of the cake that is you.


The vulnerability will not be fixed. The indirect costs of switching to HTTPS (like lost advertisement revenue) make it a inviable solution.

Open Source sucks.

Yadda yadda. No one reads my threads anyway. Penis!

Information and download:
Sources and readme:

(Yo mouser, don't you think it's time for a new subforum "The Bin, including Tuxman's software"?)

Sleep and stuff. G'night.

Pages: prev1 [2] 3 4next