Analytics Tracking Code

Thursday, October 8, 2009

Intel C Compiler, GTK and OpenBSD on Windows

I am currently working on the windows port of the Volume Management application that has consumed my waking moments for the past several months.

I wrote the application using GTK+ for a number reasons:
  • Wanted to learn GTK
  • Portabilty (Although a LOT of this is on my shoulders)
  • I wanted to learn to apply the Gnome HIG
  • I wanted to
  • I don't want to write it in
  • Because I can
This is all well and good while running on my linux desktop, however, as I knew from the beginning, I would need to port the application over to Microsoft Windows. Since I imagine that nearly ALL the target audience of this application uses Windows, this is REALLY important.

To make this happen, I have written a decent initial implementation of the application for my linux desktop, copied it to the Windows partition and opened it up inside of Visual Studio (with nice project files and all). Now comes the really quite hard part.

GTK is not native to Windows. So looking at the the GTK site, it is moderately evident that one is expected to build their Windows apps from within a linux(y) environment via some sort of cross-compiler voodoo.

Hmm, what to do.

I happen to own a rather expensive license to Visual Studio 2005 Professional. Shall I just leave it and head back to linux or, shall I try to get my program built against the mish-mash of binaries available from or should I go for broke and setup a complete build system for all of GTK and its dependencies?


A number of years ago I tried to do the whole dependency tree thing in an attempt to get FreeOrion built in Visual Studio. A great deal of time later and I was never able to get a binary which would actually start. Then again idea of compiling windows software in linux seems a bit silly, kind of in the realm of "just because you can does not mean you should". And this has me wondering about the quality of the binaries available at, they are probably fine except I have no real auditing trail for their construction.

So after an hour or so of deliberation, I have concluded that come hell or high water, I shall make my application run from the ground up building all the necessary binaries from scratch along the way. Visual Studio really shines here with built-in dependency management. If I change a dependency, it triggers a rebuild of all the dependent components right the way up the tree.

Next problem though is the compiler. While the C++ compiler in Visual Studio is getting markedly better with each release, the C compiler is rather out of date and is likely going to remain this way for ever and ever. Also the C runtime is currently missing a lot of the new goodness available these days. For instance asprintf (which gets rid of a lot of head aches, especially when customizing SQL calls).

The C runtime is something relatively easy to work with, as I can just create my own DLL of any missing functionality. OpenBSD provides what I consider to be the most desirable implementations for this kind of stuff, so I have pulled strlcpy, strlcat, asprintf and others into what is now bsdc.dll

And lastly is the compiler. I thought about this long and hard, and finally concluded that I really want to be able to use the latest innovations in C, so I bit the bullet and bought a license to the Intel C compiler. The installation is easy and switching compilers is straightforward from inside the IDE.

Assembling the project is nearly 50% complete at the time of this writing, and I will post with an update as to how it all goes together when I get my app finally running.

Also I will publish the build environment when it is ready as well in case there is anyone else out there who wants to do the same thing (inkscape? pidgin? evince? gedit?). It would really be nice to have a serious development environment available for this kind of thing.

Wednesday, September 23, 2009

Hamster and further topics

I am thoroughly disappointed in the Gnome folks for posting a pic of the new time tracker applet in 2.28 with the title "Hamster". Why should a project with that name be allowed into gnome proper. That said I do quite like the applet. I think.

Anyways, the much anticipated Gnome 2.28 was released a while ago. I have been running the development version of OpenSUSE for the past while, which has been more or less tracking the development of Gnome so by this point, all I have to say on the matter is, meh.

It's a desktop environment, and for somethings it meets my needs, and for others, I couldn't care less.

In unrelated news, I have recently filed a shwack of bugs against opensuse factory in an attempt to stabilize the desktop for myself. I have not been terribly happy with the overall stability of the development versions of opensuse, and am constantly running into stability problems an a variety of quirks.

That said, I am strongly considering moving to OpenBSD for precisely this reason. While I like to be on the bleeding edge of things, I have had quite of enough actual bleeding thank you very much.

