This is my first ever blog post in having been on the Internet now for 17 years. I’ve been encouraged to create a development blog to share things that I learn. I’ve found so much great information on the Internet from blogs that I’ve finally decided to commit to keeping one up. I do this for two reasons:

  • Hopefully share knowledge with someone else who has run into the same problem I have.
  • Provide a repository where I can remember the solutions to problems I’ve had, because I might have to use them again.

Let’s start with some information about who I am.

My name is Bryan Mayland and I am a programmer for a small software shop in Tampa named Leonine Development Services, Inc. I’ve been coding professionally now for 15 years or so, from back in the 16-bit windows days. My primary language of choice is Delphi for the win32 target, but I have a pretty strong background in C/C++, can get around pretty well in Intel x86 assembler and C#.NET, and a rudimentary understanding of PHP and LUA.

What the hell is Delphi?
Delphi is a product created back around 1995 to compete with Visual Basic by Borland (which did a corporate makeover and became Inprise, which spun back off their development tools division as Borland, which became CodeGear, which was bought by Embarcadero). Delphi 1 was a 16-bit Object Pascal compiler with Rapid Application Development (RAD) features. This meant you could design your GUI in a GUI in the same way you could in Visual Basic except the end result would not be a completely shitty interpreted app whose array indexes start at 1. Seriously, everyone knows the universal first number is 0.

Coming from a 16-bit straight C background, Delphi was a godsend. The programs compiled and linked ultra fast, you could throw together a decent GUI in a heartbeat, and the resultant native code was pretty quick too. Of course, it was also a 16-bit “joy” when a unit would compile to more than 64k and the compiler would choke. Same story for when some dufus declares a bunch of initialized constant shortstrings and you get the dreaded “Data Segment too Large” error. Delphi 1′s .data segment was shared with the stack segment, so the trick there was to lower the size of the stack to fit your data, but not so small that you’d run out of stack space while the program was running.

Suffice it to say, the Delphi of today has come a long way since then, and it is even more impressive when you look under the hood. That is why I’ve started this blog, to share insights as to what is under the hood in everything from Adultery to Zoology.

I googled your name and all I found was personal listings on Craigslist
For some reason those keep bubbling up to the top, but the guys who call are always nice so I don’t mind. I have done more noteworthy things, I assure you.

  • Gnutella I reverse engineered and published the gnutella protocol, helping to start the glorious age of Peer to Peer topologies.
  • DAOCSkilla reverse engineered the network protocol for Dark Age of Camelot and wrote a radar program so I’d never wander around East Svealand again. This made a lot of people upset for some reason, but it also led to this great list of monster locations as well as a security advisory when I saw that the credit card authorization system used incredibly weak passwords, and another when they still didn’t get it right.
  • XBMC I’ve contributed to the open source media center application XBMC. I was responsible for the flags that indicate the resolution of videos and the codec of the audio streams, as well as some other small fixes. I’d love to work on it again if I ever find the time. The developers are extremely talented and are my kind of jerks.
  • Linux I may still have one or two lines of code in the Linux kernel. Debugged an kernel issue with VESA framebuffers.
  • XViD Wrote the first multi-threaded I-frame motion search algorithm, boosting performance of the video encoder by up to 60% on a dual-processor/core system with identical output. XViD currently uses a different algorithm now that works on all frame types I believe.
  • Wrote a service for a DOT COM company that processed, stored, and indexed every stock tick for every trade on the US markets in real time. On a Pentium II 300. A friend and I started working on it one Saturday morning, and it replaced the production system on Tuesday. Then I drank a lot of beer and slept for a day.
  • I’ve also written a Meditech MAGIC terminal emulator by reverse engineering the protocol (see a trend developing here?). That may not sound like a very big accomplishment, but damn I’ve spent some long nights on that.
  • I fancied myself as a game programmer for a while, although I use the term loosely as my services were never credit-worthy, and in some cases not even payment worthy in the case of one MMOG.

So there’s my start. I think I’ve gotten past all the boring backstory and now I start recording actual important things in this blog. I’ll start it with this:
Screw you, John Lam.