Two years of gnegg.ch

Two years ago, I started to use my spare gnegg.ch domain with this weblog. My first posting was quite the ordinary welcome-posting. Even back then, I promised to create a better layout for the site, which I finally did this february:

As I am not-so-good™ with layout, I kept the default one of Movable Type, my blogging-engine. Maybe Richard will help me here sometime in the future.

And Richard did a really good job with it. Thanks again.

Many times, gnegg was lingering around a bit, but I managed to put myself together all the time and in the last two years, there was at least one post every month. Since around january 2004, post much more often. Currently I’ve nearly 200 postings on the site, wich means that I wrote the same amount of postings in 6 months that took me a year and a half before: My 100th post was only this march.

With the increased amount of postings, I also got more visits: 2003 there where and average of 115 visits a day producing 184 pageviews. Now it’s more like 552 visits producing 12883 pageviews. Tendency: rising. Thank you, my fellow readers, for this.

With gnegg.ch becoming more known, also the problems grew: Currently, I’m filtering about 50 SPAM comments per day. A year ago it was at most one per month.

Posting here still is a lot of fun and I’m certainly going to continue writing here.

And in case your wonder, what “gnegg” actually means: It’s nothing. In 2001 I created that word quite by accident by typing around the keyboard to create some blind text and it liked it so much that I reserved the domain… What I liked about the name was that I was quite uncommon in the internet so far. Ok. There’s this, but whatever it is, it’s funny anyway…

My hx4700

Last thursday, I’ve written about my iPAQ hx4700 and I’ve promised a more thorough review. Well, here it is:

First of all, I can’t understand all the moaning about the device being so big out there. Granted, it’s larger than most PDA’s, but much less bulky than all it’s predecessors (the last one I used being the iPAQ 5550). Also, it’s acutally lighter than the previous model.

And then there’s this plastic cover, all are complaining about. I can’t confirm that either. You can flip it around without problems or fear of breaking it. So, I actually think, the cover is quite great as it does not thicken the device while still providing excellent protection for the display.

Speaking of displays: This is where I absolutelty concur with the other reviewers: It’s great. Extremely great. And while I understand Microsofts intentions when they created this special-vga-mode (essentially you have the same amount of real estate on the screen as with the 320×240 resolution. It just looks better and more detailed), I got used to the extremely small look of the screen with SE_VGA enabled which is how I have my device currently configured.

SE_VGA turns off this pixel-duplication and provides real VGA resolution. Everything get’s quite smallish, but you know: I’m the resolution guy

Unfortunatly, none of the programs currently out there are prepared for this extended VGA mode. The glitches range from too much whitespace over cut icons to quite unusable screens (iPAQ wireless, the communications center of the device, being such an example). All in all, the high resolution outweights those glitches for me.

Turning this mode on and off requires a warm reboot, unfortuntately

The eye-candy software HP is providing with the device is quite useless: The screensaver does not make sense to me (I don’t have pictures I would place on it and the status information provided on the today screen is more useful anyways) and the today-applet is unconfigurable and not really featureful, too.

Spb Pocket Plus is much more useful for that matter.

While HP provides a copy of Pocket Informant on the ROM, the version is already outdated. Updating is possible, but is a tedious process if you want to profit from the 50% rebate.

Really useful is this bluteooth phone configurator. Getting a GPRS-connection to work has never been easier. The phone and even the mobile provider got recognized and automatically configured.

What I extremely dislike about the device is that it has only 64 MB of RAM. This lead me to install all the applications to the iPAQ File Store which is about 100 MB large. While this is a solution, it has two problems:

  1. Flash ROM is slower than RAM. Starting Mobile Agent (a GPS software) took long already when installed in RAM. Now imagine starting it from the ROM. We’re talking minutes here!
  2. The software installation is semi-automatic as I must change the folder on every installation.

As software can easily be reinstalled even on power loss (and thus empty RAM), I don’t see any advanteage of the overly big ROM at the cost of more useful RAM.

Battery live is average. One day worth of heavy usage, most of it connected via WLAN and some via Bluetooth and GPRS (have I told you, how great this bluetooth phone tool is? I guess I have, but saying it again is the least I can do to emphasize how great it really is ;-) ) about brings the battery down. This is neither more nor less than I’d had expected.

What I really looked forward to (besides better user experience while bathtub-surfing) was watching videos on the device. Lying in bed, ready to sleep and watching an episode of Stargate or so on the device which is turned off fast is much more comfortable than using the notebook or even the video beamer.

First, I was quite disappointed: Using Windows Media Encoder and the built-in WMP9 was quite laggish: Many framedrops, bad sound quality.

Where the device really began to shine was with XViD movies and Betaplayer: No framedrops, great picture quality and no encoding-time. Very nice.

Now, if AVI would be streamable and/or if the pocketpc would just be a little bit faster while transferring files, this would get really great.

As it is now, copying a movie to the device without plugging around SD-Cards is impossible. Neither ActiveSync (much faster over USB2) nor WLAN are fast enough for transferring a movie in a bearable time frame. I think this is either a problem in the OS or in the bus where CF and SD-Cards are connected to.