So, in conclusion, hamsters should be shot, instability = bad, and my laptop is burning my tummy.

Tuesday, September 15, 2009

Posting to blog from links

Well, here is the first time that I have done anything like this. The latest milestone from OpenSUSE is broken. Apparently they patched HAL with a crummy patch or something and now when you boot the OS hal crashes and you cannot access your mouse or keyboard while X is running....

Not the slickest thing that I have ever seen.

Anyways, I booted to the commandline rather than start X and am posting this comment from the links browser.

I couldn't tell you if I like the experience, but it is definitely a first for me.

Anyways, this is not meant to be a profound or indeed informative post, I just wanted to see if I could actually do it from the commandline line in text mode, and it turns out that I can.

Now I am going to go to bed just because it is that time of day.

So long.


Wednesday, September 9, 2009

Accuracy of a GPS in a Car

So I have been having fun the past two days driving around Canyon Meadows (here in Calgary Alberta) with my GPS collecting information to post to Open Street Map. Although I have used the GPS for most of the summer as I scooted across the country with my bike, I have not done much with it in terms of actual mapping.

Now that I am officially back in town, I figure that a little bit of mapping would be fun to do, after all there is hordes of information missing even from the community within which I live. So last night, one of my boarders and I hopped in the car and drove the alleys of NW Canyon Meadows. I was slightly disappointed to discover that when I plugged the data in JOSM, the track was jagged and in areas, clearly wrong. What could be the problem? I have used this before to map the town of Empress Alberta without much difficulty.

It occurred to me while lying in bed that maybe the problem had to do with where the GPS was stationed in the car. On our midnight saunter, the gps was held in my passengers hand somewhere around or below his lap. Could this cause the problem? Maybe the unit needs better line of site to the satellites, and even the moderate amount of flesh and metal in the way was interfering with this.

Perhaps this is bang on because I just got back from another little jaunt where I had the GPS sitting on the dash. The result is considerably better and dramatically smoother. So the moral of the story is that the best place for your GPS while in a car is somewhere near the dash or somewhere with more or less clear access to a large chunk of sky. I suppose the more sky, the better.

As a side note, the unit was reporting on average +- 3 m the second time around.

Monday, August 31, 2009

Open Office needs document themes

I just spent a few minutes looking over the latest pile of poop included with opensuse 11.2 M6. My goodness, this is a poorly thought out user interface design. The application I am talking about particularly is writer.

So I want to make a nice looking document with a decent title page and some nicely coloured headings all laid out with matching font choices. I do not want to spend more than a minute or two thinking about these things either. Please just make this the default. I have to say I deeply prefer using the latest microsoft office compared to openoffice. Document themes is a brilliant feature of office 2007 and it takes away the vast majority of mucking around that I have done with open office.

To make a document in open office look pretty this the primary styles dialogue that you are given to work with:

Like seriously, what the hell is this. What the hell am I supposed to do here? Why am I shown this window, I can't do a freaking thing with it?

So I double click on the the first thing that jumps at me in the list, nothing happens... hmmm ok, so I right click on it and I am presented with a deeply useful menu saying two things

  • new...

  • modify...

I can figure out the "modify..." item, it probably modifies what ever the default is, but what the hell does new... mean? Why are there trailing dots? If I click new... does it make a new default?

Anyways, I don't want new things, I just want a pretty document, so I click modify with the hopes of encountering a switch somewhere which says enable pretty document. No such luck. I am presented with a second almost utterly useless window.

Now seriously, what the hell am I looking at here? Look at all those damn tabs up there!

Moral of the story is I really don't like to use open office, it is effectively a poor clone of an older microsoft office in the ui realm. Am I a microsoft guy? No. Have I hunted for things in their new ribbon layout thing? yes. Their office suite does what I need of it and makes an honest attempt to get out of my way.

Thursday, May 21, 2009

Telus and google apps

If you are one of many people or organizations in Canada which use Telus for your domain hosting provider and are interested in moving your email system to google apps gmail service, then you make note of the following.

