You know RvS is brain damaged ….

when you’ve got three tangos shoulder to shoulder and shotgun aimed shells do nothing at point blank, except hit the snow directly behind them!

when you’re running like a bat out of hell and can still snipe a tango 30m away with a snapped buckshot

when tangos can dance around a load of buck like Michael Jackson on stage

when hand guns are better short range weapons then a shotgun

when tangos are better dancers then shooters, are worse shooters then noobs, and more accurate then Hathcock, while sliding down a staircase backwards!

I could go on and on, but I’ll just say Raven Shield demonstrates much brain damage.

+1 simple relationals

On my way to the head, I was thinking about ways to improve the robustness of a program  that I’ve been tinkering with on the side. Simply put it defines an ordered set of roughly hierarchical data, that is integral to processing later based on certain groupings of it. The set is such a collection of information, that recalling it later would best be done through an associative container, where in the keys may be any unique attribute of the data set being processed, rather then having to be any given accessor.

The obvious solution to bundling the data, is to create an abstract record representing the keys that need querying, e.g. each objects attributes are expected to correspond to an unique instance formed by the data set. In thinking about how such a thing might be implemented without losing the speed of a hashed table look up; the first thought to come to mind, of course was the most simple and straight forward idea. If the implementation language was C, it would be trivial to throw together a set of structures for representing items in the data set, and wrap them in an opaque record that binds together a group of hash tables or balancing BSTs for each key type we want, which would then look up a pointer to the individual records, through a structure tuned for minimal memory usage. Second to come to mind, was a rather interesting tree structure to minimise cost for retrieving any given node. In which of course I remembered that this particular implementation case dealt with a certain language that traded such memory conciousness for a garbage collector.

On my way back to my work station, I thunk to myself, “Well hell, I just defined a relational data structure!”, and with the idea of running an SQLite database in process memory now floating through my mind, sure enough the API that I had envisioned, was little more then a relational algebra tuned to the problem domain being worked in.

The implementation language might lack an equivalent to Cs memory management, and gives no guarantee that the amount of copying and GC work involved wouldn’t grow exponentially with the data set size… but it does have a binding to the SQLite database, which is fairly handy, hehehe. So the obvious question is which way handles things more efficiently: relying on the language implementation to avoid unnecessary copying of memory, or going through the overhead of a lite weight SQL database.

Sometimes I love how these kind of things are so simple to work out in the course of short trip down the hall, lol.

QOTD 2010-04-12

There is a reason soldering iron handles are bright yellow. It will still not stop you from picking it up by the hot bit at least once…

source: /. 

The two things I rely on the most, are a command shell and a web browser… yeah. Over the years, these have almost become like meta-user-interfaces for me. The CLI allows me a very effective way to manipulate the file system, and while cmd sucks at everything it does, modern unix shells throw in enough to create a very powerful environment. The main cost in learning how to use the command prompt, is learning how to say what you want, rather then point at it like a child. In all my years, I’ve still not seen a file manager application that can match a proper unix userland and scriptable Bourne style shell. Web browsers have been a huge part of my life, since the WebTV era lol. E-mail. calendaring, task management, keeping up with the news, bookmarking, even my journal, is all web centric for me. 


Both a terminal emulator and a browser, dominate my screen real estate. After that, basically comes instant messengering, which is arguably the only GUI+Desktop apps I really use all day. Other software like geeqie and mplayer fall into special use cases. 




When you use software a heck of a lot, you learn to leverage it for every ounce it is worth. For example, vim is an extremely powerful editor, but if you only use the delete and arrow keys, you are wasting everyone’s time. I spend enormous amounts of time with text, so efficient editing of it matters to me: why spend an hour doing what software can do in seconds? Uh huh. My love for Bourne style shells, comes from the ease of scripting: whatever I can do in a script, I can do at the prompt; making arbitrarily complex tasks accessible. I’m sorry to say that Microsoft’s cmd is a pile of junk. PowerShell is improved, but still lacking compared to most unix shells o/. Web browsers are still very unevolved creatures, I enjoy chrome because it’s unobtrusive and actually tries to get out of my way; it’s also proven to be an order of magnitude more stable than Netscapes bastard has been over the years. 


I hope someday, before I’m blind and arthritis rittled, that web browsers eventually catch up. Short of (ab)using extensions, the only real way to improve upon the average web browser, is to abuse JavaScript extensively. Most web browsers still ship lacking basic amenities; and I don’t believe in using extensions to solve “Oops, to lazy to do it right” problems.