All in all, I’m very happy with the device. Its slick look, the metallic body and the more-than-sufficient performance make it a great update from my 5550. What I’d wish for on a future incarnation would be more RAM and a HID capable bluetooth driver so I could use my BT-keyboard with it to write my short stories in bed too (none posted here yet).

Oh and last but not least: Maybe you ask yourself about this touchpad of the hx4700. It’s no coincidence I forgot to write about it ’till just now: It’s unspectacular. On one side it somewhat kills gaming (which does not matter for me as I’m not using my PDA for gaming – I have my GPA SP for that), on the other hand it’s just there. Neither useful nor useless. Neither comfortable nor not. Neiter an innovation nor not. It’s just there.

I have not yet come across an occation where it really is useful, but having the cursor-mode on also is no disadvantage (besides the mouse pointer floating around), so it really doesn’t matter for me.

HP iPAQ hx4700

Finally.

Last July, Lukas and me ordered HPs iPAQ hx4700 and only just today it finally arrived. Nice thing. I’m still looking at everything, so I’m going to post a deeper review sometime in the future.

But now back to my new toy ;-)

Learning by example

After getting through with Head First Servlets & JSP, yesterday I bought Programming Jakarts Struts just outof pure interest. You never know when knowing those things may come in handy.

Currently I’m somewhere in chapter 3 and already know quite a lot of things about struts (that I really like the framework is one of them – I should really try to do something Servlet-ish in the future). Chapter 3, for those that don’t know the book, is an introduction to Struts by example of a very simple online banking application.

And this gets me to the point: I’m a very practical person and I despise of doing lots of theoretical stuff. Usually I come quite soon to a point where I lose my interest because the topic gets to theoretical.

This is why I learn best using examples.

When I have to learn some database structure, I usually don’t even try to learn from the documentation. I just look at how the database is built to learn how to use it. That way, I’m doing something practical while still learning how to do the right thing. Only whhen I’m not sure somewhere, I’m going to look at the documentation.

The same thing with meetings. As soon as it gets redundant, I almose immediately lose interest. My brain hungers for more, clear information. If there is some, it just sticks. I seldom take notes and I seldom forget important stuff – just as long as it’s non redundant and somewhat visual.

So, the chapter three of the Struts-book is the optimal way for me to learn something as it’s expaining things by dissecting a complete application. This way I always know the big picture and a practical goal (the application) which helps me greatly understand and memorize the details.

And all this is the reason I so much like doing what I do at our company. Our philosphy has always been to try something out, never to think of being unable to do something, every time saying yes to some request of a potentional customer.

That way, I can always be on the lookout for practical solutions. I can always learn by example (the project I’m currently working on). In the last five years it seldom happened that I had to do something I did before. It’s learning, trying, erring, trying again all the time.

And as this is how I work best, we never failed so far to actually deliver what we promised to. From my very first CGI-script (“CGI? Never did that… but it can’t be that difficult”) over streaming satellite TV over the internet to Linux powered barcode scanners: It always worked out. And it always will.

Favourite Thunderbird Extensions

last time I talked about my favourite extensions to Firefox and while this list is outdated already (I’ve got some more on the list), I think it’s time for the Thunderbird list:

  • Enigmail is the all-you-need solution for encryption matters. Unfortunately, not many of my common adressees have GPG-keys already, but maybe that’s going to change. Important emails I’m sending out are signed.
  • QuoteColors is a must-have for me as only with this extension Thunderbird complies to point 7 on my list of features I want in a mail client.
  • ClearSearch re-adds the Clear-button to the search toolbar. It’s quite click-intensive to clear the filter without this button and it even serves as another indicator of whether a filter ist active or not (it’s disabled, if not).

So: Not many Extensions, but absolutely important to me. I wonder: What are others using? The same? More? Different?

Fix for comment spam?

Yesterday, asterisk* talks about comment spam and an easy fix to do it.

Reading the article gives quite a good insight on how those spammers work: They don’t seem to really request the page of your entry, but they only submit hardcoded values in some database.

This gets this seemingly simple trick to work. Inststead of reading the weblog page and submitting the real form, spammers still submit the hardcoded value, missing the additional form-element.

Unfortunately, this problem is easy to fix for the spammer: Just update the database with the new information form the forms. And I promise you: As soon as this hack gets more known (which is bound to happen soon as it’s so simple to impelement), they will update their scripts.

The logical next consequence would be to change this additional tag more often, leading to the spammers updating the index more often.

The ultimate consequence would be a script generating some kind of random cookie which is different on every request. This in turn would lead the spammers to actually request the form before sumitting it.

I don’t think, I have to name the consequences of that: The spam will stay, but the bandwidth needed will increase greatly. Instead of just posting, the spammer will also request the whole page.

And the spammer will certainly do that on all weblogs. Regardless of whether they deploy this cookie or not.

So in the end, this “fix” just makes the whole thing worse for all us bloggers.

