====== All Things Software ====== This is just a bag'o'things, really. Links and tidbits of information that I keep referring to, and prefer to keep online for easier reference. ===== Projects ===== * [[http://pdclib.rootdirectory.de | PDCLib]] -- The Public Domain C Library * [[http://jaws.rootdirectory.de | JAWS]] -- Just A Working Setup, a preconfigured [[http://www.cmake.org | CMake]] project framework * [[http://encoding.rootdirectory.de/ | Encodings Table]] -- A reference of the various ISO-8859 encodings, Windows codepages, Unicode character names, UTF-8 encodings etc. ===== Rants and References ===== * [[software:MacheteDebugging| Machete Debugging]] -- Occam's Razor applied to the jungle of debugging. * [[software:AmigaLibraryBase | Amiga's LibraryBase]] -- How AmigaOS managed without virtual addressing. * [[software:WhyPeopleHateMicrosoft | Why People Hate Microsoft (...and Linux)]] -- A rant about the good old times of home computing and OS alternatives. * [[software:VersioningStyleGuide | Versioning Style Guide]] -- My take on software versioning. Dated, and in dire need of a rewrite (and better presentation), but still my preferred scheme. * [[negix:start | Negix -- Things not POSIX]] -- Archived blog articles from the (discontinued) Negix site. ===== Bits and Pieces ===== Unless otherwise noted, all my sources are released under [[http://creativecommons.org/publicdomain/zero/1.0/ | Creative Commons CC0]] (i.e., Public Domain for all practical purposes except in name, due to a braindead restriction in German copyright law). **[[software:SSTR()]]** A frequently-used C++ macro that faciliates generating a ''std::string'' from anything that supports ''operator<<( ostream &, ... )''. Including explanations as to why it has to be done this way and no other. **[[software:.vimrc]]** I want [[http://www.vim.org | my favourite editor]] to give me the same look & feel wherever I go. So I did put my configuration online for easier reference. **[[software:ShellLogfile]]** How to put a copy of your script output into a logfile. **Debugging Regular Expressions** StackOverflow user ephemient posted [[http://stackoverflow.com/a/2348725/60281 | this bit of Perl knowledge]]: perl -Mre=debug -e '"string_to_match"=~/regex/' **[[software:svnsyncgit | Two-way sync between SVN and Git]]** When migrating [[pdclib:start | PDCLib]] from Bitbucket / Mercurial to a local Subversion, I wanted to provide the advocats of Distributed VCS with a way to get the PDCLib sources "their way". There were multiple how-to's available online, but none of them really did work the way they were supposed to. [[https://ben.lobaugh.net/blog/147853/creating-a-two-way-sync-between-a-github-repository-and-subversion | Ben Lobaugh's article]] came really close, and was the most helpful. But in the end, I figured a write-up that is *not* missing one or two crucial steps would be nice, so I did one. **[[software:64bit | Visualizing 64 bit address space]]** We have seen claims of "that should be enough" proven false so often. We somehow knew that 16 bit of address space would run out some day. We're rapidly approaching the point where 32 bit will no longer be enough to store the number of seconds since epoch (1970-01-01). So it's natural when we are reluctant to believe that 64 bit will be "enough forever". This little thought experiment might help to understand the power of exponents... ===== Notes and Resources ===== **[[http://keyboards.jargon-file.org/altinter.zip | US International Alternate keyboard layout]]** For ergonomic reasons, I prefer US-layout keyboards. For //obvious// reasons (me being German and all), I need the German "Umlaute" on the keyboard, requiring the use of the "US International" layout. This in turn makes backtick, tilde, caret, apostrophe, and quotation marks into "dead" keys, which is a nuisance. Luckily, ​[[http://stackoverflow.com/a/381393/60281 | there is help]]: A US International keyboard layout, with the "dead keys" moved to the AltGr-layer. This way, you have them when you need them, but they don't get in the way in everyday typing. (Hint: "ä" is AltGr-q, "ü" is AltGr-y, "ö" is AltGr-p, and "ß" is AltGr-s.) The linked file is for Windows. Linux supports this setting natively, as "US International (AltGr dead keys)". X11 can be configured to use it via ''-xkblayout us -xkbvariant altgr-intl''. **[[Pointers]]** I prefer to keep my own C++ source as free of pointers as possible. But since I mostly work on //other// people's code, the choice is not always mine. And because the various pointer containers in the Boost and the Standard library kept confusing me, I decided to write up a reference page. **[[Strings]]** Another overview page I started and will probably never really finish. **[[Spirit]]** Some notes I took while working through the tutorials of [[http://www.boost.org/doc/libs/release/libs/spirit/doc/html/index.html | Boost.Spirit]]. **[[git]]** I finally got around to getting in touch with the version control software ''git''. (Not very impressed, I might add.) As usual I collect useful findings here. **[[Cygwin]]** A few notes on how to (properly) install Cygwin. **[[Linux Mint]]** A few notes on how to (properly) install Linux Mint. ===== Archaeology ===== Notes from a past when I still actually //used// the hardware involved. * [[LinuxJayBook9901 | Linux on a JayBook 9901]] * [[RaspberryNFS | Booting a Raspberry Pi using a NFS-mounted filesystem]] ===== Web Links ===== Some useful links I want to keep. * [[http://samizdat.mines.edu/howto/HowToBeAProgrammer.html | How to be a programmer]] * Object-Oriented Programming * [[http://msmvps.com/blogs/jon_skeet/archive/2006/03/04/inheritancetax.aspx | Jon Skeet: Inheritance tax]] * Development Tools * [[http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html | RMS's gdb Debugging Tutorial]] * [[http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/10945113#10945113 | Callgrind - avoiding slow application startup]] * C/C++ * [[https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md | C++ Code Guidelines]] * [[http://channel9.msdn.com/shows/Going+Deep/Stephan-T-Lavavej-Everything-you-ever-wanted-to-know-about-nullptr | Everything you ever wanted to know about nullptr]] * [[http://content.hccfl.edu/pollock/CPlus/IOStream.doc | I/O Streams in Standard C++]] * [[http://www.agner.org/optimize/calling_conventions.pdf | Calling conventions for different C++ compilers and operating systems]] * [[http://xaizek.github.io/2016-04-24/ncurses-for-cpp/ | C++ wrappers for ncurses]] * Unicode * [[http://utf8everywhere.org/ | UTF-8 Everywhere Manifesto]] * [[http://www.joelonsoftware.com/articles/Unicode.html | The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]] * [[http://www.ahinea.com/en/tech/perl-unicode-struggle.html | Unicode-processing issues in Perl and how to cope with it]] * [[http://www.cs.sfu.ca/~ggbaker/reference/characters/ | Commonly Confused Characters]] * [[http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries | Grapheme Cluster Boundaries]] * Linux * [[http://www.mikerubel.org/computers/rsync_snapshots/ | "''Easy'' Automated Snapshot-Style Backups with Linux and Rsync"]] * [[http://www.linusakesson.net/programming/tty/ | The TTY demystified]] * [[http://www.grymoire.com/Unix/Sed.html | Sed - An Introduction and Tutorial by Bruce Barnett]] * Strings * [[http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019352.html | Why GNU grep is fast / string searching algorithms]] * Vim * [[http://zzapper.co.uk/vimtips.html | Best of Vim Tips]] * [[http://www.cs.swarthmore.edu/help/vim/home.html | vim tips and tricks]] * [[http://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks | Vim and CTags tips and tricks]] * [[http://vim.wikia.com/wiki/Macros | Vim Macros]] * [[https://github.com/ludovicchabant/vim-gutentags | Gutentags plugin for Vim auto-completion]] * Windows * [[http://www.ext2fsd.com | ext2fsd - ext2 / ext3 file system driver for Windows]] * Unicode in C++ * [[http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3336.html | N3336 -- Adapting Standard Library Strings and I/O to a Unicode World]] * [[http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3572.html | N3572 -- Unicode Support in the Standard Library]] * Miscellaneous * [[https://www.owasp.org/index.php/Top_10_2013-Risk | OWASP -- Application Security Risk]] * [[http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf | underscore_style is easier to read than camelCaseStyle]] * [[https://stackoverflow.com/questions/16539436/unix-time-and-leap-seconds | Unix time and leap seconds]]