Google recently blogged a video showing off new features in gdocs, and it looks like much of what has been missing, is now coming promptly to Google Docs :-D. They don’t seem to have rolled out, at least to my level of access, but it’s looking good on the tiny screen.



I really have no love remaining for local office suites: they tend to be big, slow, expensive or time consuming to compile. Web applications can be made to work just as well, and with considerably less groaning involved. So, it is fair to say that I’ve really come to like web based solutions like gdocs, even if I’m not a big fan of all the hype in recent years about migrating to the ‘cloud’. Why should I put up with the bother of Microsoft, Gnome, Open, or K office, when most of the crap I care about, can be done on Google for almost zero maintenance?


When I have a document to get sorted out, I have the habit of selecting whatever method works best for the task at hand. Most often that is something I can hack at in vim, and then generate a suitable output for sharing. I don’t send Word files, I normally send PDF files and sources. That is a much better way of doing it, when you want someone to view the file, not edit it and send it back. When I expect someone else to be editing the document, I tend to employ gdocs over an office suite, because of Google’s sharing and collaborative features. Playing pass the pumpkin document is a morons errand compared to gdocs, and I reckon for some folks the publishing parts are handy. My interest is more so in the collab’ features, because that was the big incentive that brought me to gdocs in the first place. Now that those features are growing again, you can bet I’ll be putting them to use.


For me, Google Documents is just a means to an end: get the document done with minimal fuss. When I’m stuck dealing with people who wouldn’t know a DocBook from a troff, let along what the heck version control means… it makes life a lot easier without complicating MINE! The level of control over HTML/CSS offered with the word processor, even makes it easier for me to integrate gdocs into my work flow when more power is required; I’ve yammered about that before. If anyone has ever had to feed Word files through pre or post processing phases, uh, you will enjoy living with Googles method lol. Since I rarely need to do rocket science with spreadsheets, I’ve never had much to complain about their spreadsheet app. Recently I’ve used gdocs word processor and spreadsheet on numerous projects, including dependency tracking for our EPI Core Services package, and it works darn good for what we need to do.


My only big gripe over the years has been the lack of Google Talk integration with gdocs, compared to GMail. In our spare time efforts with EPI, GTalk/XMPP actually became our norm for development meetings, after efforts to deal with AOL and Microsoft’s solutions, only added extra interoperability problems. At least I can say ‘gdocs’ and people will usually know what I mean, if they know about Google Documents in the first place lol.


The video Google posted, demonstrates a much better way of dealing with the multiple editors problem then what’s been classic with gdocs. I can still remember a time when it was virtually impossible for two people to edit the same file simultaneously, haha. I am very intently interested in seeing these changes rolled out, and definitely have to give the drawing tool a go. Normally I use Dia for any diagramatical needs, and the GIMP for heavy lifting; if Google’s drawing app can get the job done, it really would save me the effort; we’ll have to play and see, hehehe.


Now that gdocs can handle documents, presentations, spreadsheets, forms, and drawings. I reckon fwiw, it is almost a fully functional office suite. I can’t say that I’ve used the presentations app, since I’m naturally against death by power point, but it would be my first stop if I needed to put something like that together.



Spending huge amounts of time draped over MS Word 2k2, taught me the value of using decent tools; where as learning how to use better tools, is what taught me the value of leverage software in general ^_^. Most of the time, I employ LaTeX or DocBook for large projects (the kind you don’t want to see the inkjet taxes on), but I will occasionally use gdocs for simpler documents of my own. When it comes to word processors, Google Docs is no worse then the rest, and in  my experience has improved more over the past few years, then Microsoft and Suns/Oracles solution. The ease of sharing and editing the doc with others, has made it one of the few officewares that I actually enjoy, except for the lack of vi and emacs keystrokes of course o/.


I’ve no real brand loyalty to Google, even though their software makes up a large part of routine. Sometimes it’s simply the best glove available :-/. For as often as this software has helped me out, I’m happy to use it when it fits.

Dealing with side-seat drivers

My way is to actively test and annoy, until she learns the meaning of the words “Shut your gob”  ^_^.

I’ve been treated like an animal often enough, that I’m not interested in being treated like a machine.

Today was a refreshing change, I spent most of it glued to my desktop: three command prompts open, with pidgin tabs, chrome tabs, and mplayer occasionally filling in the rest of the space :-D.

