<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Marc André Tanner</title><link>https://www.brain-dump.org/</link><description>Recent content on Marc André Tanner</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 31 Dec 2018 00:00:00 +0000</lastBuildDate><atom:link href="https://www.brain-dump.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Vis: to serve(r) or not?</title><link>https://www.brain-dump.org/blog/vis-to-server-or-not/</link><pubDate>Sat, 21 Nov 2020 22:03:19 +0000</pubDate><guid>https://www.brain-dump.org/blog/vis-to-server-or-not/</guid><description>Since its inception vis drew inspiration from both Oberon (see chapter 5 The Text System), with respect to its core text management data structure, and the Plan 9 editors sam and acme with their structural regular expression based command language. Both environments provide editable user interfaces, combining window management, text editing and shell functionality.
In a more traditional (pseudo) terminal based Unix setting, editors are typically equipped with window management and a terminal buffer type to provide some form of integration.</description></item><item><title>Rethinking Vis' Text Management Data Structure</title><link>https://www.brain-dump.org/blog/rethinking-vis-text-management-data-structure/</link><pubDate>Sat, 14 Nov 2020 22:03:19 +0000</pubDate><guid>https://www.brain-dump.org/blog/rethinking-vis-text-management-data-structure/</guid><description>When initiating vis the goal was to build a simple, elegant and universal editor which copes with arbitrary files, including large, binary or single-line ones and features unlimited history for undo/redo support.
The underlying piece chain text management data structure was initially chosen because it is simple, independent of file size, reasonably performant (assuming few and localized changes) and not in widespread use.
It is basically a double linked list of modifications with a caching mechanism to merge contiguous changes.</description></item><item><title>Finding Undefined Behavior in C Code</title><link>https://www.brain-dump.org/blog/finding-undefined-behavior-in-c-code/</link><pubDate>Sat, 07 Nov 2020 21:45:27 +0000</pubDate><guid>https://www.brain-dump.org/blog/finding-undefined-behavior-in-c-code/</guid><description>Undefined behavior (UB) in C1 invalidates all program guarantees and can lead to serious security issues. It occurs in many forms, most frequently as:
Spatial memory issues: out of bound read/writes or even the creation of pointers to invalid memory Temporal memory issues: use after free, double free, use after return, uninitialized memory reads Signed integer overflow Strict alias violations Fortunately, there are both static (at compile time) and dynamic (at runtime) analysis approaches and tools available to combat these issues.</description></item><item><title>BBCode Reader for Pandoc</title><link>https://www.brain-dump.org/blog/bbcode-reader-for-pandoc/</link><pubDate>Sat, 01 Feb 2020 07:30:12 +0000</pubDate><guid>https://www.brain-dump.org/blog/bbcode-reader-for-pandoc/</guid><description>While migrating my ancient BBCode formatted blog posts to a more modern format, I managed to write some real world Haskell in the form of a Pandoc plugin.
Pandoc&amp;rsquo;s architecture is composed of readers translating input formats into an abstract syntax tree (AST) which is subsequently rendered into various output formats.
Because BBCode is rather under specified, I only implemented the subset I needed for my inputs. Notable omissions include the [table], [color] and [size] tags.</description></item><item><title>Talks</title><link>https://www.brain-dump.org/talks/</link><pubDate>Mon, 31 Dec 2018 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/talks/</guid><description>A selection of talks given at various events:
Bitpixie: A Software-only BitLocker Bypass
Bitpixie is a logic vulnerability in a Windows boot component which allows to recover the key material of BitLocker&amp;rsquo;s full disk encryption on a standard Windows 11 system.
Based on the original research of Rairii and publications of Thomas Lambertz from Neodyme, I reproduced the Linux-based exploitation strategy and developed a WinPE-based alternative for systems where Microsoft&amp;rsquo;s third-party Secure Boot certificate is not trusted.</description></item><item><title>Editor Support for Typed Lua</title><link>https://www.brain-dump.org/gsoc17/</link><pubDate>Tue, 29 Aug 2017 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/gsoc17/</guid><description>Lua is a powerful, efficient, lightweight and dynamically typed scripting language supporting a variety of different programming paradigms. Typed Lua extends Lua with an optional type system, allowing the use of both static and dynamic typing in the same code base, while preserving existing Lua run-time semantics. It achieves that by introducing optional type annotations and applying local type inference. This richer type system not only enforces stronger program behavior guarantees, but also facilitates the development of more powerful developer tools.</description></item><item><title>Vis a Highly Efficient Vim Like Text Editor</title><link>https://www.brain-dump.org/blog/vis-a-highly-efficient-vim-like-text-editor/</link><pubDate>Tue, 23 Sep 2014 16:35:34 +0000</pubDate><guid>https://www.brain-dump.org/blog/vis-a-highly-efficient-vim-like-text-editor/</guid><description>Inspired by the excellent Project Oberon I recently wrote a highly efficient, vim like text editor, called vis.
Its core features include:
Unicode aware binary clean handle arbitrary files (especially large ones) unlimited undo/redo support syntax highlighting regex search (and replace) multiple file/window support extensible and configurable through its source code (header file) Check out the README and the resulting discussion on the suckless mailing list.
Designing a text editor presents some interesting challenges and design decision.</description></item><item><title>Abduco + DVTM a Lightweight Alternative to Tmux and Screen</title><link>https://www.brain-dump.org/blog/abduco-dvtm-a-lightweight-alternative-to-tmux-and-screen/</link><pubDate>Sat, 05 Jul 2014 10:57:23 +0000</pubDate><guid>https://www.brain-dump.org/blog/abduco-dvtm-a-lightweight-alternative-to-tmux-and-screen/</guid><description>One of the most frequently requested features of dvtm, my tiling window manager for the console, has always been session support as provided by GNU screen and tmux. However these are two distinct features: window and session management shouldn&amp;rsquo;t be intermingled, that is why I have recently been developing abduco a tool for session {at,de}tach support. In combination with dvtm it strives to be a more lightweight alternative to tmux and screen.</description></item><item><title>Pong -- Status Update</title><link>https://www.brain-dump.org/blog/pong-status-update/</link><pubDate>Fri, 08 Oct 2010 18:51:15 +0000</pubDate><guid>https://www.brain-dump.org/blog/pong-status-update/</guid><description>Ok long time no post, the past few months were rather busy. In retrospect it turns out that it wouldn&amp;rsquo;t have been necessary to spend that much time studying. Anyway I passed my exams quite comfortably.
Now I&amp;rsquo;m back working at a MS centered company till November. By then I will have to go to military service for basic training. Superfluous to say that I&amp;rsquo;m rather skeptical and think it&amp;rsquo;s a pointless and wasteful exercise.</description></item><item><title>Boot Time Optimizations - Tslib Static Modules</title><link>https://www.brain-dump.org/blog/boot-time-optimizations-tslib-static-modules/</link><pubDate>Tue, 05 Jan 2010 10:24:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/boot-time-optimizations-tslib-static-modules/</guid><description>I am trying to speed up the boot process of my little initramfs.
It currently takes about 8.5 seconds from power to the graphical menu. I tested the different kernel compression methods with a patch from Albin Tonnerre which should hopefully end up in 2.6.33. My mesurements show that an LZO compressed kernel saves about 0.5-0.6 seconds.
In kernel land I need to read up on a few things like async/deferred initcalls.</description></item><item><title>Qi Bootmenu Progress</title><link>https://www.brain-dump.org/blog/qi-bootmenu-progress/</link><pubDate>Sat, 28 Nov 2009 18:02:26 +0000</pubDate><guid>https://www.brain-dump.org/blog/qi-bootmenu-progress/</guid><description>I now have a working initramfs generated by these build scripts that launches a bootmenu application which scans the available partitions and presents a list of bootable systems which can be loaded via kexec.
In the process I added uImage support to kexec which means it should work with the current distros out there like SHR which provide uImages for their kernels.
The kernel I am using is based on Lars om-gta02-2.</description></item><item><title>Status Update - Debug Board - 1024-Fix</title><link>https://www.brain-dump.org/blog/status-update-debug-board-1024-fix/</link><pubDate>Thu, 29 Oct 2009 12:36:40 +0000</pubDate><guid>https://www.brain-dump.org/blog/status-update-debug-board-1024-fix/</guid><description>Ok short status update for the qi-bootmenu thingy which I am playing around with (although I haven&amp;rsquo;t had much time recently).
I reduced the image size by disabling/removing the following components:
ecore-con uclibc&amp;rsquo;s locale data freetype: i disabled everything which didn&amp;rsquo;t seem that important The resulting image (without the kernel) compiled with -Os is about 4.5MB large. This could be reduced by some 500K if evas could be compiled with -Os but this caused my elementary test application to segfault.</description></item><item><title>Cross Arch Remote Debugging with GDB and gdbserver</title><link>https://www.brain-dump.org/blog/cross-arch-remote-debugging-with-gdb-and-gdbserver/</link><pubDate>Sun, 11 Oct 2009 23:31:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/cross-arch-remote-debugging-with-gdb-and-gdbserver/</guid><description>To further debug a problem in my little initramfs system I recently added gdbserver to the build scripts. And since I have never done that before I might as well document how this works.
gdbserver which runs on the target basically just provides the &amp;lsquo;debugging backend&amp;rsquo; and makes it available to a normal host gdb. This has the advantage that gdbserver is relatively easy to build for your embedded system of choice, it doesn&amp;rsquo;t provide a user interface and therefore doesn&amp;rsquo;t require readline/curses libraries.</description></item><item><title>Font Configuration for Elementary with Famebuffer Backend</title><link>https://www.brain-dump.org/blog/font-configuration-for-elementary-with-famebuffer-backend/</link><pubDate>Thu, 08 Oct 2009 22:04:42 +0000</pubDate><guid>https://www.brain-dump.org/blog/font-configuration-for-elementary-with-famebuffer-backend/</guid><description>I found out what the problem with the elementary hello world application was. The fonts were missing. So how does font configuration work? To answer this the XFree86 Font De-uglification HOWTO&amp;rsquo;s TrueType Fonts section is useful. You basically have to copy your fonts into a directory and then run:
ttmkfdir mkfontdir This generates a fonts.scale file (which you can ignore because evas doesn&amp;rsquo;t care about it) and a fonts.dir file which is read by evas.</description></item><item><title>Still Just a White Screen</title><link>https://www.brain-dump.org/blog/still-just-a-white-screen/</link><pubDate>Mon, 05 Oct 2009 23:49:50 +0000</pubDate><guid>https://www.brain-dump.org/blog/still-just-a-white-screen/</guid><description>As I mentioned in the last blog post recent svn versions of edje require Lua. The Lua build by default just creates a static liblua.a I wondered what the reason for this is. And it is once again libtool related. It seems like people who actually have kind of taste don&amp;rsquo;t want to use libtool. I am not yet sure whether building a shared variant is useful at all in my particular case because currently the only user is edje (for now I don&amp;rsquo;t install the Lua interpreter).</description></item><item><title>More Automake and Libtool Mystery</title><link>https://www.brain-dump.org/blog/more-automake-and-libtool-mystery/</link><pubDate>Thu, 01 Oct 2009 11:02:58 +0000</pubDate><guid>https://www.brain-dump.org/blog/more-automake-and-libtool-mystery/</guid><description>Initially I based my boot menu system around the EFL Snapshots from Juli 29th. The idea was to start with some known to work state instead of a randomly picked svn revision. Once I had everything compiled I wanted to run the elementary hello world application. Unfortunately all I got was a completely white screen. But hey it didn&amp;rsquo;t segfault which is progress.
I then decided to update to a more recent svn revision to see whether it was an upstream error which got fixed in the meantime or if it was an error on my side.</description></item><item><title>Cross Compiling Revival</title><link>https://www.brain-dump.org/blog/cross-compiling-revival/</link><pubDate>Mon, 28 Sep 2009 19:33:35 +0000</pubDate><guid>https://www.brain-dump.org/blog/cross-compiling-revival/</guid><description>While the idea of avoiding cross compilation is certainly desirable it&amp;rsquo;s currently not really feasible performance wise for my poor little macbook. I therefore adjusted my scripts to support cross compilation. That means additional pain but once it works it should be relatively fast.
libtool madness Of course I ran into some common cross compiling pitfalls where some part of the build tries to pull in various bits from the host system.</description></item><item><title>OpenExpo 2009 Winterthur</title><link>https://www.brain-dump.org/blog/openexpo-2009-winterthur/</link><pubDate>Thu, 24 Sep 2009 10:18:27 +0000</pubDate><guid>https://www.brain-dump.org/blog/openexpo-2009-winterthur/</guid><description>Although the feedback from the openmoko-community was non-existent I nevertheless decided to make a trip to Winterthur and attend the OpenExpo Social Event. To raise awareness and do some advertisement I was wearing my OpenMoko T-shirt. Unfortunately the reactions I got were rather negative the most common question I had to answer was probably &amp;ldquo;Is it dead yet?&amp;rdquo; or &amp;ldquo;when will it die?&amp;quot;. My answer was of course that it&amp;rsquo;s alive and doing well.</description></item><item><title>On the Way Towards a Minimal Elementary Based Boot System</title><link>https://www.brain-dump.org/blog/on-the-way-towards-a-minimal-elementary-based-boot-system/</link><pubDate>Wed, 23 Sep 2009 00:48:28 +0000</pubDate><guid>https://www.brain-dump.org/blog/on-the-way-towards-a-minimal-elementary-based-boot-system/</guid><description>Now that I have a working toolchain I also built a full system image for qemu which contains a native toolchain. This avoids the broken by design approach of cross compiling (configure and friends analyze the host system and then based on these wrong assumption draw conclusions about the target system) by using emulation. Of course this also has a price: slower build times.
FWL has a neat trick though which at least in theory should speed up compilation: it uses distcc to call out to the host system (over the virtual network of qemu) where the distccd instance compiles the passed source code with the cross compiler.</description></item><item><title>Creating an uClibc armv4tl-softfloat-eabi Toolchain</title><link>https://www.brain-dump.org/blog/creating-an-uclibc-armv4tl-softfloat-eabi-toolchain/</link><pubDate>Fri, 18 Sep 2009 11:07:25 +0000</pubDate><guid>https://www.brain-dump.org/blog/creating-an-uclibc-armv4tl-softfloat-eabi-toolchain/</guid><description>Spent the last couple of days trying to build an uclibc toolchain for the Freerunner. This turned out to be quite a pain in the ass!
The easiest way would probably have been to just use the OpenWRT build system but I think for my specialized needs this is a bit overkill. After all my current goal is to build a small user space based boot menu and not a full blown distribution.</description></item><item><title>Kernel Diet -- Filtering Printk Messages Based on Verbosity Level</title><link>https://www.brain-dump.org/blog/kernel-diet-filtering-printk-messages-based-on-verbosity-level/</link><pubDate>Wed, 09 Sep 2009 12:36:22 +0000</pubDate><guid>https://www.brain-dump.org/blog/kernel-diet-filtering-printk-messages-based-on-verbosity-level/</guid><description>As part of my upcoming boot menu/distro for Openmoko&amp;rsquo;s Freerunner I searched for relatively simple and generic applicable ways to reduce the Linux Kernel binary size. An obvious candidate for size reduction are the possibly unnecessary kernel printk messages.
I therefore wrote a little patch series which introduces a new configuration option (CONFIG_PRINTK_VERBOSITY) to selectively compile out printk message strings based on a verbosity level. The implementation works by wrapping printk with a macro which evaluates to a constant if condition which the compiler will be able to optimize out.</description></item><item><title>New dvtm and dwm-win32 Releases - Future Openmoko Related Activities</title><link>https://www.brain-dump.org/blog/new-dvtm-and-dwm-win32-releases-future-openmoko-related-activities/</link><pubDate>Fri, 10 Jul 2009 12:15:59 +0000</pubDate><guid>https://www.brain-dump.org/blog/new-dvtm-and-dwm-win32-releases-future-openmoko-related-activities/</guid><description>Long time no blog post, sorry about that but I was again rather busy. Quite a lot actually happened in the meantime. I passed my BMS exams and will now try to successfully take the Passerelle which would allow me to study at an university. Because of this I left my current employer and will focus on school. Most of the preparation for this supplementary exam is actually done in a self-studying manner which means it requires quite a bit of discipline.</description></item><item><title>Update and Future Plans</title><link>https://www.brain-dump.org/blog/update-and-future-plans/</link><pubDate>Fri, 06 Mar 2009 10:56:47 +0000</pubDate><guid>https://www.brain-dump.org/blog/update-and-future-plans/</guid><description>The last few months have been rather busy because of various school and work related reasons. Therefore my free time coding sessions were rather short during this time frame. I hope this will improve in the summer holidays when I leave my current employer.
I would like to play around with Rasters new GUI Library for embedded devices called Elementary and finally get around to program something useful for my Freerunner.</description></item><item><title>Getting the Freedom Universal Keyboard2 to Work Under Linux</title><link>https://www.brain-dump.org/blog/getting-the-freedom-universal-keyboard2-to-work-under-linux/</link><pubDate>Sat, 25 Oct 2008 15:40:29 +0000</pubDate><guid>https://www.brain-dump.org/blog/getting-the-freedom-universal-keyboard2-to-work-under-linux/</guid><description>I recently bought a Freedom Universal Keyboard2 for use with my Freerunner. When it finally arrived I found out that it doesn&amp;rsquo;t work by default under Linux although the openmoko wiki stated otherwise. Anyway I started googling around and found a mailing list post on bluez-user which suggested to disable the whole MTU handling. With this information I started looking around in the bluez-utils source and finally came up with a patch for hidd:</description></item><item><title>Pong -- Yes I Am Still Alive</title><link>https://www.brain-dump.org/blog/pong-yes-i-am-still-alive/</link><pubDate>Fri, 24 Oct 2008 21:04:57 +0000</pubDate><guid>https://www.brain-dump.org/blog/pong-yes-i-am-still-alive/</guid><description>Wow, almost five months passed without a blog entry. But don&amp;rsquo;t worry I am still alive, although life currently sucks big time!
Problem is that I currently don&amp;rsquo;t have enough time to do fun stuff, because of school related things and work where I waste my time on boring things like online shops. For me it&amp;rsquo;s still unclear why exactly the company I work for ended up doing web development based on the .</description></item><item><title>Source Code Formatting, License Flamewars and Build System Issues</title><link>https://www.brain-dump.org/blog/source-code-formatting-license-flamewars-and-build-system-issues/</link><pubDate>Tue, 20 May 2008 18:05:59 +0000</pubDate><guid>https://www.brain-dump.org/blog/source-code-formatting-license-flamewars-and-build-system-issues/</guid><description>Tabs vs. Spaces One of those never ending issues with source code formatting is the use of tabs vs. spaces. People seem to blindly argue for one or the other while not realizing that the best solution is to combine them in a smart way. That is, use tabs for indention and spaces for further alignment:
---&amp;gt;if (some_variable) { ---&amp;gt;---&amp;gt;long_function_name(first_argument, ---&amp;gt;---&amp;gt;...................second_argument); ---&amp;gt;} This way everyone can set the tab width to their personal preference and the code will still look decent.</description></item><item><title>CIOPFS - Case Insensitive on Purpose File System</title><link>https://www.brain-dump.org/blog/ciopfs-case-insensitive-on-purpose-file-system/</link><pubDate>Thu, 01 May 2008 23:42:08 +0000</pubDate><guid>https://www.brain-dump.org/blog/ciopfs-case-insensitive-on-purpose-file-system/</guid><description>Some time ago I saw Wine&amp;rsquo;s Google Summer of Code ideas as I know nearly nothing about the Windows pre .NET core APIs and have zero interest in learning them, most projects weren&amp;rsquo;t of interest to me. However, one idea about a case insensitive filesystem seamed like it would be fun to hack on.
The problem that wine has is that the file system on Windows is case insensitive while most POSIX file systems are case sensitive.</description></item><item><title>SkiFree on Wine</title><link>https://www.brain-dump.org/blog/skifree-on-wine/</link><pubDate>Fri, 18 Apr 2008 16:46:33 +0000</pubDate><guid>https://www.brain-dump.org/blog/skifree-on-wine/</guid><description>Today i stumbled by accident over SkiFree a game which i played ocasionally as a child during my early PC days.
I tried to run it via wine and it worked as advertised on the homepage. Nostalgic times come up&amp;hellip;
Marc</description></item><item><title>OpenExpo 2008 in Bern</title><link>https://www.brain-dump.org/blog/openexpo-2008-in-bern/</link><pubDate>Mon, 17 Mar 2008 00:30:16 +0000</pubDate><guid>https://www.brain-dump.org/blog/openexpo-2008-in-bern/</guid><description>So I finally found some time to blog about the OpenExpo which I visited last Thursday. To make it short, it was great fun. Highlights were the talk of Alan Cox about practices and processes within the Linux community, while there wasn&amp;rsquo;t really anything new for myself it was nonetheless fun to be there.
OpenMoko Another interesting presentation was given by Michael Lauer about the current state of OpenMoko. He promised that the Freerunner will be available real soon now(tm) which probably means in 2-3 months.</description></item><item><title>Some Random Thoughts</title><link>https://www.brain-dump.org/blog/some-random-thoughts/</link><pubDate>Fri, 01 Feb 2008 18:49:18 +0000</pubDate><guid>https://www.brain-dump.org/blog/some-random-thoughts/</guid><description>This week I have started an university preparation school, will see how this works out. But since I am working part time to earn a few bucks I will probably have less time to waste with fun things. Oh well.
I have done some improvements to dvtm which will lead to a 0.4 release pretty soon I hope.
Stumbled over these two window managers for Windows (no I don&amp;rsquo;t use it voluntarily - I have to at work) too bad there is no dwm windows port.</description></item><item><title>Integrating UTF-8 Support in librote for Use by dvtm</title><link>https://www.brain-dump.org/blog/integrating-utf-8-support-in-librote-for-use-by-dvtm/</link><pubDate>Fri, 21 Dec 2007 21:13:56 +0000</pubDate><guid>https://www.brain-dump.org/blog/integrating-utf-8-support-in-librote-for-use-by-dvtm/</guid><description>During the last week I integrated wide character support into librote. This fixed mutt&amp;rsquo;s threading view when run within dvtm. Did a 0.1 release.
For the next release I plan to integrate the ability to minimize windows.
So stay tuned.
Marc</description></item><item><title>DVTM - Dynamic Virtual Terminal Manager Released</title><link>https://www.brain-dump.org/blog/dvtm-dynamic-virtual-terminal-manager-released/</link><pubDate>Sun, 09 Dec 2007 23:17:39 +0000</pubDate><guid>https://www.brain-dump.org/blog/dvtm-dynamic-virtual-terminal-manager-released/</guid><description>So this weekend I released a first version of dvtm a dynamic tiling window manager for the console.
Hope it will be useful for a few people out there.
Marc</description></item><item><title>Starting Java Programs as Windows Services</title><link>https://www.brain-dump.org/blog/starting-java-programs-as-windows-services/</link><pubDate>Mon, 12 Nov 2007 10:53:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/starting-java-programs-as-windows-services/</guid><description>Last week at work we needed to run a Java server application in background as a windows service. Turns out that the Java Service Wrapper works pretty well, it takes care of launching the JVM with the appropriate options in the context of a windows service.
Marc</description></item><item><title>Free Software for Windows</title><link>https://www.brain-dump.org/blog/free-software-for-windows/</link><pubDate>Thu, 08 Nov 2007 15:21:21 +0000</pubDate><guid>https://www.brain-dump.org/blog/free-software-for-windows/</guid><description>Today I stumbled over a lightweight, free software PDF reader for Windows Sumatra PDF. At the moment it lacks a few basic things like a search facility but it looks promising. I hope that in a few months it can be used in daily work as a replacement for the proprietary and bloated Adobe PDF Reader.
This led me to think what other open source application i more or less regularly use on Windows (i.</description></item><item><title>Using Debtags to Get All Debian Packages Which Are Implemented in C</title><link>https://www.brain-dump.org/blog/using-debtags-to-get-all-debian-packages-which-are-implemented-in-c/</link><pubDate>Wed, 07 Nov 2007 23:44:45 +0000</pubDate><guid>https://www.brain-dump.org/blog/using-debtags-to-get-all-debian-packages-which-are-implemented-in-c/</guid><description>Ok for some time I thought about creating a real world test and regression suite for tinycc. It would be nice if I could use the existing Debian infrastructure for this purpose. For obvious reasons I am only interested in packages which are implemented in C, so I searched for a way to filter them out. It seems like debtag could do the trick, the following command returns 1160 packages on an etch system.</description></item><item><title>Documenting Kernel Configuration Files and Using the Miniconfig Format</title><link>https://www.brain-dump.org/blog/documenting-kernel-configuration-files-and-using-the-miniconfig-format/</link><pubDate>Sat, 03 Nov 2007 22:34:46 +0000</pubDate><guid>https://www.brain-dump.org/blog/documenting-kernel-configuration-files-and-using-the-miniconfig-format/</guid><description>I was recently compiling a customized 2.6.23 kernel, to get a better overview what I really selected I used the miniconfig format. It only contains the config options which a user would have to select from within menuconfig if he started from an allnoconfig setup.
Rob Landley has written miniconfig.sh, a script which takes a normal kernel config file and removes all redundant symbols which are indirectly selected. This has the advantage that the resulting config file is bloat free and gives a good overview of the selected features.</description></item><item><title>Printing All the Pre Defined GCC Macros</title><link>https://www.brain-dump.org/blog/printing-all-the-pre-defined-gcc-macros/</link><pubDate>Fri, 26 Oct 2007 22:50:43 +0000</pubDate><guid>https://www.brain-dump.org/blog/printing-all-the-pre-defined-gcc-macros/</guid><description>Another thing which is quite useful when dealing with preprocessor issues is a list of all compiler defined macros. So here you go.
gcc -dM -E - &amp;lt; /dev/null Marc</description></item><item><title>Preserving Preprocessor Symbols for Debugging Purposes</title><link>https://www.brain-dump.org/blog/preserving-preprocessor-symbols-for-debugging-purposes/</link><pubDate>Mon, 22 Oct 2007 12:12:14 +0000</pubDate><guid>https://www.brain-dump.org/blog/preserving-preprocessor-symbols-for-debugging-purposes/</guid><description>I have spent half of the weekend debugging a bug in tcc without much progress so far. Anyway one thing which is quite useful while debugging an application which uses a lot of preprocessor symbols (i.e. #defines) is to make them available to gdb. The following options tell gcc to embed the required debugging information in the executable.
gcc -gdwarf-2 -g3 [other options as needed] Marc</description></item><item><title>Recovering Deleted Files with lsof</title><link>https://www.brain-dump.org/blog/recovering-deleted-files-with-lsof/</link><pubDate>Tue, 09 Oct 2007 22:04:06 +0000</pubDate><guid>https://www.brain-dump.org/blog/recovering-deleted-files-with-lsof/</guid><description>Today I accidentally deleted a PDF file, fortunately the PDF reader was still open and had a reference to the file so I could copy it back from:
/proc/&amp;lt;pid-of-pdf-reader&amp;gt;/fd/&amp;lt;num-as-shown-by-lsof&amp;gt; There is an article on linux.com which explains the procedure if your unfamiliar with it.
Marc</description></item><item><title>PCC Another C Compiler</title><link>https://www.brain-dump.org/blog/pcc-another-c-compiler/</link><pubDate>Fri, 05 Oct 2007 23:14:01 +0000</pubDate><guid>https://www.brain-dump.org/blog/pcc-another-c-compiler/</guid><description>Ok today somebody pissed of Rob with the effect that he stopped maintaining his tcc fork which sucks. It seems that he will try to get pcc, a thirty year old C compiler recently resurrected by the OpenBSD people, to compile Linux. I haven&amp;rsquo;t used pcc yet but from reading it&amp;rsquo;s project page it seems that it won&amp;rsquo;t be as fast as tcc. After all pcc is a two-pass compiler which allows more optimizations but is slower, whereas tcc is a one-pass compiler.</description></item><item><title>Tiny Browsers for Embedded Systems</title><link>https://www.brain-dump.org/blog/tiny-browsers-for-embedded-systems/</link><pubDate>Fri, 05 Oct 2007 22:48:20 +0000</pubDate><guid>https://www.brain-dump.org/blog/tiny-browsers-for-embedded-systems/</guid><description>Ok I am starting to look around for suitable applications for my embedded like desktop distribution. Ideally I would like a xhtml/css/javascript compliant browser which is still lightweight.
The well known text browser like lynx, w3m, elinks, links or links2 (known for it&amp;rsquo;s graphic -g mode) are not really what I want.
So I checked the current status of dillo and noticed that the long awaited release of the FLTK2 port finally happened.</description></item><item><title>Package Management Systems for Space Constraint Environments</title><link>https://www.brain-dump.org/blog/package-management-systems-for-space-constraint-environments/</link><pubDate>Mon, 01 Oct 2007 19:39:10 +0000</pubDate><guid>https://www.brain-dump.org/blog/package-management-systems-for-space-constraint-environments/</guid><description>So I am actually playing with the idea of building a tiny embedded like distribution with my most used apps for daily desktop use.
My goal is to use as less space as possible and therefore I was looking for a suitable package management system. Dpkg and APT are too bloated for my sense, use separate meta data and on top of that apt is written in c++ which means it will require libstdc++ (it may be possible to compile it against uclibc++ don&amp;rsquo;t know).</description></item><item><title>Programm Execution Tracing with GDB</title><link>https://www.brain-dump.org/blog/programm-execution-tracing-with-gdb/</link><pubDate>Thu, 27 Sep 2007 13:03:13 +0000</pubDate><guid>https://www.brain-dump.org/blog/programm-execution-tracing-with-gdb/</guid><description>Ok found another problem in tinycc, the __attribute__ handling code gets confused by parentheses, sent a fix to tinycc-devel.
The next issue I faced is a bit more complex, there seams to be a bug with nested struct/union initialization.
While debugging this I looked for a way to get an exact trace of the lines which are executed. So I ended up writing this little shell script, which makes gdb looping over every program step by sending the appropriate command to its stdin.</description></item><item><title>Hacking TinyCC</title><link>https://www.brain-dump.org/blog/hacking-tinycc/</link><pubDate>Mon, 24 Sep 2007 21:23:00 +0000</pubDate><guid>https://www.brain-dump.org/blog/hacking-tinycc/</guid><description>The last few days I played a bit with tinycc an extremely small and fast C compiler.
I submitted a patch which enables tcc to handle the restrict keyword within an array context. This allowed me to build dwm with tcc. While trying to compile st I found a bug in the preprocessor, so I submitted another patch.
Unfortunately my C knowledge is rather limited and the tinycc source is not that easy to understand (at least for me) otherwise I could fix more serious bugs.</description></item><item><title>Linux Tiny Project Revival</title><link>https://www.brain-dump.org/blog/linux-tiny-project-revival/</link><pubDate>Thu, 20 Sep 2007 23:02:34 +0000</pubDate><guid>https://www.brain-dump.org/blog/linux-tiny-project-revival/</guid><description>While reading through the Linux Kernel Mailing List Archive I found this Linux Tiny Project revival announcement. I find it great that they try to make the Linux kernel as small as possible and want to integrate all the changes into mainline.
Personally I would be interested in a bloat free mini Linux distribution which focus on size. This should be based on busybox and uclibc with kdrive as xserver and dwm as windowmanager plus a few other console based applications.</description></item><item><title>Code Signing in Visual Studio .NET</title><link>https://www.brain-dump.org/blog/code-signing-in-visual-studio-.net/</link><pubDate>Thu, 20 Sep 2007 22:45:51 +0000</pubDate><guid>https://www.brain-dump.org/blog/code-signing-in-visual-studio-.net/</guid><description>Okay today I had to sign a .NET assembly within Visual Studio. First problem was that I became only a pvk and a spc key files but Visual Studio want&amp;rsquo;s a pfx. So I converted the files with pvk2pfx and tried it, but this failed with the message &amp;ldquo;Cannot find the certificate and private key for decryption&amp;rdquo;.
A google search turned up the solution you have to import the key into the cert store and then export it as described in the above link.</description></item><item><title>Error Handling in VBA</title><link>https://www.brain-dump.org/blog/error-handling-in-vba/</link><pubDate>Thu, 20 Sep 2007 14:52:43 +0000</pubDate><guid>https://www.brain-dump.org/blog/error-handling-in-vba/</guid><description>Ok at work I have to deal with some ugly VBA code, and well as you probably can imagine this is not exactly fun. One thing which I find hilarious about VBA is it&amp;rsquo;s approach to error handling which allows people to just ignore everything. So you end up with code like
On Error Resume Next [Lot of junk] Today I stumbled over the following construct:
On Error GoTo 0 What the hell is 0 in this context?</description></item><item><title>Wascana a C++ IDE for Windows</title><link>https://www.brain-dump.org/blog/wascana-a-c-ide-for-windows/</link><pubDate>Wed, 19 Sep 2007 21:05:26 +0000</pubDate><guid>https://www.brain-dump.org/blog/wascana-a-c-ide-for-windows/</guid><description>Today i stumbled across Wascana a Eclipse based C++ IDE for Windows which seems handy when you need a complete development environment with most of the needed tools like MinGW and Cygwin plus a few common libraries and don&amp;rsquo;t want to install each component on it&amp;rsquo;s own.
Added to my bookmarks.
Marc</description></item><item><title>OpenMoko Shop in Switzerland and Europe</title><link>https://www.brain-dump.org/blog/openmoko-shop-in-switzerland-and-europe/</link><pubDate>Mon, 17 Sep 2007 22:48:34 +0000</pubDate><guid>https://www.brain-dump.org/blog/openmoko-shop-in-switzerland-and-europe/</guid><description>I need a new mobile phone and I am currently thinking about buying an OpenMoko. So I searched for the easiest and cheapest way to get one and found this European OpenMoko Shop which operates from Switzerland which is even better because I am myself a Swiss guy.
So if you plan to purchase an OpenMoko Phone from Europe this may be the way to go.
Marc</description></item><item><title>C# and .Net Performance Considerations</title><link>https://www.brain-dump.org/blog/c-sharp-and-.net-performance-considerations/</link><pubDate>Fri, 14 Sep 2007 21:02:42 +0000</pubDate><guid>https://www.brain-dump.org/blog/c-sharp-and-.net-performance-considerations/</guid><description>At work I am currently busy implementing a so called &amp;ldquo;WebService&amp;rdquo; (in my case a XML file is send via HTTP POST method to me and I have to return an accurate response).
During this and out of general interest I searched for C# and performance related best practices. A quick google search turned up the following chapter Improving Managed Code Performance of a Microsoft publication which might be quite interesting.</description></item><item><title>Converting a Hg Repository to Git</title><link>https://www.brain-dump.org/blog/converting-a-hg-repository-to-git/</link><pubDate>Sat, 08 Sep 2007 18:02:10 +0000</pubDate><guid>https://www.brain-dump.org/blog/converting-a-hg-repository-to-git/</guid><description>Okay it seems that lately I am spending quite a bit of time with various tasks in different source control management systems.
Today I decided to switch my little qemu-gui project from hg to git. The only reason is that I can use the public git hosting offerings of repo.co.cz. First, I tried to convert the repository with tailor. However, for some reason I couldn&amp;rsquo;t make it work within 5-10 minutes.</description></item><item><title>Moving a Subversion Repository from one Server to Another</title><link>https://www.brain-dump.org/blog/moving-a-subversion-repository-from-one-server-to-another/</link><pubDate>Wed, 05 Sep 2007 21:17:52 +0000</pubDate><guid>https://www.brain-dump.org/blog/moving-a-subversion-repository-from-one-server-to-another/</guid><description>Today at work i had to move a SVN repository from my local virtual server to another company wide accessible one. The following worked quite well.
svnadmin dump /path/to/repository &amp;gt; repository.dump Then optionally compress the resulting dump and transfer it to the other machine via preferably with scp. On the remote machine do the following:
cd /path/to/new-repository svnadmin create repository-name svnadmin load repository-name &amp;lt; repository.dump By the way, you probably ask why we don&amp;rsquo;t use a modern distributed version control system.</description></item><item><title>Pixy a XSS and SQL-Injection Scanner for PHP</title><link>https://www.brain-dump.org/blog/pixy-a-xss-and-sql-injection-scanner-for-php/</link><pubDate>Thu, 28 Jun 2007 14:46:12 +0000</pubDate><guid>https://www.brain-dump.org/blog/pixy-a-xss-and-sql-injection-scanner-for-php/</guid><description>LWN mentioned Pixy a XSS and SQL-Injection Scanner for PHP which looks quite interesting.
From a quick overview over the project page, it seems that it uses data flow analysis to mark potential insecure sections where external variables are used without care and prior data validation.
Didn&amp;rsquo;t really test it though and therefore don&amp;rsquo;t know about false positives and so on. But it is certainly worth a closer look, unfortunately I currently don&amp;rsquo;t have time but who knows maybe someday when PHP5 is supported it will become handy.</description></item><item><title>Creating a new GPG-Key</title><link>https://www.brain-dump.org/blog/creating-a-new-gpg-key/</link><pubDate>Wed, 27 Jun 2007 10:51:14 +0000</pubDate><guid>https://www.brain-dump.org/blog/creating-a-new-gpg-key/</guid><description>Today I created a new GPG key pair, here is a short description of this procedure, just in case I have to do it again.
Run
gpg --gen-key and answer the questions should be fairly straight forward. At the end your key-id which uniquely identifies your key will be printed. Use it to create a revocation certificate, just in case your private key will be compromised.
gpg --output [email].revoke.asc --gen-revoke [key-id] Then export your public key which you can distribute to your friends.</description></item><item><title>VBA Hurts - A Lot</title><link>https://www.brain-dump.org/blog/vba-hurts-a-lot/</link><pubDate>Mon, 18 Jun 2007 15:28:34 +0000</pubDate><guid>https://www.brain-dump.org/blog/vba-hurts-a-lot/</guid><description>Today I had to make some changes to an in house macro and it just reminded me of the fact that VBA causes brain damage. I really dislike this language and try to avoid it as much as I can. An example of it&amp;rsquo;s stupidity is the fact that it uses the same operator for both assignment and comparison. Then the VBA standard library is just too poor, there doesn&amp;rsquo;t seem to be a method to remove all objects from a given collection which results in self made solution like the following.</description></item><item><title>Disabling the Macbook Startup Sound</title><link>https://www.brain-dump.org/blog/disabling-the-macbook-startup-sound/</link><pubDate>Sat, 09 Jun 2007 11:13:25 +0000</pubDate><guid>https://www.brain-dump.org/blog/disabling-the-macbook-startup-sound/</guid><description>When you start a macbook you hear a kind of control sound (beep) which means the hardware check was ok. This sound is pretty annoying even more when you start your laptop in a public room and suddenly everybody is looking at you.
After some research I found out that Psst (a Mac application) allows you to disable this startup sound. So happy booting, without disturbing everybody around you.
Marc</description></item><item><title>Installing Debian Etch on a MacBook Core Duo 2</title><link>https://www.brain-dump.org/blog/installing-debian-etch-on-a-macbook-core-duo-2/</link><pubDate>Mon, 30 Apr 2007 21:16:18 +0000</pubDate><guid>https://www.brain-dump.org/blog/installing-debian-etch-on-a-macbook-core-duo-2/</guid><description>I recently bought a new Macbook, well one of the first things I did was installing Debian. The instructions in the corresponding Debian Wiki Page work pretty well, except I didn&amp;rsquo;t want to install lilo because it is just too annoying and error prone to run /sbin/lilo every time I changed something in the boot loader configuration. It turns out that the grub shipped with edge is capable to boot a macbook.</description></item><item><title>Locating the Executing Assembly on the .Net Compact Framework</title><link>https://www.brain-dump.org/blog/locating-the-executing-assembly-on-the-.net-compact-framework/</link><pubDate>Thu, 12 Apr 2007 15:09:50 +0000</pubDate><guid>https://www.brain-dump.org/blog/locating-the-executing-assembly-on-the-.net-compact-framework/</guid><description>Had some time today to familiarize myself with the .NET Compact Framework. Took me some time to find out how to get the location of the program on the device. Here is what I came up with after some research.
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) Marc</description></item><item><title>Deleting All Default Wiki Pages in Trac</title><link>https://www.brain-dump.org/blog/deleting-all-default-wiki-pages-in-trac/</link><pubDate>Tue, 03 Apr 2007 20:00:23 +0000</pubDate><guid>https://www.brain-dump.org/blog/deleting-all-default-wiki-pages-in-trac/</guid><description>I am currently evaluating Trac as a web management tool for a school project. By default Trac comes with lots of standard wiki content, mostly help instructions, which I don&amp;rsquo;t need. So here is a simple script which saves the current wiki content and then deletes all pages.
cd /path/to/your/trac/project mkdir wiki-exported &amp;amp;&amp;amp; trac-admin . wiki dump wiki-exported for page in $(trac-admin . wiki list | awk '{ if($1 ~ /^(Trac|Wiki).</description></item><item><title>Comparison Between Java and C#</title><link>https://www.brain-dump.org/blog/comparison-between-java-and-c-sharp/</link><pubDate>Wed, 28 Mar 2007 11:16:53 +0000</pubDate><guid>https://www.brain-dump.org/blog/comparison-between-java-and-c-sharp/</guid><description>As I am still trying to get familiar with C# I found the following comparison between Java and C# quite useful.</description></item><item><title>MSDN Sucks - Use the API Documentation in CHM Format</title><link>https://www.brain-dump.org/blog/msdn-sucks-use-the-api-documentation-in-chm-format/</link><pubDate>Tue, 27 Mar 2007 17:19:04 +0000</pubDate><guid>https://www.brain-dump.org/blog/msdn-sucks-use-the-api-documentation-in-chm-format/</guid><description>In my day job I am currently developing a C#/.NET Compact Framework application and one of my first experience is that the MSDN documentation &amp;ndash; well pretty sucks &amp;ndash; it&amp;rsquo;s just way too slow. Fortunately the API Documentation is also available in CHM format.
Marc</description></item><item><title>Isolate a Buggy Commit with Git Bisect</title><link>https://www.brain-dump.org/blog/isolate-a-buggy-commit-with-git-bisect/</link><pubDate>Sun, 25 Mar 2007 13:34:26 +0000</pubDate><guid>https://www.brain-dump.org/blog/isolate-a-buggy-commit-with-git-bisect/</guid><description>A few weeks a go I made a blog post about my success in running Age of Empires II with Wine. Unfortunately the upgrade from wine-0.9.31 to 0.9.32 broke it again. The game doesn&amp;rsquo;t even start anymore and just displays the following message:
Could not initialize graphics system. Make sure your video card and driver are compatible with directdraw. See the AppDB Comments for further discussions.
So I decided to try to isolate the commit which is responsible for the breakage.</description></item><item><title>Sql Fun: Order before Group with a Sub Query</title><link>https://www.brain-dump.org/blog/sql-fun-order-before-group-with-a-sub-query/</link><pubDate>Mon, 19 Feb 2007 17:49:37 +0000</pubDate><guid>https://www.brain-dump.org/blog/sql-fun-order-before-group-with-a-sub-query/</guid><description>I have came across a problem within a SQL statement. Say we have 2 tables which are in a 1:n relationship. So we want to join them together normally the SQL engine will just use the first match based on the auto increment key within the table. This isn&amp;rsquo;t what I needed so I searched a way to actually sort the data before the grouping happened. The solution seems to be a sub query which isn&amp;rsquo;t ideal performance wise but worked for my use case.</description></item><item><title>UUIDs for Partitions in Ubuntu Edgy Eft 6.10</title><link>https://www.brain-dump.org/blog/uuids-for-partitions-in-ubuntu-edgy-eft-6.10/</link><pubDate>Wed, 14 Feb 2007 17:04:15 +0000</pubDate><guid>https://www.brain-dump.org/blog/uuids-for-partitions-in-ubuntu-edgy-eft-6.10/</guid><description>I recently updated a Ubuntu Dapper Drake (6.06) system to Edgy Eft (6.10). Other than I had to reinstall/reconfigure my xserver everything went ok. However, by the next reboot I noticed a strange root=[long alphanumeric value] kernel parameter in my grub prompt. After some investigation I found out that my /etc/fstab contained the same strange ids.
# /etc/fstab: static file system information. # # &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt; &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt; proc /proc proc defaults 0 0 # /dev/hdc5 -- converted during upgrade to edgy UUID=048b4608-5241-4dc4-8671-f8290cb55af5 / ext3 defaults,errors=remount-ro 0 1 # /dev/hdc1 -- converted during upgrade to edgy UUID=05c63290-f5b8-4afb-97c1-fb7e15ad6ed8 /boot ext2 defaults 0 2 # /dev/hdc10 -- converted during upgrade to edgy UUID=06ee7e3e-768b-4a51-a31f-0e70ec314e81 /data ext3 defaults 0 2 # /dev/hdc7 -- converted during upgrade to edgy UUID=56ef33df-9f30-4577-b1de-83b540fd3519 /home ext3 defaults 0 2 # /dev/hdc11 -- converted during upgrade to edgy UUID=9628b57a-cd57-4ffb-a0e7-6d2bc349e46b /media/hdc11 ext3 defaults 0 2 # /dev/hdc12 -- converted during upgrade to edgy UUID=caa74b76-416b-46aa-8c0a-f6348f6afbcd /media/hdc12 ext3 defaults 0 2 # /dev/hdc13 -- converted during upgrade to edgy UUID=fe873ec7-3176-4aad-b0b1-9164f938f213 /media/hdc13 ext3 defaults 0 2 # /dev/hdd1 -- converted during upgrade to edgy UUID=9E745EF6745ED11F /media/hdd1 ntfs defaults,nls=utf8,umask=007,gid=46 0 1 # /dev/hdd5 -- converted during upgrade to edgy UUID=78DB-0025 /media/hdd5 vfat defaults,utf8,umask=007,gid=46 0 1 # /dev/hdc9 -- converted during upgrade to edgy UUID=b43c2193-3c00-48d0-8c29-c2fa7212c457 /usr ext3 defaults 0 2 # /dev/hdc8 -- converted during upgrade to edgy UUID=7cec1fb3-c2f2-46dc-9782-7228d57b9f2b /var ext3 defaults 0 2 # /dev/hdc6 -- converted during upgrade to edgy UUID=6996378e-a37b-49b8-8e91-65164bef7626 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 My first thought: what a mess!</description></item><item><title>Playing Age of Empires 2 with Wine 0.9.30</title><link>https://www.brain-dump.org/blog/playing-age-of-empires-2-with-wine-0.9.30/</link><pubDate>Wed, 14 Feb 2007 12:50:51 +0000</pubDate><guid>https://www.brain-dump.org/blog/playing-age-of-empires-2-with-wine-0.9.30/</guid><description>I am absolutely not a gamer, but today I was sick at home and wondered what I could do, so I decided to try whether I could run Age of Empires 2 + the Conquerors expansion with Wine.
According to the Wine APP DB [1,2] this should be possible &amp;ndash; and it was. Installation was straight forward and worked perfectly, just mount the cdrom and execute the setup with wine. Because wine doesn&amp;rsquo;t yet support the required copy protection (safedisc2?</description></item><item><title>QEMU 0.9.0 and KQEMU Released Under the GPL</title><link>https://www.brain-dump.org/blog/qemu-0.9.0-and-kqemu-released-under-the-gpl/</link><pubDate>Tue, 06 Feb 2007 13:01:01 +0000</pubDate><guid>https://www.brain-dump.org/blog/qemu-0.9.0-and-kqemu-released-under-the-gpl/</guid><description>QEMU 0.9.0 brings lots of improvements and KQEMU is finally released under the GPL &amp;ndash; thanks Fabrice.
Other interesting things happen in the current KVM development with the recent work from Ingo Molnar on KVM paravirtualization for Linux which gives pretty impressive performance.
Unfortunately I currently don&amp;rsquo;t have time to work on qemu-gui and there doesn&amp;rsquo;t seem to be much interest anyway.
So long, Marc.</description></item><item><title>Accessing the Line Scanner in IBM Anyplace Kiosk</title><link>https://www.brain-dump.org/blog/accessing-the-line-scanner-in-ibm-anyplace-kiosk/</link><pubDate>Fri, 29 Dec 2006 16:06:05 +0000</pubDate><guid>https://www.brain-dump.org/blog/accessing-the-line-scanner-in-ibm-anyplace-kiosk/</guid><description>The last week I was busy searching a way to access the integrated Line Scanner as found in the IBM Anyplace Kiosks. The biggest hurdle was actually to get the damn thing to work, after reading through various documentation (JavaPOS, OPOS, UnifiedPOS), installing different devices drivers, I finally succeeded with a OPOS based Windows solution. I still try to convince management to deploy a Linux based solution, but do not yet know if there are the needed device drivers available.</description></item><item><title>Debian Developer Database Statistics</title><link>https://www.brain-dump.org/blog/debian-developer-database-statistics/</link><pubDate>Sun, 03 Dec 2006 13:02:47 +0000</pubDate><guid>https://www.brain-dump.org/blog/debian-developer-database-statistics/</guid><description>I am currently writing a paper for school with the title &amp;ldquo;Free and OpenSource Software in Switzerland&amp;rdquo;, therefore I am interested in the FOSS community here in Switzerland. So I decided to make some statistic out of the Debian Developer Database, below is my ruby script for that purpose. It basically just queries the web interface, parses the results and makes some statistics. I plan to set this number in relation to the population of the corresponding countries.</description></item><item><title>Thanks Sun for Open Sourcing Java</title><link>https://www.brain-dump.org/blog/thanks-sun-for-open-sourcing-java/</link><pubDate>Mon, 13 Nov 2006 22:24:23 +0000</pubDate><guid>https://www.brain-dump.org/blog/thanks-sun-for-open-sourcing-java/</guid><description>It would like to thank everyone who was involved in open sourcing Java, by choosing the GNU GPLv2 you made the right decision. Thanks to all the Classpath and Kaffe hackers for their effort in building a free Java. Hopefully you will join the Sun engineers and create a whole new community.
Here is a quote from RMS which summarizes it quite nicely.
I think Sun has well, with this contribution have contributed more than any other company to the free software community in the form of software.</description></item><item><title>Evaluating Free Software wxWidgets GUI Designers</title><link>https://www.brain-dump.org/blog/evaluating-free-software-wxwidgets-gui-designers/</link><pubDate>Thu, 10 Aug 2006 16:04:59 +0000</pubDate><guid>https://www.brain-dump.org/blog/evaluating-free-software-wxwidgets-gui-designers/</guid><description>I am currently trying to write a cross platform GUI frontend for qemu. I have chosen to use the C++ toolkit wxWidgets, mostly because it is written in C++ and therefore object oriented, other advantages are that on Linux it uses gtk+ and it has good Windows support.
Since I don&amp;rsquo;t want to mess around with basic things like the placement of the various GUI elements, I looked around for a wxWidgets capable RAD tool.</description></item><item><title>Mixing C and C++ Code in the Same Program</title><link>https://www.brain-dump.org/blog/mixing-c-and-c-code-in-the-same-program/</link><pubDate>Wed, 26 Jul 2006 10:06:32 +0000</pubDate><guid>https://www.brain-dump.org/blog/mixing-c-and-c-code-in-the-same-program/</guid><description>I am currently trying to reuse an existing C-library from C++, since I am quite a newbie on these things I found the following article from the Sun Developer Network Mixing C and C++ Code in the Same Program quite interesting.
Marc</description></item><item><title>Picotux - the Smallest Linux Computer in the World</title><link>https://www.brain-dump.org/blog/picotux-the-smallest-linux-computer-in-the-world/</link><pubDate>Wed, 28 Jun 2006 13:53:10 +0000</pubDate><guid>https://www.brain-dump.org/blog/picotux-the-smallest-linux-computer-in-the-world/</guid><description>Today I came across a really fancy project / product, picotux - the smallest Linux Computer in the World.
This thing is apparently build on top off uClinux and busybox. It connects it self to the outside world over RJ45 or a serial connector and can even serve as a simple web or telnet server.
See the technical page for further information.
Marc</description></item><item><title>Understanding XSS and How to Prevent It</title><link>https://www.brain-dump.org/blog/understanding-xss-and-how-to-prevent-it/</link><pubDate>Fri, 23 Jun 2006 14:41:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/understanding-xss-and-how-to-prevent-it/</guid><description>There was recently a completely stupid XSS story covered on Slashdot whose main argument is quoted below.
XSS vulnerabilities are not a mark of bad or insecure code but rather a nasty but unavoidable risk that's a part of JavaScript - and that even then, XSS 'vulnerable' sites are no less dangerous or vulnerable at heart. Fortunately, this is completely bullshit. We will later discuss what kind of countermeasures can be taken, but first of all make sure you know what XSS is.</description></item><item><title>Debugging Java Macros for OpenOffice.org with Eclipse</title><link>https://www.brain-dump.org/blog/debugging-java-macros-for-openoffice.org-with-eclipse/</link><pubDate>Tue, 13 Jun 2006 12:04:12 +0000</pubDate><guid>https://www.brain-dump.org/blog/debugging-java-macros-for-openoffice.org-with-eclipse/</guid><description>I recently had the pleasure to develop a OpenOffice.org Java Macro and from that experience I can tell you that it is a pain in the ass.
No really, to start with the API is well not that simple and easy to work with. I understand that it is a complex task to create a cross platform cross language, network aware component framework but the whole UNO thing is probably a bit over designed (see the Developer Guide with 1100+ pages).</description></item><item><title>Combine Winpooch and ClamWin to Protect Windows Clients</title><link>https://www.brain-dump.org/blog/combine-winpooch-and-clamwin-to-protect-windows-clients/</link><pubDate>Fri, 09 Jun 2006 14:41:15 +0000</pubDate><guid>https://www.brain-dump.org/blog/combine-winpooch-and-clamwin-to-protect-windows-clients/</guid><description>You probably know ClamAV the popular opensource antivirus scanner which is widely used on mail servers etc. There is also a Windows Port, ClamWin available which can be used to scan files on the Windows platform. Unfortunately, ClamWin currently lacks an on-access scanner, which is a must have for a modern desktop virus scanner.
This is where winpooch comes in. Winpooch is a API-Hooker that is it catches System calls checks them against a filter list and then proceed according to the configured action.</description></item><item><title>Using Debootstrap and Pbuilder to Build Debian Packages</title><link>https://www.brain-dump.org/blog/using-debootstrap-and-pbuilder-to-build-debian-packages/</link><pubDate>Fri, 09 Jun 2006 09:27:30 +0000</pubDate><guid>https://www.brain-dump.org/blog/using-debootstrap-and-pbuilder-to-build-debian-packages/</guid><description>Building Debian packages within your normal system can be quite dangerous because care has to be taken that the resulting binary won&amp;rsquo;t link against wrong libraries etc. To simplify this process there are a few useful tools available. These can not only be used to build packages, other use cases include building a chroot environment from a given distribution or install a base system.
Creating a chroot environment Debootstrap builds a chroot environment of a given distribution.</description></item><item><title>Printing a Single Line by Line Number with Sed</title><link>https://www.brain-dump.org/blog/printing-a-single-line-by-line-number-with-sed/</link><pubDate>Sat, 20 May 2006 22:50:30 +0000</pubDate><guid>https://www.brain-dump.org/blog/printing-a-single-line-by-line-number-with-sed/</guid><description>Well it turned out that I am not yet that comfortable in shell scripting. I often get error messages which indicating the line numbers on which a problem occurs and I wanted to print that single line of a given file. So I ended up with a solution which was built upon a combination of head and tail, before I finally realized that sed is the right tool for the job.</description></item><item><title>Avoid Console Beeping (within VMware)</title><link>https://www.brain-dump.org/blog/avoid-console-beeping-within-vmware/</link><pubDate>Sat, 20 May 2006 10:01:37 +0000</pubDate><guid>https://www.brain-dump.org/blog/avoid-console-beeping-within-vmware/</guid><description>In the office where we have Windows clients I quite often use VMWare to test something. In Debian by default the shell beeps if there are multiple possibilities after hitting [Tab], well this gets pretty annoying over time. The obvious and simplest solution would be to just disconnect the virtual sound device from the VM. However, if you need/want sound in some cases this is not ideal. So i ended up with the following settings in my ~/.</description></item><item><title>MySQL Administration: Backup and Security Strategies on Linux</title><link>https://www.brain-dump.org/blog/mysql-administration-backup-and-security-strategies-on-linux/</link><pubDate>Sun, 16 Apr 2006 19:51:19 +0000</pubDate><guid>https://www.brain-dump.org/blog/mysql-administration-backup-and-security-strategies-on-linux/</guid><description>I found the following slides from the OpenSource Database Conference 2005 which cover MySQL Administration: Backup and Security Strategies on Linux quite interesting.
Marc</description></item><item><title>PHP Development with Eclipse</title><link>https://www.brain-dump.org/blog/php-development-with-eclipse/</link><pubDate>Sat, 15 Apr 2006 22:43:59 +0000</pubDate><guid>https://www.brain-dump.org/blog/php-development-with-eclipse/</guid><description>With PHPEclipse there is a decent plugin for PHP within Eclipse available, although it isn&amp;rsquo;t yet as feature rich as Eclipse for Java development it is quite usable. In combination with the Subversion plugin development becomes even easier.
For both PHPeclipse and Subclipse are well documented install instructions available.
Note that there is also an official PHP-IDE from Eclipse which is developed together with Zend. This is however in a early development state and I haven&amp;rsquo;t had time to take a closer look at it.</description></item><item><title>Subversion Backend Selection and Authentication Configuration</title><link>https://www.brain-dump.org/blog/subversion-backend-selection-and-authentication-configuration/</link><pubDate>Sat, 25 Mar 2006 23:31:50 +0000</pubDate><guid>https://www.brain-dump.org/blog/subversion-backend-selection-and-authentication-configuration/</guid><description>After a few DB corruption and journal recovering with the Berkley DB backend I strongly advise you to use the filesystem based backend instead. I think it is by now the default, but to be sure set it on the command line. By the way here is a comparison of the different backends. Personally I like the fact that if needed the repository data can be manipulated by standard tools.</description></item><item><title>Resizing Loop Back File Systems</title><link>https://www.brain-dump.org/blog/resizing-loop-back-file-systems/</link><pubDate>Sat, 11 Mar 2006 21:40:55 +0000</pubDate><guid>https://www.brain-dump.org/blog/resizing-loop-back-file-systems/</guid><description>I recently needed to resize an existing loop back file system which was created with dd after some research I came up with the following which worked fine for me.
First you need to get the current image size preferably in megabytes this can be done with
# du -m loop-back-image.img 300 loop-back-image.img It says the size is 300MB, so here is how we can add another 100MB to it.</description></item><item><title>Debian Update and NO_PUBKEY Found</title><link>https://www.brain-dump.org/blog/debian-update-and-no_pubkey-found/</link><pubDate>Wed, 18 Jan 2006 17:14:46 +0000</pubDate><guid>https://www.brain-dump.org/blog/debian-update-and-no_pubkey-found/</guid><description>To fix the error you have to download the archive signing key from http://ftp-master.debian.org/, add it to the system as shown below and continue the update.
apt-key add [file-of-key] Marc</description></item><item><title>Running Lotus Notes 6.5.x with Wine</title><link>https://www.brain-dump.org/blog/running-lotus-notes-6.5.x-with-wine/</link><pubDate>Sun, 27 Nov 2005 15:34:48 +0000</pubDate><guid>https://www.brain-dump.org/blog/running-lotus-notes-6.5.x-with-wine/</guid><description>I recently needed Lotus Notes 6.5.2 for business purposes, I knew that it kind of worked with Wine and so I gave it a try. Here are my tips for others who have to run Notes under a Unix-like operating system:
Take a wine version which is known to work (20050725) newer ones like 0.9 don&amp;rsquo;t (at least I couldn&amp;rsquo;t manage to make it work). Install the notes client on a Windows box Adjust all settings on the Windows box set the web browser to notes set the sametime connection to manual configure proper TCP/IP settings and disable everything else (NETBIOS) Copy the notes directory over to the Linux machine Copy mfc42.</description></item><item><title>Stopping sshd Brute Forcing with fail2ban</title><link>https://www.brain-dump.org/blog/stopping-sshd-brute-forcing-with-fail2ban/</link><pubDate>Sun, 27 Nov 2005 13:58:16 +0000</pubDate><guid>https://www.brain-dump.org/blog/stopping-sshd-brute-forcing-with-fail2ban/</guid><description>Today I had enough from those script kiddies trying to break into one of my boxes by brute forcing SSH passwords. So I googled a bit and found fail2ban from the homepage:
Fail2Ban scans log files and bans IP that makes too many password failures. It updates firewall rules to reject the IP address. Of course still better would be to disallow all authentication methods but key-files. Another approach to solve this problem may be portknocking.</description></item><item><title>Installing Official Java on Debian</title><link>https://www.brain-dump.org/blog/installing-official-java-on-debian/</link><pubDate>Sun, 27 Nov 2005 12:35:28 +0000</pubDate><guid>https://www.brain-dump.org/blog/installing-official-java-on-debian/</guid><description>First of all whenever possible I would recommend using a free alternative like (classpath, kaffe or gcj) but sometimes this is simply not possible because some features are not yet implemented. Since there are no official Sun Java package in Debian, we have to install it from another source or manually. As always there are different ways to accomplish this, we could for example simply fetch the *.bin file from the Sun page, make it executable and let it extract it&amp;rsquo;s content to /usr/local.</description></item><item><title>Tracking Config Files with Git, Cogito and Gitweb</title><link>https://www.brain-dump.org/blog/tracking-config-files-with-git-cogito-and-gitweb/</link><pubDate>Tue, 01 Nov 2005 11:31:43 +0000</pubDate><guid>https://www.brain-dump.org/blog/tracking-config-files-with-git-cogito-and-gitweb/</guid><description>I recently took a look at the gitweb interface on kernel.org and it really attracted me. I thought it would be nice to manage the config files in my home directory with git and make them available on the net via gitweb.
If you are new to git/cogito I would strongly recommend to investigate a few minutes and work through the README.
In Debian you can install git and cogito with apt-get install cogito.</description></item><item><title>CMus a Curses Based Music Player</title><link>https://www.brain-dump.org/blog/cmus-a-curses-based-music-player/</link><pubDate>Sat, 22 Oct 2005 21:16:51 +0000</pubDate><guid>https://www.brain-dump.org/blog/cmus-a-curses-based-music-player/</guid><description>I like console based programs because they usually have a decent interface which can be controlled only by keyboard facilitating usage in any environment including SSH sessions when no X server is available. With screen you even have some kind of window manager.
I regularly use vim, mutt and sometimes irssi and now it seems that I have found another useful console application the CMus - C* Music Player. It is a full featured music player for the console with support for various file formats, a intuitive interface including playlist handling (sorting, grouping, searching etc.</description></item><item><title>Creating Debian Packages from Source with Checkinstall</title><link>https://www.brain-dump.org/blog/creating-debian-packages-from-source-with-checkinstall/</link><pubDate>Fri, 21 Oct 2005 20:38:39 +0000</pubDate><guid>https://www.brain-dump.org/blog/creating-debian-packages-from-source-with-checkinstall/</guid><description>With APT package installation in Debian is really easy. But sometimes you simply can&amp;rsquo;t avoid to install a package from source probably because there is no *.deb package available, it is outdated or you would like to compile it with specific compiler options.
This causes some problems because when you install packages from source the package management software doesn&amp;rsquo;t know about them and therefore you can&amp;rsquo;t really upgrade or remove them in a smooth way.</description></item><item><title>Source Controll Management with Bazaar-ng</title><link>https://www.brain-dump.org/blog/source-controll-management-with-bazaar-ng/</link><pubDate>Fri, 14 Oct 2005 12:09:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/source-controll-management-with-bazaar-ng/</guid><description>I recently took a look at bazaar-ng, the installation is plain simple (well on Debian anyway it&amp;rsquo;s just apt-get install bzr) and the user interface is also straight forward (commands are more or less named as expected).
As an introduction I recommend reading through their wiki. To get started just initialize a new branch and then add further files. With bzr help [command] you get some information about the specified command.</description></item><item><title>Compiling Qemu with KQemu to Run Windows 98 on Debian Sid</title><link>https://www.brain-dump.org/blog/compiling-qemu-with-kqemu-to-run-windows-98-on-debian-sid/</link><pubDate>Sun, 02 Oct 2005 14:09:08 +0000</pubDate><guid>https://www.brain-dump.org/blog/compiling-qemu-with-kqemu-to-run-windows-98-on-debian-sid/</guid><description>For those of you who don&amp;rsquo;t already know qemu is a fast and free emulator comparable with VMWare. Of course there are Debian packages available which you could just install as usual but they do not include the closed source kernel module (kqemu) which provides major performance enhancements. So we will compile qemu from source.
Compiling qemu from source Fetch the qemu source code from the webpage and compile it according to the documentation.</description></item><item><title>Opera without Advertisement</title><link>https://www.brain-dump.org/blog/opera-without-advertisement/</link><pubDate>Tue, 20 Sep 2005 21:08:41 +0000</pubDate><guid>https://www.brain-dump.org/blog/opera-without-advertisement/</guid><description>Today Opera released their browser for free (as in beer) without advertisements. This is really good news for me because Opera is my favorite browser and a great piece of software.
And before someone is arguing that I should use Firefox instead, because Opera is not open source (free as in speech), I am a supporter of Free Software but Opera is just an exception. Out of curiosity I have even installed vrms to show the non-free packages on my system and here is the result:</description></item><item><title>XPM Icons for the Fluxbox Menu</title><link>https://www.brain-dump.org/blog/xpm-icons-for-the-fluxbox-menu/</link><pubDate>Sun, 18 Sep 2005 18:24:23 +0000</pubDate><guid>https://www.brain-dump.org/blog/xpm-icons-for-the-fluxbox-menu/</guid><description>I recently needed some XPM icons for my fluxbox menu, I found the following resources quite useful:
IceWM Icons Window Manager Icons Project Integrating the icons into the fluxbox menu is straight forward.
[exec] (text) { command } &amp;lt;~/.fluxbox/icons/icon.xpm&amp;gt; Below is a screenshot of my current menu.
[img src=../images/fluxbox-menu.png]</description></item><item><title>Running Multiple Window Managers with Xnest</title><link>https://www.brain-dump.org/blog/running-multiple-window-managers-with-xnest/</link><pubDate>Mon, 12 Sep 2005 20:18:12 +0000</pubDate><guid>https://www.brain-dump.org/blog/running-multiple-window-managers-with-xnest/</guid><description>My favorite window manager is currently fluxbox but I recently wanted to try out wmii. So I searched for a way to run multiple window managers and still be able to switch between them. This is were Xnest comes in. With Xnest it is possible to - well - nest a X server.
We have to pass another display number to Xnest because the default :0 is normally already in use.</description></item><item><title>Sound Mixing with the ALSA Dmix Plugin Instead of a Sound Server</title><link>https://www.brain-dump.org/blog/sound-mixing-with-the-alsa-dmix-plugin-instead-of-a-sound-server/</link><pubDate>Sat, 10 Sep 2005 10:34:03 +0000</pubDate><guid>https://www.brain-dump.org/blog/sound-mixing-with-the-alsa-dmix-plugin-instead-of-a-sound-server/</guid><description>I&amp;rsquo;m sure you have already tried to play multiple sounds simultaneously in which case you probably got a message saying that /dev/dsp is busy. That&amp;rsquo;s because only one process can open the sound device at a time.
Of course there are different solutions to work around this problem. One possibility is to use a sound server like aRtsd, EsoundD or jackd. Applications will no longer talk directly to the sound device, instead they will send their data to the sound server which will then mix several audio streams for playback by a single audio device.</description></item><item><title>Bootsplash on Debian Sid</title><link>https://www.brain-dump.org/blog/bootsplash-on-debian-sid/</link><pubDate>Mon, 05 Sep 2005 20:45:54 +0000</pubDate><guid>https://www.brain-dump.org/blog/bootsplash-on-debian-sid/</guid><description>First of all I normally don&amp;rsquo;t care much about eye candy stuff, but recently my girlfriend told me that she found it quite boring to see the boot log scrolling by. Because I have never set up a boot splash before, I gave it a try.
Patching the kernel First of all we need to patch our kernel, the patches can be found on bootsplash.org or bootsplash.de. They can be applied as usual.</description></item><item><title>Restoring Aumix Settings on Restart</title><link>https://www.brain-dump.org/blog/restoring-aumix-settings-on-restart/</link><pubDate>Sun, 04 Sep 2005 11:48:26 +0000</pubDate><guid>https://www.brain-dump.org/blog/restoring-aumix-settings-on-restart/</guid><description>I recently had the problem that the sound settings were not restored on reboot and therefore every time I needed sound I first had to adjust the volume with aumix. Over time this becomes annoying and so I invested a few minutes to get rid of the problem.
It turns out that we have to change just one variable at the top of /etc/init.d/aumix and everything works as expected.
HANDLEALSA=&amp;quot;yes&amp;quot; For those who haven&amp;rsquo;t come in touch with sound on GNU/Linux, I recommend reading this article which covers ALSA/OSS and sound daemons.</description></item><item><title>Artwiz Fonts for Fluxbox</title><link>https://www.brain-dump.org/blog/artwiz-fonts-for-fluxbox/</link><pubDate>Sun, 28 Aug 2005 00:59:53 +0000</pubDate><guid>https://www.brain-dump.org/blog/artwiz-fonts-for-fluxbox/</guid><description>I recently installed the artwiz fonts for use with fluxbox by following the README instructions:
Do the following (example for gentoo): cd your_font_dir tar xvjf artwiz-aleczapka-&amp;lt;LANG&amp;gt;-&amp;lt;RELEASE&amp;gt;.tar.bz2 cd artwiz-aleczapka-&amp;lt;LANG&amp;gt;-&amp;lt;RELEASE&amp;gt; fc-cache -fv ./ Add this path to your /etc/X11/XF86Config config FontPath &amp;quot;your_font_dir/artwiz-aleczapka-&amp;lt;LANG&amp;gt;-&amp;lt;RELEASE&amp;gt;&amp;quot; and fontconfig config file (eg. /etc/fonts/local.conf) &amp;lt;dir&amp;gt;your_font_dir/artwiz-aleczapka-&amp;lt;LANG&amp;gt;-&amp;lt;RELEASE&amp;gt;:unscaled&amp;lt;/dir&amp;gt; restart X Your installation may vary depending on your distro. But it seemed that fluxbox doesn&amp;rsquo;t like them. The fonts were working in other applications such as terminals, but fluxbox just ignored them and instead used an ugly default font.</description></item><item><title>Detecting Unused Debian Packages with Deborphan and Debfoster</title><link>https://www.brain-dump.org/blog/detecting-unused-debian-packages-with-deborphan-and-debfoster/</link><pubDate>Sat, 27 Aug 2005 22:17:09 +0000</pubDate><guid>https://www.brain-dump.org/blog/detecting-unused-debian-packages-with-deborphan-and-debfoster/</guid><description>The Debian package management (apt &amp;amp; dpkg) is great, but under certain circumstances it keeps unused packages on the system.
For example if you install package A which requires B, B is normally automatically installed. However, if you afterwards remove A, then B will be kept on the system although it could be removed because no other packages requires it.
With deborphan you can find all these packages which have no other packages depending on their installation.</description></item><item><title>Creating Dummy Packages to Fulfil Dependencies in Debian</title><link>https://www.brain-dump.org/blog/creating-dummy-packages-to-fulfil-dependencies-in-debian/</link><pubDate>Sat, 20 Aug 2005 22:17:14 +0000</pubDate><guid>https://www.brain-dump.org/blog/creating-dummy-packages-to-fulfil-dependencies-in-debian/</guid><description>First of all I would like to make clear that this should just be done if you really know what you are doing, otherwise it could badly mess up your system.
Ok, you have been warned. However, in some cases it is really useful. For example I have the proprietary SUN J2SDK (*.bin file) installed on my system, since the JDK is not integrated into the package management system an apt-get install azureus fails because of broken dependencies on sun-j2dk-1.</description></item><item><title>X.Org and the Composite Extension on Debian Sid</title><link>https://www.brain-dump.org/blog/x.org-and-the-composite-extension-on-debian-sid/</link><pubDate>Sat, 20 Aug 2005 20:17:37 +0000</pubDate><guid>https://www.brain-dump.org/blog/x.org-and-the-composite-extension-on-debian-sid/</guid><description>A friend of mine recently asked how to enable the new eye candy features from X.org in Debian Sid. The required package xcompmgr is currently not part of the official repository, therefore we have to add a new entry to our sources.list:
deb http://debian.linux-systeme.com sid main deb-src http://debian.linux-systeme.com sid main Afterwards we can install the already mentioned xcompmgr
apt-get update apt-get install xcompmgr To activate the extension we have to add an additionally line to our xorg.</description></item><item><title>PEAR:DB Database Abstraction Layer</title><link>https://www.brain-dump.org/blog/peardb-database-abstraction-layer/</link><pubDate>Thu, 11 Aug 2005 09:31:58 +0000</pubDate><guid>https://www.brain-dump.org/blog/peardb-database-abstraction-layer/</guid><description>Nowadays web applications need to be flexible and so it is wise to use a database abstraction layer, so it will be easy to exchange the underlying DBMS. There are quite a few projects out there who provide this functionality, PEAR:DB PEAR:MDB and AdoDB are probably the most popular ones.
While developing this page I took a closer look at PEAR:DB mostly because it is a part of PEAR and therefore available on most systems by default.</description></item><item><title>Booting Windows from a non-first Disk with GRUB</title><link>https://www.brain-dump.org/blog/booting-windows-from-a-non-first-disk-with-grub/</link><pubDate>Tue, 09 Aug 2005 21:16:57 +0000</pubDate><guid>https://www.brain-dump.org/blog/booting-windows-from-a-non-first-disk-with-grub/</guid><description>As you probably know Windows can only be installed on the first hard disk, but furthermore it can only boot from there. I struggled with this recently while configuring GRUB. I was actually quite confident that my config file was correct (remember grubs naming convention which starts with zero so hd(0,0) refers to the first partition on the first disk) but Windows just didn&amp;rsquo;t boot.
And so I googled for a possible reason and found this FAQ entry.</description></item><item><title>APT Keeps Packages Back</title><link>https://www.brain-dump.org/blog/apt-keeps-packages-back/</link><pubDate>Thu, 04 Aug 2005 20:05:38 +0000</pubDate><guid>https://www.brain-dump.org/blog/apt-keeps-packages-back/</guid><description>Ever wondered why apt keeps some packages back when doing an apt-get update &amp;amp;&amp;amp; apt-get upgrade?
apt-get upgrade Reading package lists... Done Building dependency tree... Done The following packages have been kept back: cpp gcc libcurl3 ssh tasksel x-window-system-core xbase-clients xlibmesa-gl xutils 0 upgraded, 0 newly installed, 0 to remove and 9 not upgraded. The message actually means that there is a new package version available but for some reason it can not be installed.</description></item><item><title>Displaying Recursive Data Structures with Smarty</title><link>https://www.brain-dump.org/blog/displaying-recursive-data-structures-with-smarty/</link><pubDate>Wed, 03 Aug 2005 20:20:31 +0000</pubDate><guid>https://www.brain-dump.org/blog/displaying-recursive-data-structures-with-smarty/</guid><description>For those of you who don&amp;rsquo;t know what smarty is, it is a PHP Templating-Engine whose main idea is to separate program logic from presentation.
A quite common task in web development is to display recursive data structures such as tree menus etc. However, this can be a bit tricky for someone new to smarty. There is currently no built in mechanism for doing so, but with the possibility to include sub files it can be done.</description></item><item><title>Fluxbox Key Bindings after Switchover to Xorg</title><link>https://www.brain-dump.org/blog/fluxbox-key-bindings-after-switchover-to-xorg/</link><pubDate>Tue, 02 Aug 2005 21:14:09 +0000</pubDate><guid>https://www.brain-dump.org/blog/fluxbox-key-bindings-after-switchover-to-xorg/</guid><description>I finally had some time to switch my desktop box over to Xorg. However after the successful upgrade I noticed that my fluxbox key bindings were no longer working. After a while I found out that the Windows, which I am using as a modifier, did no longer work as expected. xmodmap confirmed that:
xmodmap: up to 2 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x6d) mod1 Alt_L (0x40) mod2 Num_Lock (0x4d) mod3 Mode_switch (0x71) mod4 mod5 Scroll_Lock (0x4e) So first of all I had to look up the keycode of the windows key.</description></item><item><title>Mail Handling with getmail, procmail, Mutt and Exim</title><link>https://www.brain-dump.org/blog/mail-handling-with-getmail-procmail-mutt-and-exim/</link><pubDate>Wed, 27 Jul 2005 22:17:11 +0000</pubDate><guid>https://www.brain-dump.org/blog/mail-handling-with-getmail-procmail-mutt-and-exim/</guid><description>I recently needed to reinstall my mailing tools and so I am going to write it down for further reference. I have used getmail to fetch the mails from the POP3 Server, procmail to filter them, mutt to display them and finally exim4 to forward new mails to my providers server for delivering.
Installing the necessary packages apt-get update &amp;amp;&amp;amp; apt-get install getmail procmail mutt exim4 Getting the mails from the server Depending on your needs there are different solutions, the simplest is to just grab the mails from your providers POP3-server without further processing such as filtering them into different mail boxes etc.</description></item><item><title>Week Number of a Given Date in Lotus Notes @Formulas</title><link>https://www.brain-dump.org/blog/week-number-of-a-given-date-in-lotus-notes-formulas/</link><pubDate>Wed, 27 Jul 2005 12:42:25 +0000</pubDate><guid>https://www.brain-dump.org/blog/week-number-of-a-given-date-in-lotus-notes-formulas/</guid><description>Ok first of all I am one of those unlucky guys who has to develop things with Lotus Domino. Especially the formula language is kind of crap (my personal opinion).
Anyway, I had to program a calendar and therefore needed to get the week number of a given date. Thanks to notesweb where I found an almost working version, I just needed to patch it a bit.
Here is my final code which seems to do the trick (at least for my purpose).</description></item><item><title>Pausing a Batch Script for a Given Time</title><link>https://www.brain-dump.org/blog/pausing-a-batch-script-for-a-given-time/</link><pubDate>Tue, 26 Jul 2005 14:03:16 +0000</pubDate><guid>https://www.brain-dump.org/blog/pausing-a-batch-script-for-a-given-time/</guid><description>Here is another piece of code which I found today.
As you all know Windows sucks when it comes to shell/batch scripting (well not just there, but that&amp;rsquo;s another story) and so even basic things become difficult.
For example there is no easy way to pause a script for a given time (sleep(1) on Unix), but with the help of the ping command this can be achieved.
There are different ways to accomplish this first one is not that good because it causes some network traffic but on the other hand the time interval is highly configurable.</description></item><item><title>VMWare Wrapper Script for Fullscreen Startup (Windows)</title><link>https://www.brain-dump.org/blog/vmware-wrapper-script-for-fullscreen-startup-windows/</link><pubDate>Mon, 25 Jul 2005 18:34:19 +0000</pubDate><guid>https://www.brain-dump.org/blog/vmware-wrapper-script-for-fullscreen-startup-windows/</guid><description>I found a batch script on my PC at work which I had written last year. It might be useful for someone who wants to start a VMware-Virtual-Machine directly in full screen mode with a simple shortcut. It is tested on WinXP with VMWare 4.5 but should also work with Win2000.
Anyway here is the code:
:: :: Script: vmware.start.bat :: :: Description: This automatically starts the :: requested virtual machine in :: fullscreen mode.</description></item><item><title>Debian Sid and Apt: Keep Track of Package Changes</title><link>https://www.brain-dump.org/blog/debian-sid-and-apt-keep-track-of-package-changes/</link><pubDate>Sat, 23 Jul 2005 13:49:25 +0000</pubDate><guid>https://www.brain-dump.org/blog/debian-sid-and-apt-keep-track-of-package-changes/</guid><description>Since Debian/Sid, which I am using on my primary box, is now switching over to X.org and GCC 4.0 there are a few broken dependencies right now which could cause troubles. I do not always have the time to read the Debian mailing list (which you actually should if you are using unstable) and therefore I find apt-listbugs and apt-listchanges quite useful.
Here is a short description:
marc@mydebian:~$ apt-cache show apt-listbugs Package: apt-listbugs Priority: optional Section: admin Installed-Size: 360 Maintainer: Masato Taruishi &amp;lt;taru@debian.</description></item><item><title>Having Fun While Converting ext2 to ext3 and Vice Versa</title><link>https://www.brain-dump.org/blog/having-fun-while-converting-ext2-to-ext3-and-vice-versa/</link><pubDate>Sat, 23 Jul 2005 12:50:32 +0000</pubDate><guid>https://www.brain-dump.org/blog/having-fun-while-converting-ext2-to-ext3-and-vice-versa/</guid><description>Ok this time I was playing around with different filesystem types. I found this page quite useful by doing so, here is a short summary of the most important commands:
# make a normal ext2 filesystem mke2fs /dev/hda1 # add a journal and therefore make it to an ext3 fs tune2fs -j /dev/hda1 # ok now lets remove the journal tune2fs -O ^has_journal /dev/hda1 # check if still everything is ok e2fsck -f /dev/hda1 Do this whenever possible on a unmounted partition.</description></item><item><title>PHP and PCRE: Greedy or Not?</title><link>https://www.brain-dump.org/blog/php-and-pcre-greedy-or-not/</link><pubDate>Mon, 18 Jul 2005 12:36:46 +0000</pubDate><guid>https://www.brain-dump.org/blog/php-and-pcre-greedy-or-not/</guid><description>After a while I once again came in touch with Regular Expressions. I needed to convert some BBCode into HTML but didn&amp;rsquo;t want to use a prepacked library mostly because they&amp;rsquo;re just too bloated for my purpose. However, I struggled over a few problems, first of all it took me some time to realize that . (the dot) doesn&amp;rsquo;t match new line characters (n). Maybe I should have read the documentation before starting to code.</description></item><item><title>MySQL v4.1 and Timestamp Updates</title><link>https://www.brain-dump.org/blog/mysql-v4.1-and-timestamp-updates/</link><pubDate>Sun, 17 Jul 2005 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/blog/mysql-v4.1-and-timestamp-updates/</guid><description>While developing this page I struggled over a (at least for me) strange behavior from MySQL. Every time a row is updated the first timestamp field gets updated too. This even happens when the timestamp field doesn&amp;rsquo;t occur in the query.
So I googled for that and first I thought it was a bug but that is actually not true it&amp;rsquo;s a feature.
MySQL prior to version 4.1 does this that way.</description></item><item><title>abduco a tool for session {at,de}tach support</title><link>https://www.brain-dump.org/projects/abduco/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/projects/abduco/</guid><description>abduco provides session management i.e. it allows programs to be run independently from their controlling terminal. That is programs can be detached - run in the background - and then later reattached. Together with dvtm it provides a simpler and cleaner alternative to tmux or screen.
abduco is in many ways very similar to dtach but is a completely independent implementation which is actively maintained, contains no legacy code, provides a few additional features, has a cleaner, more robust implementation and is distributed under the ISC license</description></item><item><title>ciopfs - case insensitive on purpose filesystem</title><link>https://www.brain-dump.org/projects/ciopfs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/projects/ciopfs/</guid><description>ciopfs is a stackable or overlay linux userspace file system (implemented with FUSE) which mounts a normal directory on a regular file system in case insensitive fashion.
The commands below should illustrate it&amp;rsquo;s function:
mkdir -p ~/tmp/ciopfs/{.data,case-insensitive} ciopfs ~/tmp/ciopfs/.data ~/tmp/ciopfs/case-insensitive cd ~/tmp/ciopfs mkdir -p case-insensitive/DeMo/SubFolder echo demo &amp;gt;&amp;gt; case-insensitive/DEMO/subFolder/MyFile At this point your file system should look like this:
case-insensitive `-- DeMo `-- SubFolder `-- MyFile .data `-- demo `-- subfolder `-- myfile To avoid any conflicts you should not manipulate the data directory directly, any change should be done over the mount point.</description></item><item><title>dvtm - dynamic virtual terminal manager</title><link>https://www.brain-dump.org/projects/dvtm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/projects/dvtm/</guid><description>dvtm brings the concept of tiling window management, popularized by X11-window managers like dwm to the console. As a console window manager it tries to make it easy to work with multiple console based programs.
News dvtm-0.15 released (2016-01-09) dvtm-0.14 released (2015-02-19) dvtm-0.13 released (2014-11-15) dvtm-0.12 released (2014-07-05) dvtm-0.11 released (2014-03-08) dvtm-0.10 released (2013-12-28) dvtm-0.9 released (2013-04-03) dvtm-0.8 released (2012-08-01) dvtm-0.7 released (2011-09-04) dvtm-0.6 released (2010-10-08) dvtm-0.5.2 released (2009-07-07) dvtm-0.</description></item><item><title>dwm-win32 - X11 dwm(1) for Windows</title><link>https://www.brain-dump.org/projects/dwm-win32/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/projects/dwm-win32/</guid><description>dwm-win32 is a port of the well known X11 window manager dwm to the Microsoft Windows platform.
It tries to bring the suckless philosophy and the principle of dynamic window management to Windows systems.
News Warning: I no longer actively use and develop dwm-win32.
dwm-win32-alpha2 (2009-04-21) tar.gz zip exe
dwm-win32-alpha1 (2009-03-21) tar.gz zip exe
Description dwm manages windows in tiled, monocle and floating layouts. Either layout can be applied dynamically, optimising the environment for the application in use and the task performed.</description></item><item><title>vis - editor combining vi and sam concepts</title><link>https://www.brain-dump.org/projects/vis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.brain-dump.org/projects/vis/</guid><description>Vis aims to be a modern, legacy-free, simple yet efficient editor, combining the strengths of both vi(m) and sam.
It extends vi&amp;rsquo;s modal editing with built-in support for multiple selections and combines it with sam&amp;lsquo;s structural regular expression based command language.
A universal editor, it has decent Unicode support and should cope with arbitrary files, including large, binary or single-line ones.
Efficient syntax highlighting is provided using Parsing Expression Grammars, which can be conveniently expressed using Lua in the form of LPeg.</description></item></channel></rss>