{"id":3,"date":"2010-04-21T19:32:18","date_gmt":"2010-04-22T00:32:18","guid":{"rendered":"http:\/\/capnbry.net\/blog\/?p=3"},"modified":"2010-04-21T19:36:58","modified_gmt":"2010-04-22T00:36:58","slug":"3","status":"publish","type":"post","link":"http:\/\/capnbry.net\/blog\/?p=3","title":{"rendered":"Who is CapnBry?"},"content":{"rendered":"<p>This is my first ever blog post in having been on the Internet now for 17 years.  I&#8217;ve been encouraged to create a development blog to share things that I learn.  I&#8217;ve found so much great information on the Internet from blogs that I&#8217;ve finally decided to commit to keeping one up.  I do this for two reasons:<\/p>\n<ul>\n<li>Hopefully share knowledge with someone else who has run into the same problem I have.<\/li>\n<li>Provide a repository where I can remember the solutions to problems I&#8217;ve had, because I might have to use them again.<\/li>\n<\/ul>\n<p>Let&#8217;s start with some information about who I am.<br \/>\n<!--more--><br \/>\nMy name is Bryan Mayland and I am a programmer for a small software shop in Tampa named Leonine Development Services, Inc.  I&#8217;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.<\/p>\n<p><strong>What the hell is Delphi?<\/strong><br \/>\nDelphi 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. <em>Seriously, everyone knows the universal first number is 0.<\/em><\/p>\n<p>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 &#8220;joy&#8221; 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 &#8220;Data Segment too Large&#8221; error.  Delphi 1&#8217;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&#8217;d run out of stack space while the program was running.<\/p>\n<p>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&#8217;ve started this blog, to share insights as to what is under the hood in everything from Adultery to Zoology.<\/p>\n<p><strong>I googled your name and all I found was personal listings on Craigslist<\/strong><br \/>\nFor some reason those keep bubbling up to the top, but the guys who call are always nice so I don&#8217;t mind.  I have done more noteworthy things, I assure you.<\/p>\n<ul>\n<li><a href=\"http:\/\/capnbry.net\/gnutella\/gs.php\">Gnutella<\/a> I reverse engineered and published the gnutella protocol, helping to start the glorious age of Peer to Peer topologies. <\/li>\n<li><a href=\"http:\/\/capnbry.net\/daoc\/daocskilla.php\">DAOCSkilla<\/a> reverse engineered the network protocol for Dark Age of Camelot and wrote a radar program so I&#8217;d never wander around East Svealand again.  This made a lot of people upset for some reason, but it also led to <a href=\"http:\/\/capnbry.net\/daoc\/\">this great list of monster locations<\/a> as well as <a href=\"http:\/\/capnbry.net\/daoc\/advisory20031211\/\">a security advisory<\/a> when I saw that the credit card authorization system used incredibly weak passwords, <a href=\"http:\/\/capnbry.net\/daoc\/advisory20040323\/\">and another<\/a> when they still didn&#8217;t get it right.<\/li>\n<li><a href=\"http:\/\/xbmc.org\/\">XBMC<\/a> I&#8217;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&#8217;d love to work on it again if I ever find the time.  The developers are extremely talented and are my kind of jerks.<\/li>\n<li><a href=\"http:\/\/www.linux.org\/\">Linux<\/a> I may still have one or two lines of code in the Linux kernel.  Debugged an kernel issue with VESA framebuffers.<\/li>\n<li><a href=\"http:\/\/www.xvid.org\/\">XViD<\/a> 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.<\/li>\n<li>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.<\/li>\n<li>I&#8217;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&#8217;ve spent some long nights on that.<\/li>\n<li>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.<\/li>\n<\/ul>\n<p>So there&#8217;s my start.  I think I&#8217;ve gotten past all the boring backstory and now I start recording actual important things in this blog.  I&#8217;ll start it with this:<br \/>\nScrew you, John Lam.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is my first ever blog post in having been on the Internet now for 17 years. I&#8217;ve been encouraged to create a development blog to share things that I learn. I&#8217;ve found so much great information on the Internet from blogs that I&#8217;ve finally decided to commit to keeping one up. I do this [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3"}],"collection":[{"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3"}],"version-history":[{"count":11,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3\/revisions"}],"predecessor-version":[{"id":15,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3\/revisions\/15"}],"wp:attachment":[{"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/capnbry.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}