I basically rewrote the recipe parser for tmk, bringing it up to the specification. Generally I’ll avoid such leg work, except when it’s a simple grammar or no suitable tools are available; and tmk is very simple. Command directives and much of the expansion system were also implemented today, making tmk almost complete enough to compile a project. What needs doing, is proper macro expansions (tmk vars don’t work yet, but the rest of the expression syntax does), so that `magic` variables acline to makes automatics can be created. Once that is done, creating the desired directives is a fairly trivial process; hooking them up to language/tool independent and developer serviceable backends being a piece of cake.

While testing the directives code, I needed to come up with a temporary error message, one that had to be a bit absurd: being as it was intended for testing the domain in which the error applies, rather than an already iron clad reason to use any given message To that end, I came up with one that would really stick out among the other diagnostics: “{file name}:{line number}: the bad year blimp has landed”. This, as some might instantly see (;), is a slight homage to Mel Brooks’ Spaceballs, more specifically to the scene, “Uh oh, here comes the bad year blimp!”, in which Lone Starr calls for the switch to “Secret hyper jets”. And of course, I had to load that film into MPlayer and my DVD drive while I wrote code xD.

When developing something, I typically do a large amount of in flight testing to verify the codes behaviour. My efforts today have been no different, testing time perhpas, making up more than 60% of the time I spent working on tmk. It’s not unheard of, to find XXX marked comments denoting details about some edge case that hasn’t been covered, and a note to kick me in the head if that theoretical hotspot ever occurs; such things usually happen when I’m extremely pressed for think-time, due to (ofc) being interrupted every upteen times. At which point, priority is usually on implementation speed over perfection. Today, I was lucky enough to be able to work largely uninterrupted: a rare pleasure.

For me, programming is a very relaxing effort. It’s one that I can absorb myself into the art and craft, designing programs bit by bit, constantly improving them with each iteration, until my aims have been achieved, or I’ve passed out. Despite being a very exhausting task to keep working at, I rarely find it to be an intellectually arduous one, so much as a test of endurance: to stay in the zone for long stretches and deal with the effort required for the, eh, shall we say more paltry and menial aspects of coding a decent program. There are some parts of programming that really do tax the brain, the fun stuff to work on solving ;). On the other side of the coin of course, is a lot of things are more straight forward to sort out. Many aspects of programming overlap both the engineering and the every day groan of getting ti done. Both are needed, in any non-trivial application, that you’ll be seeing more than a couple hours of use with.

That being said, being able to look at things from several vastly different directives, does help a lot. Because of the amount work needed, it seriously helps if you can stay in the zone for a good 6-8 hours or more per sitting; but becoming tunnel visioned on the creative and problem solving parts, is generally a bad thing. One must slip gently through the mind of no mind, and know how to leave your box behind. There can be an insane amount of stuff to deal with in some programs, and I find that the level of such, increases both with the complexity of the problem and the pitfalls of the language utilised. For example, C, lisp, perl, and python can each express many problems quite well; yet each excels at expressing certain ideas more naturally, or with less effort, than the others. I actually was missing lisp for a good hour today lol.

Days where I can just sit and focus on getting stuff done (in peace) are terribly rare here. When I get into work mode, just get out of my way, or I’ll be quickly annoyed. I don’t like it when people waste my stack space.

In one of the rare moments that I actually stop to read my RSS feeds techy side, I noticed that WebKit2 has been announced. The only thing I can’t help but wonder, is what the flub does a layout engine have to do with processes? Not a damn thing! Personally, I would appreciate a separate API/library for such separate of interest: in particular, one not tied directly to WebKit lol. Ok, so maybe I’m crazy.

Whether you are a user or a developer o/, nether Xembed or the various (oft’ fugly) incarnations of Microsoft COM really make anyones lives just easier. Under X based systems however, it is possible to mate separate processes running WebKit into a central controller without to much heartache; there are already some bare bones browsers out there worth looking into, and patching when they don’t measure up. Non however have become common place, and even among PCs, there are really only a handful of common web browsers out of dozens of products to choose from.

Somethings are always going to be closely bound; first takes of an idea, even more so an idea geared for getting the current project done, tend to do that even more so. Personally, I will just be happy when there are less web browsers out there that suck… and keep on sucking.

Like clockwork it seems, I’m awake, and it was just a few minutes before 0700 local time. I had tried, and failed, to make it a habit last year, or waking up early; but recent stuff has cemented it into my internal ordering. It’s like I just start waking up until my eyes flutter open wide awake.

I was dreaming that I was at church, and the helping the pastor look, until we finally found some important clicker that got lost lol.