How to restore grub with a live CD

I borked my primary boot device’s grub installation last week because I wanted to start Windows 7 to play some LAN games. Windows 7 wouldn’t boot from grub, so I thought I’d install a new grub version. I reinstalled grub before regenerating the config file and rebooted. Too bad the Arch packages don’t handle that for you, as I was used to in Debian. This caused the grub to fail booting both Windows and Arch, so I resorted to changing my primary boot device in the BIOS.

Now, one week later, I decided to fix it, and as I can never recall by heart what the steps to take are, here’s a recipe, pretty much for my own convenience.

Read More »

Posted in Linux & BSD | Tagged , | Leave a comment

Unit testing and Drupal; what’s wrong with this picture?

I guess the guys at Drupal.org didn’t really understand the concept of unit testing. In comparison to the Zend Framework 1.13 and Symfony 1.4 test suites, of which some tests did not pass mainly due to some configuration issues (98.6% and 99.9% respectively), Drupal had some, let’s say, surprising results. Though it reported 100% of the tests to pass, 2 fatal errors occured. That might indicate expected fatal errors, but I doubt that. But the real surprising bit was that the tests took nearly 2 hours (!!) to finish.

Read More »

Posted in Development | Tagged , , | Leave a comment

Enhancing Python unit tests further with decorators

Decorators in Python are awesome. In follow-up to my previous post on a missing feature in Python’s unittest module in comparison to PHPUnit, here’s the implementation of PHPUnit’s @expectedException annotation in form of a Python decorator

Read More »

Posted in Development | Tagged , | Leave a comment

Endless scrolling based on a simple HTML pager

We had a little brainstorm today at work at how endless scrolling could be best implemented utilizing progressive enhancement. Here’s my idea and a proof of concept. And a good example of progressive enhancement in pure form, if I may say so.

The concept

When I think of endless scrolling, I see it as just another form of paging. Any content asynchronously loaded when scrolling down is in fact the same you would have seen when an ordinary pager was implemented, clicking on a link “next”. In practice, you don’t see the page change, the content is just loaded below the content already there.

Read More »

Posted in Development | Tagged , , | 2 Comments

PHPUnit style dataProvider in Python unit test

PHPUnit has a handy feature with which you can provide testdata to your tests. This is called a data provider, and is implemented by annotating a test with @dataProvider methodName. Python’s unittest module doesn’t seem to have such a feature.

Read More »

Posted in Development | Tagged , | 3 Comments

Introducing Spritzer: A CSS sprite generator

CSS sprites are pretty useful in web development. The general idea is you use one big image that contains all your icons and other interface-related images and use that image as a background for your HTML elements, shifting it’s position such that the right portion of the sprite is displayed.

This technique is becoming more and more popular, but the setting up of sprites can be a time consuming process. Spritzer is a little tool that can help you do the job so you have extra time for more fun things.

Read More »

Posted in Development | Tagged , , | 3 Comments

About MySQL, UTF-8 and saving headaches

One of the most confusing topics ever in web development history is character sets. MySQL has a lot of features to help you with this, but when things go wrong, it can be a real pain to get it solved. Read this and fear no more.

Read More »

Posted in Development | Tagged , | 1 Comment

HTML5 WebSocket Server – Work in Progress

So, I thought I’d devise a websocket server in Python. I’ve been tweeting some stuff about that too, but as soon as I wanted to publish the source code, I accidentally deleted websocket.py, instead of websocket.pyc (which I didn’t want to occur on github). That was quite dumb…

Read More »

Posted in Development | Tagged , | 2 Comments

10 must-have key and mouse binding configs in Openbox

In openbox, you have a configuration file in ~/.config/openbox/rc.xml in which you can pretty much configure all the shortcuts you need in a lifetime. Here’s my top ten configurations, along with their code.

Read More »

Posted in Linux & BSD | Tagged , , , | 2 Comments

“Taxonomy” does not direct course of implementation

A taxonomy is an ordered, parent-child (or ‘tree’) structure, used to classify a set of data in groups and subgroups. Any relation to a subgroup implies a relation with the parent group(s). This phenomenon is also called classification, but has recently been popularly called “tagging”. However, though tagging implies taxonomy, not all taxonomy is tagging. That is, after all, what implication means.

Read More »

Posted in Miscellaneous | Tagged , | Leave a comment