Introducing Ultimate Hacking Keyboard

I’d like to take the opportunity to show you the trailer video of the Ultimate Hacking Keyboard, a high-end mechanical keyboard of which I’m the lead developer. Our keyboard is going to be kickstarted soon so you’re more than welcome to share it, follow us and subscribe to our list to get notified when our campaign starts. See you on UltimateHackingKeyboard.com! Cheers!

Stick your file to a specific path with stickfile

Update (2011-04-22): Zach let me know in the meantime that there’s a much easier way to implement stickfile in BASH:

Moral of the story: I should have searched for inotify command line which would lead me to inotify-tools which contains inotifywait.

And now to the original post:

My employer uses SonicWALL NetExtender for his VPN needs. Saying that I’m not a fan of IPsec would be definitely an understatement, but my major problem is that NetExtender overwrites my resolv.conf upon every connection which screws the hostname resolution on my LAN from my laptop. chmoding or chowning resolv.conf doesn’t help because it gets re-chowned and re-chmoded by NetExtender.

I was thinking about overwriting resolv.conf on a regular basis from a script but it seemed rather inelegant. But how should I do it otherwise? With inotify, of course.

Here’s the script I’ve written which you should save as “stickfile” to a directory that is featured in your $PATH.

After I created a valid resolv.conf and saved it as /etc/resolv.conf.orig I only had to execute the following as root before starting up NetExtender:

stickfile /etc/resolv.conf.orig /etc/resolv.conf

Let’s backup our tweets using twitter-backup.sh

Update (2010-10-23): I’ve just uploaded twitter-backup.sh.

I’ve written a very simple BASH script to backup my tweets.  It’s very easy to use:

$ ./twitter-backup.sh
Usage ./twitter-backup.sh TWITTER-USERNAME
$ ./twitter-backup.sh mondalaci
2010-09-05 17:46:04 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=1 [40899/40899] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/1.xml" [1]
2010-09-05 17:46:06 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=2 [42928/42928] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/2.xml" [1]
2010-09-05 17:46:07 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=3 [42753/42753] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/3.xml" [1]
2010-09-05 17:46:09 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=4 [42784/42784] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/4.xml" [1]
2010-09-05 17:46:11 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=5 [42872/42872] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/5.xml" [1]
2010-09-05 17:46:11 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=6 [6465/6465] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/6.xml" [1]
2010-09-05 17:46:12 URL:http://twitter.com/statuses/user_timeline/mondalaci.xml?page=7 [75/75] -> "twitter-backup-mondalaci-2010-09-05_17-46-03/7.xml" [1]

Overclock.net Mechanical Keyboard Guide Atom Feed

I use RSS / atom feeds pretty much all the time to minimize information overload but the Mechanical Keyboard Guide of Overclock.net doesn’t make my job any easier because they don’t provide any feeds and the thread moves very fast.

I couldn’t tolerate this anymore so I’ve created a webscraper that provides atom feeds for this thread. Parsing HTML into a DOM and executing XPath queries on the DOM is something that I have a vast amount experience with and this project didn’t take a long time either. I’ve been testing it for more than a month and it’s rock solid. The only glitch is that sometimes posts are randomized between very short time intervals which is a minor inconvenience.

The script below (also available on GitHub) is executed on a hourly basis by cron and its content is saved to http://monda.hu/overclock-net-mech-keyboard.xml

DohanyzoBuszsoforok.hu: Több mint 1000 látogató egy nap alatt

A DohanyzoBuszsoforok.hu indulásakor küldtem egy levelet a bkvfigyelo.hu-nak, hogy megemlí­thetnék az oldalt egy posztban. Nem érkezett a levelemre válasz.

Aztán idővel történt, hogy egy buszon utazva a sofőr dohányzott, én pedig szokásomhoz hűen másnap küldtem a panaszlevelet a BKV-nak, amelyben a sofőr nem ismerte el a tettét. Nem adtam fel és végsősoron megbűntették a sofőrt, de nem ez az érdekes, hanem az, hogy ez egy bulváros sztori.

A sztorit beküldve gondoltam, hogy megjelenik a bkvfigyelőn, de azt legszebb álmaimban sem gondoltam volna, hogy több mint ezer ember nézi meg a DohanyzoBuszsoforok.hu-t aznap. A hozzászólások többsége mocskológó, ami elég elszomorí­tó, de volt köztük olyan akinek őszintén tetszett az oldal és azt í­rta, hogy a jövőben használni fogja és nekem csak ez számí­t mert ez pozití­v változáshoz vezet az ügyben.