Even after correctly setting up the MX service inside of the telus DNS web applet, you will need to give a call to Telus themselves and ask them to remove your domain from telus' internal sendmail list so that other people still using telus for the their email service will be able to send you emails.

Otherwise what happens is that when someone using the telus email system tries to email you, telus thinks that it already knows how to get ahold of you and sends the mail internally instead of properly resolving the the DNS information. Many emails will effectively disappear, or be bounced back noting that the user cannot be found.

You may as well ask for the shared hosting support number right off the bat, otherwise you may be explaining all this to deaf ears any number of times until you get someone who knows what you're gibbering about.

Please enjoy responsibly

Nokia 6301 and Linux Part 2

I noticed that I have a couple of dozen visitors hit my earlier posting on synchronizing linux systems with a nokia 6301, and given that I am on a bit of high after just posting my previous note about connecting to the net through the the GPRS and bluetooth functions on the nokia 6301 I figure I will follow with my latest discoveries fiddling fun.

I must be turning into a google zealot because everytime I turn around there is another google service available which I want to twiddle. Let me explain.

Currently Evolution does not support synchronizing itself in any sane fashion against a syncml device like the nokia 6301. So all my contacts living inside my client have become increasingly disconnected with the contacts listed with gmail and the contacts that I have on my cell phone.

Obviously the context between these three application is somewhat different in each case. Like I often want to be able to grab a map of my next intended target from the evolution address book, but rarely want to do this inside of gmail itself, and I usually cannot be bothered with any of that rigamarole on the cell phone. Nevertheless, it would still be nice if they were synchronized.

So here steps in google to the rescue with its online syncml service, along with instructions on how to configure the sister device of the 6301 (6300 in this case) to use its service. Note that the Nokia 6301 and 6300 are S40 series Symbian OS devices.

I won't go into the details of the configuration since they are adequately specified elsewhere, but figure I will get to the point, thanks google for providing a working sync service.

Next I want to point out that gmail is available as a binary application on most recent nokia phones including the slightly older models such as the 6301. As a side note, this works with Google Apps as well.

Check out for all the goodies, including google maps.

Sigh, I can feel the tendrils of zealotness swirling around me... Somebody kick me if I go too far.

Anyways, while this isn't exactly a Nokia 6301 and Linux article, the same results can be achieved, so I figure it is a good enough equivalent.

Linux, bluetooth, and GRPS internet

Currently I am sitting in Austin's Neighborhood Pub across the street from my little condominium here in Calgary, Alberta. Although I can see a number of wireless networks in the area, none of them are unsecured and for their own reasons, the pub itself is not particularly interested in providing wireless connectivity to its patrons.

So this leaves me with the need to be creative in how I connect to the internet. What's more, in a couple weeks I am leaving for my second major cross country bicycle tour of Canada, and will likely be more or less completely away from the gentle caress of the net for most of that time.

Anyways, as I mentioned, I need to be creative with this whole connectivity thing, and my solution is via bluetooth, to route packets through my cell phone and connect to the net via the phones GPRS (and EGPRS in some areas) data connection.

The thing that impressed me is that this technology is alreadly quite nicely supported in linux, albeit with a bit of work on the commandline (not much, just check out pand, bnep, and of course ifconfig and dhclient). If you want some fairly superb documentation on this check out the bluetooth article gentoo wiki.

I imagine that other operating systems like the BSD's would support this as well, but I haven't confirmed it.

Congrats to the bluez folks for delivering a working network bluetooth stack for linux.

As a side note from what I read on Dan Williams' Blog, this functionality will eventually make its way into network manager itself sometime around the release of 0.8.

This makes me want to move to a phone that actually supports 3g data connections to make this all a bit faster than dialup... However, at this time there is nothing available on the market which will do everything I want from a phone (3G. UMA, Bluetooth and supports a native binary gmail application). My current Nokia 6301 does all of this except the 3G thing, so I am going to stick with it for the time being.

Take Care, and hopefully I will post back here before I leave for my tour, but then again, even if I don't then so be it, I will be able to post from the road.

