OBEX and ISO8583

OBEX is a nice little protocol and reminds me a bit of a massively simplified version of ISO8583. It’s a pity about the warts on Connect… The OBEX spec defines objects (messages) in terms of a fixed opCode, followed by a 2 byte length indicator followed by optional headers (fields). Each header identifier indicates both the type of header and the way that the length of the header is encoded. Everything in a message is a header - there’s a ‘body’ header for sending data…

That test driven development thing might just work

So, we have currency based limits and they’re in millions. Us: “Are they always going to be in millions for all ccys?” Them: “Yup.” Coded, tested, delivered. Them: “can we have the JPY limits in billions?” Us: “US or European?” ;) So now limits have exponents and exponents have names. I dummied up the functions to just return an exponent of 6 and a name of “m”. That worked. Then I added tests for it… I took out the “* 100000” and called the new getLimitValue() function that takes the display limit and applies the exponent…

Full bodied, or not?

So, I have the standard MT rss 1.0 syndication feed that I hacked to include the full body of each entry and I have the all new, funky, MT rss 2.0 feed that I have left as is and which doesn’t include the full body of the article… And people argue over how this stuff should work and I have, like, 2 readers and, well, use whichever you want… The RSS 2.

Switching to CVS

For my sins, I’ve used Source Safe for version control on quite a lot of my projects in the past few years. It’s got its faults but, well, the price is right… Now that I have a laptop that I can actually work on again… Ok, I know it’s a lame excuse for buying a new toy, but… I need to be able to work on at least two boxes at once.

Analysing my blogging

I see a trend here… So, I blogged, I ate, I had a little wine. And started thinking… Why did I write the last entry today? I’ve had it in my stack of ‘blog this’ emails that I send to myself for ages. I wrote about it on Joel last week. I didn’t feel the need to blog it then. So why today? Hmm, I guess people might say I’m a self analysing type, I wonder if that’s bad… ;)

Giving it away

I give a lot of source code away on the web. I have done for several years. Often when I tell people about this they try to convince me that I should be selling the code rather than giving it away. They don’t need my code and are way more business savvy than me and they come up with all manner of clever ways that I could do this, but this is why they’re all wrong…

Analysing my analysis

In my usual “don’t read the manual” style I crufted together a simple OBEX decoder, fudged a response to the connect message and watched my iPAQ send the first chunk of the file I’m using as my test. Now I’ll throw away this crummy piece of code and write a proper OBEX protocol handler. I’m a cynical chap. I like to prove to myself that things work before I invest too much time in them.

Timezone...

Just realised that my MT setup was wrong and that all my stuff is being posted with a timestamp of an hour in the future. Just fixed it, I wonder what will happen now… Hmm, nothing, so I’ve edited the timestamps on today’s entries and hopefully everything will be OK from now on…

It's important who's driving

I’m a firm believer that software rots unless you’re very careful; and like apples, once one piece starts to go bad the rest quickly follows. The Pragmatic Programmers talk about Software Entropy and The Broken Window Theory and, unfortunately, this week the refactoring project showed how true this is… We’ve spent several weeks working on cleaning up this project, but there’s a lot of code and it’s all in a bit of a state.

80 00 1A 00 0F D7

My dabbling with Bluetooth continues. Using WSASetService it’s pretty easy to get your device to advertise a standard Bluetooth service on one of its sockets. Simply create your socket with the Bluetooth address family, bind and listen as normal and then call WSASetService to start advertising a service on this socket to other devices within range. Now call accept and wait… I chose the File Transfer Service as my hello world service.