FlexWorld currently gets the Lua API implemented. Read more here.
Test-driven development
As you all know, FlexWorld has been in development for more than 10 months. And I finally decided to give it a big overhaul. I recently read a book called “The Clean Coder” which is about good habits and techniques that every serious programmer should know of.
One thing that got my attention was “test-driven development”. In the past I didn’t really do serious software tests, i.e. regression and integration tests. Why? Because programmers are mostly lazy, and unit tests are somewhat boring to write.
But I realized I was completely wrong. When I began writing the first tests for FlexWorld (I removed everything before!) it actually felt quite good. The reason is the workflow: At first you write the tests for the interface you want to get (this implies thinking about it, which is very important). This also gives you practical use-cases. After that you implement the production code itself.
That happens step-by-step. For example for every single function you write a test, then the implementation. Thereafter you build and run the tests. If they pass and you’re somewhat sure your tests are complete and make sense, you KNOW your code is sane!
Before I’ve started with unit tests it always felt like: “Uh, this should work.. I will throw in some debug output messages and see if the result is something I expected.” But I was never sure if my code was sane completely. And when a bug happened, it felt normal to check the code, eventually run the debugger and see what was wrong.
I highly encourage everybody to TEST software and adapt the test-driven development workflow. It just feels better when you add a feature and know it doesn’t break anything.
Fix touchpad tapping with Elantech devices and others
I got a new Asus EeePC netbook that has an Elantech touchpad device installed. It works out of the box with my Debian GNU/Linux installation, however the tapping is not working.
To make it work again you probably have to rebind the TapButtonX settings that are set to 0.
synclient TapButton1=1 TapButton2=2 TapButton3=3
Add it to your session start-up file for persistence. Also check out gpointing-device-settings for various touchpad options.
FlexWorld!
Today I decided to go public with my project that has been in development for ~10 months: FlexWorld.
To be able to concentrate on development and buy things like graphics, 3D models etc., I also decided to start a campaign at IndieGoGo. If you like what you see there, please spread the word!
Creating a screencast in Linux
Recently I wanted to create a simple screencast in Linux (Debian GNU/Linux). I remember I used “gtk-recordmydesktop” and “instanbul” before, but I don’t have that average audio setup anymore. Today it consists of an internal Intel audio chipset and an external U46DJ USB audio device.
Where are the posts?
I’ve sorted out some old posts about a project of mine. Of course the project is still heavily under development, and the reason why I’ve removed the posts is that I’m preparing serious and concreter information about it. Stay tuned.
Restore iPod Shuffle
Today when my girlfriend went to bed, she screamed “Can you come over here, my iPod’s flashing!”. I took the device and indeed it was flashing red and green accordingly. I plugged it in to see if the music got lost or the index got corrupted (I’ve never used iTunes, but a program called rebuild_db.exe), unfortunately I wasn’t able to access the device, it seemed dead.
“Vim is hard to use!”
Those who know me won’t be surprised that I’m a big Vim fan. Unfortunately there’re still people out there who either think Vim is hard to use or say that Vim is for geeks only. Let me try to clarify a bit and tell you why that’s not the case.
Theme loader for SFGUI
Yesterday I’ve completed the theme loader interface for SFGUI. I also did a reference implementation with a loader for the YAML syntax. However when I was finished, I didn’t like the idea that it requires another dependency (yaml-cpp), so I dropped YAML support.
Instead of YAML, you’ll get a very easy-to-understand theme syntax like:
Button.Normal.BackgroundColor = #123456 Button.Prelight.BackgroundColor = #789abc ...
Very intuitive to write and gives you everything you need to define and load themes. However I’ve designed the loader interface flexible enough to punch in your own loaders (YAML, XML, whatever). Checkout the Git repository to see the changes — the (working) YAML code can be found in the separate branch called yaml.
SFGUI, again
I haven’t done much programming the last few weeks and I think I’m going to change that. Since there’s still a lot of interest in my Open Source GUI library “SFGUI” for SFML, I’m hoping to get it to a nice usable state this time. The plans are made, the codebase is there: Happy coding?
You can find the Git repository here: https://github.com/TankOs/SFGUI