Sorry. No solution. Or ist it? Convince me otherwise!

Explain This!

Would anyone care to explain me this:

stats.png

I mean: While I can understand that an entry concerning filesharing is very popular and while I really see the sense in the rdf-File being requested often, I can absolutely not understand what’s so interesting about suburban railways!

I for myself certainly find it interesting, but none of the people around me share this interest. Who would have thought that there are more fans of railways out there on the net than there are people having problems with their P800 phone…

Reading logfile analysis can be so interesting at times…

Oh and on another note: I would be really interested to know how many people have actually subscribed to the RDF-Feed and thus are coming back regularly to read what I have to write. So: RSS-Subscribers: Stand up and post a little comment here. A “I do” certianly suffices.

As the traffic really peaks whenever I post an entry, there certainly have to be some subscribers.

Web Programming with CSS

For the first time in a very long time, I’m able to use a completely de-table-ized design in pure XHTML and CSS for creating a little web-application in PHP.

While many people just quote less bandwidth usage and better maintainable HTML-Code as the big advantages of using pure CSS layouts, let me add another one: Extremely increased productivity for programmers bringing interactivity to the layout

It’s a real pleasure: Never was it so easy to just concentrate on the functionality. No layout-information creeping into the business logic because it’s the only way to get some stupid placeholder GIF into the layout. No more error-prone stitching together immense and complicated HTML-snippets. No more debugging what went wrong when building one of those complicated layout tables.

And of course: No more pulling out hears when having a look at the size of the generated HTML-Code

I’ve never been as productive in coding a web application than in this case where the HTML-code is clean and the design is where it belongs to: In the CSS (which I don’t have to touch (anymore – the whole thing happens to be written by myself – Richard isn’t that good in CSS yet))

If only all future projects would be CSS-only. It would make live so much easier…

Delete-Key in zsh

I’m a big fan of zsh. Besides it having an awful amount of features, it was this guide (called “User-friendly user guide”) that brought me up to speed on unix-shell matters back then.

So it’s only logical that my default shell is the one the guide is about ;-)

What annoyed me majorly was that in Gentoo Linux, the delete key did not work in zsh (unless of course you count outputing ~ instead of forward-deleting as “working”).

Finally I got around to fixing that.

Adding

bindkey    "^[[3~"          delete-char
bindkey    "^[3;5~"         delete-char

to your .zshrc enables your delete key on every thinkable keyboard. Finally!

SQLite on .NET CF

SQLite just doesn’t stop to amaze me. First, we got it to compile on our small ucLinux based barcode scanner where it not only works flawlessly, but extremely fast too.

Now I thought about using SQLite in a little PocketPC application I intend to write using the .NET compact framework. This after some very bad expirience with SQL Server CE

  • There is no useful frontend to modify the data in the sdf-File: There is no tool for the desktop (besides using SQL-Server and then replicating the data to the device which I actually got to work this march or so, but it was a major pain in the ass to set up and is no solution to me. I mean: Why should I install a whole SQL-Server just to get some test-data to a smart device?) and the little frontend on the PocketPC suffers from the small screen and the lack of a keyboard.
  • Despite everyone claiming it’s fast, it isn’t (though this certainly is relative. I’m sure, the marketing departement of MS is still conviced that it’s fast). Where some operations may be, others are not. Searching for strings is an example of extreme slowness.
  • Starting an application using SQL Server CE takes about a minute on a usual 400 Mhz PocketPC. Way too long to be used in production with customers.

So, using a leightweight local SQL-engine which is fast even on a 66 Mhz CPU without MMU sounded quite appealing to me. Just: How much work would it be? How well would I be able to integrate SQLite into .NET?

Knowing about the lack of features in P/Invoke on the compact framework and knowing that the SQLite API uses callback functions, I feared the worst, but fortunately, I googled before getting to work.

So, I found this project.

They provide you with a full-fledged ADO.NET driver for SQLite, so you can use all the database classes and components you are used to, while still profiting from the advantages of SQLite

Compiling it was easy (while they provide pre-built binaries of sqlite.dll and the P/Invoke-Wrapper sqlite_wrapper.dll, they do so only for ARM and the desktop version of Windows for x86, so if you want to use the emulator for developement, you have to build those two DLLs yourself – using eVC4) and a quick look (it’s already late now – I got up more than 17 hours ago, so I’m quite tired now) using the sample project here was quite successful: The application started (instantly, no wait) and displayed the data inside the SQLite-File.

So, the speed-problem is solved. What about the frontend? While I don’t know any Windows GUI frontends for SQLite (though I know they exist), I have already worked with the SQLite ODBC driver (it’s funny to think of that: Usually ODBC-drivers are just a middleware between the Application and the dtabase, but in case of sqliteodbc, the database engine is linked into the ODBC-driver. Strange) and of course the command line tool and the PHP extension. So for my purposes, I’m going to create the database using a PHP-Script on Linux and copy the .db-File to the PocketPC. As seamless as possible. No replication, no installation of servers, no nothing. Just plain old copy.