Please enjoy responsibly

Thursday, April 16, 2009

libevent and pkgconfig

The latest trunk of libevent now has pkgconfig support due to a quick patch I sent along earlier today.

Oooh, the majesty.

httperf update April 16, 2009

I have been accused of ignoring the fate of httperf recently. hmmm. Well, fair enough, it's certainly been a while since I committed anything to the repository.

That said, httperf has hardly left my thoughts.

I am pretty familiar with the tool at this point, and to be quite honest I am more than a little bit frustrated with it's design. Take a look for yourself! It's got a quite a few weird design concepts built into it, include c-ized objects (come now...), an Any type (oh good), it's own event loop implementation, it's own timer implementation (which at least doesn't leak memory since I re-wrote it) and it's own http implementation. It seems to come from an era before the advent of code re-use... (No offense to David Mosberger)

That said, it does implement the workload generator aspect of it's design quite elegantly. Differentiating between sessions, connections and requests is quite a useful as well.

Anyways, I have been busy recently ripping the guts out of httperf to the point where it is hardly recognizable any more.

The event loop, timer and http implementations are going away javascript:void(0)in lieu of those built into libevent. The core of httperf and the stats collection are moving to their own shared libraries, and the workload generators are each moving to distinct binary files.

Sound good?

Wednesday, April 8, 2009

Master of Orion 2 and Dosbox party

My friend Tristan and I have been fans of Master of Orion 2 for well over a decade at this point. Personally, the game is within my top three all time favorite games (also including Crusaders of the Dark Savant and Close Combat 2).

Anyways, a long time ago, we discovered that network multiplayer of MOO2 was deeply slow and sucky (like impossible to play for a protracted period of time). The games we have played against one another have either been hotseat or deeply time consuming and resulting in no real conclusion.

Well, no more. I finally got off my butt in regards to this issue this week and managed to get MOO2 running quite nicely in Dosbox. This resulted in us spending about 19 hours over the course of the last weekend playing the game the way it was meant to be played (to the bitter end of course, and several times over to boot)!

Anywho, this worked so well, that I am currently writing an NSIS installer which will pull all the necessary components off of the install CD, as well as properly configure DOSBOX such that nobody else needs to go through the decade long pain in the ass that we went through ever again.

Basically, what I have so far asks for the path to the install CD, copies the DOS only files to the HD, patches the game and sets up a local copy of dosbox to run it.

Later I will write a launcher which will get the dosbox environment running in some sort of sanitized location and execute various cli switches to configure the gameplay itself.



Tuesday, February 24, 2009

Current Projects - 2009-02

So February is rapidly drawing to a close and I figure I should make a note on the status of the various projects that I am working on.

To start with, it is currently 3:30 AM and I am, for the fourth or fifth time this week trying to get firefox to install a file to an specific protected directory (system32 on windows XP and Vista). The problem is that firefox is specifically designed these days to block this kind of behavior (especially dealing with the whole UAC thing).

Anywho, I am also managing a VPS transition for a small manufacturer here in Calgary. Lastly, I have 3 small contracts for web sites with various companies here in town.

Not only that, but I am also working on my Landmark Introduction Leaders program, which takes it's time.

So lots of stuff going on at once. Never mind working on httperf in the background too (only a couple dozen lines written since the beginning of the year).

I feel that I want some minions.

All in pursuit of having more freedom than I know what to do with. (Hence the bike tour this summer).

Later Alligator.

-Ted Bullock

Saturday, February 14, 2009

A spin with gnome-do

As the title of the post indicates, I have been playing around with the gnome-do tool. And so far I really do like it.

For those people who aren't familiar with the tool, it's an application (written in mono I believe) with which translate fairly simple commands into a useful result.

For instance, when I summon the gnome-do program and type tristan, I can either choose to start a chat with him or send an email.

I especially like how I don't particularly need to take my hands off the keyboard in order to do something on the graphical screen.

So I removed the gnome menu from my desktop and will give "do" a whirl for the next month or so.


Friday, February 13, 2009

Writing that I love....

I was just reading "Last Chance to See" by Douglas Adams. Like most of his work, his writing once again proves to move almost orthogonally to the normal train of thought.

For instance,

Virtually everything we were told in Indonesia turned out not to be true, sometimes almost immediately. The only exception to this was when we were told that something would happen immediately, in which case it turned out not to be true over an extended period of time.

RIP Douglas, you're still in my heart.

Wednesday, February 11, 2009

New bike trip scheduled

As many people who follow what I do in the world know, I am a former cross Canadian cyclist and manage my own personal website as well as a cool community project called Wheels in the Water. This summer I am planning my second tour of the country by bicycle.

I am leaving from Horse Shoe Bay in Vancouver on June 3, 2009 and will be arriving at Cape Spear at noon on September 9, 2009.

You will be able to follow along with everything between now and then via this blog, as well as my feed.


Contract to develop firefox extension

I have wanted to be part of an open source software development business for a long time. Ha. I'm quite giddy right now, because I just happen to own one.

I have a number of little development contracts out right now to develop a variety of tools, website extensions and generally muck about with technology. What's really cool is that I am using exclusively open source tools and environments to do the work in.

Ha, this great.

So long, and later.

Thursday, February 5, 2009

On the way to New York and a summary for the week

At this moment, I am sitting in the secure boarding area of the Calgary International Airport awaiting my flight (connecting through Salt Lake City) to New York. Thinking back on the week, this has been pretty interesting as far as these things go.

I have several contracts running in parallel at the moment (a couple websites in addition to a couple more hardcore kernel projects).

The most interesting (steepest learning curve) was setting up a VPN for a small carpentry business here in town. Granted, I want to move away from the IT end of the software world, it was very interesting nevertheless.

Anywho, we're now boarding so I am wrapping up.

So long, and later :)