Sokaknak szemmel láthatólag szúrta a szemét az eset. A legvokálisabb “rajongóm” szerint nincs életem ami elég érdekes megállapí­tás annak fényében, hogy arra ment el az illető napja, hogy több tucat mocskolódó hozzászólást í­rjon.

Az eset kapcsán igencsak témába vág Seres Mária “Áldozat?” című í­rása. Borzasztóan tisztelem őt azrét amit tesz. A jövőben próbálok több aláí­rást gyűjteni az általa indí­tott kezdeményezésekhez. Egyelőre kicsit több, mint egy tucatot gyüjtöttem.

Coder Keymaps closed

I’ve started Coder Keymaps a long time ago to create a special keyboard mapping that’s the best for me.  That idea is to map Hungarian characters in a special way using the Windows key.  Take the standard US layout, keep a Windows key pressed and press an alphanumeric key which produces an accented character on Hungarian keyboards and voila: the key will produce the relevant Hungarian character.

That was the basic idea but I went further about two years ago when I realized that hand travel distance is much longer than it’s supposed to be in many cases.  When writing code one’s right hand must move often between the alphanumeric keypad and the navigational keypad.  To alleviate this problem I decided to map the whole navigational block to the alphanumeric block through the Windows key.

I’ve used the above configuration with great pleasure and it improved my efficiency for almost two years.  Unfortunately the X keyboard drivers must have been changed in the last two Ubuntu releases because my xmodmap keymaps stopped working.  I knew it in the beginning that xmodmap is outdated and XKB is the future but it wasn’t really urgent to port Coder Keymaps to XKB so I didn’t do that.

Due to the pressing need to use my beloved mapping I’ve made some efforts and had some online chat with Sergey Udaltsov who is very knowledgable about XKB.

Long story short, it seems that it’s impossible to create such an exotic keymap on Linux.  Not that it’s not possible to create it with XKB, but various GUI toolkits, such as GTK+ interpret the mappings in strange ways and the mapping wouldn’t be consistent accross toolkits.  I’m sure that this can be solved by modifying the X keyboard driver or the toolkits but as you may suppose it’s a heroic work.  Not only that, but this is an OS-specific problem and there are no standard solutions that truly work.

I finally decided to attack the problem differently by creating a keyboard hardware that has limitless power regarding remapping.  It’s actually not a new idea of mine, it’s about two years old.  The prototype is in development and it’s very innovative in many ways.  I’ve gathered a small, but knowledgable team and we’re progressing rapidly.  I wanted to have a working prototype by the end of this year but I’m not sure we get there in time because rapid prototyping is expensive and the delivery of rare electronic components take time to arrive to Hungary.  But no matter how long it will take, we’ll never give up.

As a result of the above I don’t wanna devote any more time to Coder Keymaps.  The project has been closed.

chnorm 0.3 released

You can fetch it while it’s hot.

I’ve fixed the output of the –help option which crashed due to “invalid” characters in my accentuated name.  Thanks for Tamás for letting me know about this bug!

Dohányzó buszsofőrök megbí­rságolása

Jópár alkalommal küldtem már levelet különböző Volán Társaságoknak amikor azt tapasztaltam, hogy valamelyik sofőrük dohányzott a buszon és a válaszlevélben tájékoztatni szoktak róla, hogy a sofőrt megrovásban részesí­tették.  Ez sosem töltött el igazán elégedettséggel, mert szerintem minimum egy párezer forintos pénzbüntetés szülne jelentős visszatartó erőt ahhoz, hogy az illető a jövőben se gyújtson rá arról nem is beszélve, hogy törvény alapján is pénzbüntetésben kellene részesí­teniük a sofőrt.

Az elmúlt hónapokban küldtem pár levelet bizonyos szervezeteknek, mint például a Levegő munkacsoportnak, és az Országos Dohányfüstmentes Egyesületnek, hogy hogyan lehetne elérni, hogy pénzbüntetést rójanak ki a sofőrökre.  Az illető szervezetek vagy tipikusan nem válaszolnak vagy egymásra mutogatnak.  Megértem, hogy nem ez a világ legfontosabb problémája, de amit meg tudok tenni azt megteszem az ügyben.

Az azért örömmel töltött el, hogy Wittich Tamás, a Fogyasztóvédelmi Hatóság vezetője válaszolt a tudatosvasarlo.hu-n feltett releváns kérdésemre.

Attól függetlenül, hogy nem mindig rónak ki bí­rságot a vétkező sofőrökre azért azt örömmel könyvelem el, hogy azokon a buszokon amelyeken utazni szoktam és egyszer már küldtem levelet, ott azután soha nem szembesültem dohányfüsttel újra, í­gy azt hiszem a megrovásnak is lehet visszatartó ereje.