Sunday, January 25, 2009

More on move

As I had mentioned in my earlier post about the re-organization of, some people noticed that my old blog location (directly at was still available, but just wasn't being updated with new posts.

Problem is that those pages have been referenced by the search engines as well as a multitude of links scattered around the internet. So for the time being I set up redirects to the equivalent pages on at the new location (

Anyways, the moral of the story is that the top level of is going to remain as a redirect for the next couple of weeks until the majority of the traffic that was hitting my blog, shifts to this new location.


Saturday, January 17, 2009

Pulseaudio Stereo Server

Ever since the speakers on my laptop decided to die, I have been looking for ways to get audio out of the machine.

There are a couple options:
  • Don't have sound
  • Use headphones, or a speaker connected to the headphone port
  • Use a network sound server
Given that I love the concept of tinkering around with weird technical thingamajigs, I decided to give the latter a try.

So here is what I want to do.

My mythtv frontend in the living room is connected to a very decent speaker system, also, there are other "always on" machines around the house which are hooked up to speakers.

I want my laptop to auto-detect the existence of the sound systems on these machines and connect to them at a push of a button, then route all of my computers audio through those speakers.

Anyways, I have not been able to get my laptops pulseaudio client to connect to a system wide instance running on the media server. If anyone has gotten a similar system running, I would love to hear about it.

Let me know.


Thursday, January 15, 2009

Install mythtv on openSUSE 11.1

Last night I had one of those tinkering fits that occasionally over take me, and I updated my mythtv operating system to openSUSE 11.1. Since there aren't any really good instructions for this procedure (even the mythtv wiki is a bit stretched), I figured I'll post my instructions here.

My backend (and frontend) machine:
  • Pentium D 920
  • 1Gb Ram
  • Hauppauge PVR-350
  • 900 Gb hardware RAID 5 (4 x 300 Gb) with Areca ARC-1210 controller
  • Geforce 7300 GS
With the exception of the video, all the components in the machine here have good out of the box drivers.

Anyways, I chose the basic X11 installation from the DVD, since I wanted to avoid installing too much extraneous software.

The majority of the install is done from the command line so here goes (As best as I can remember):

zypper ar
zypper install mythtv-backend mythtv-doc myththemes mysql
rcmysql start && mysqladmin -u root password mysecretpassword

mysql -u root -p < /usr/share/doc/packages/mythtv-doc/database/mc.sql

mysql -u root -p mythconverg
grant all on mythconverg.* to mythtv@"%" identified by "mythtv";
flush privileges;

Then with a running X session run the setup program, and there is plenty of documentation available for this on the mythtv wiki


Next I created a user "myth", installed gdm, and configured the autologin, note that no password was set here for the user "myth"

useradd myth -m
zypper install gdm
sed s/DISPLAYMANAGER="xdm"/DISPLAYMANAGER="gdm" /etc/sysconfig/displaymanager
sed s/DISPLAYMANAGER_AUTOLOGIN=""/DISPLAYMANAGER_AUTOLOGIN="myth" /etc/sysconfig/displaymanager

Next I started yast and from the run level editor, I added both mythbackend and mysql to the start in run levels 3 and 5

Finally to get the frontend to display upon boot I edited the file /home/myth/.dmrc to read


Restarted the machine to test all was well, and I was up and running.

Not bad, as far as time goes either. In total the installation took me about an hour and half.


Saturday, January 10, 2009

Lappy on borrowed time

I have been using my Dell 700m laptop as my primary computer for the best part of a year now. And the machine is on borrowed time. I think.

Last year (2007, ack, that was two years ago.... anyways), I allowed the warranty to expire on the machine because I figured that since it had been so reliable in the past that I would probably be able to get away with it. Well, that streak is now wearing to its end.

And it's the little things that are starting to go. For instance, I am missing some of those little rubber feet on the bottom that prevent it from sliding around the desk. Also, the battery life is serious diminishing, and barely lasts 30 minutes at this point.

However, the most recent issue is that the speakers have cut out. Turns out the the speaker wire that runs up through the hinge area has slowly been rubbing away over the past 5 years and has now been severed due to general wear and tear. So no more speakers.

Dell doesn't sell the speaker individually either, they just come with an entire new lid (including monitor) for $550. So, I have removed the speakers and will attempt to repair them at some point in the future.

This is just indicative of what happens with laptops I suppose. They get exposed to all sorts of little bumps, wiggles and jiggles in their lifetimes, and eventually little things wear away.

As I mentioned before, Lappy is on borrowed time, and sooner or later something vital is going to break, and there is no warranty left to deal with it.

Anywho, the broken speakers thing got me interested in looking for a new machine, and the one I have come across seems to be fancy shmancy. The dell Latitude E4200 is what I would call an "ultra-mobile workstation". Functionally it is more or less the same at the 700m for day to day laptop use. The screen size is the same, graphics are still handled onboard, and the primary component manufacturer is still Intel (wooo, out of the box linux drivers). Unlike the 700m, the E4200 can be used with Dell's E-Series docking stations.

I have never used a laptop with a docking station, because, for the most part, I couldn't be bothered. Why not just use a desktop. But the new docks from dell support dual monitors, which is something that has really been missing for me. Actually to be honest, I have dual monitor set-up sitting in my workshop, but they aren't connected to a computer, they are just sitting there collecting dust.

So I am rather tempted to hand lappy off to a deserving person and move to a shiny new computer.

As I said, lappy is on borrowed time.

Now if I only had a spare $4k.


Friday, January 9, 2009

Changes to

Over the past several days, I have been working to rearrange how the domain is organized.

Originally, I purchased the domain as part of a web development business that I was running around 1999/2000, however, it sat at a pretty basic level for the majority of five years.

There are a couple sites running on this domain, and traditionally they have just been subdirectories such as /bike, /httperf and /resurgence. However, in pursuit of my new career as a freelance software engineer, I have restructured the domain.

  • My cross canada bike website is located at
  • My httperf portal is located at
  • This blog has moved to
  • Resurgence has been purged.
  • The root directory will be headquarters for the new business

A soon to be re-launched project about designing open source home theatres will be available at in the coming weeks.