Who Is Arah J. Leonard?
So I’ve reviewed and ranted, entertained and bored, but in all this time how well have you really gotten to know me? For that matter how well do I really know myself? So please let myself introduce … myself.
Name: Arah J. Leonard
Age: Born in ’76. I’m a bicentennial baby! (But only just barely.)
Occupation: I’m sorry. I’m a little preoccupied… Oh, right, software engineer, specializing in GUIs, specializing even further in multiplatform development with tools like Qt.
Okay, so I was born a mutt of mixed heritage in northern Illinois to a loving mother and father. I also have a younger sister. When I was seven, my father died. On Father’s Day. While driving the pickup truck that was going to be a present to his father up to see us all. (Because he’s been delayed by work so couldn’t come up with my mom and us kids.) For me life has always been … complex.
That year for Christmas, with funds from my father’s life insurance, was when my mother bought us our Commodore 64. It was the best investment in my life that she ever made.
Over the years as I grew up I played in Commodore and Apple labs at school and on my Commodore 64 at home. I learned to program in BASIC. I programmed a few of my own games and things, usually rather simple affairs. More fun however was to hack into games like Telengard. My favorite Telengard hack was to add an escape clause. If you accidentally wandered into an area where monsters were much more powerful than you, it was instant death. Normally if you ran into a monster and tried to run away it would say, “The monster is not amused.” You’d lose your turn and the monster would attack. But with my escape clause I’d change it to say, “The monster IS amused.” And then I’d have the monster give you a random bit treasure and then leave. So if a monster was too powerful for you, instead of instant death you’d get to live and come out with some treasure to boot. Because sometimes it pays to think inside the box, and sometimes you have to think outside of it. Life is about balance and knowing when to be rigid and when to bend.
I also learned over the years to play with consumer electronics such as computers. I could disconnect and reconnect all of the wires like it was nothing. (I still can, in spite of all of the industry’s efforts to add new connectors and cables.) I’d help out in the computer labs after school, using my keen sense of hearing to locate monitors still left on and turn them off. (To this day I can still hear when CRTs are left on. And sometimes LCDs too. In fact I even recently realized that I could hear the faint tonal difference when my prototype tablet at work blinks its power light on and off when in standby mode.)
In grade to high school I expanded into helping friends work on their computers, upgrading RAM, hard drives, CD ROMs, graphics, etc. And I learned other variations of BASIC on PCs, on Macs, and so forth. I even learned HyperCard of all things. And I learned on a Macintosh to program in a very stack-centric language for the game RoboWar, where you pit your robots against those of your friends in a completely unmanaged environment where your robots all fend for themselves and only robots with the best programming (and choices in robot hardware) win.
When I graduated high school I went straight into the US Air Force as a Communications and Computer Systems Programming Journeyman. (Or something like that. Leave it to the military to come up with a ridiculously long title for “computer programmer”.) I actually wanted to be a pilot, or an airplane mechanic, and short of that an electronic engineer. Yes, from high school I’d always had the intention of putting in my 20 years in the USAF and then “retiring” to be an aerospace engineer for Lockheed or some such. Unfortunately over the years I have tested as every type of color blind imaginable, brown-blue, red-green, to every degree. I’m not color blind. It’s those stupid bubble tests. In them I almost always see every possible answer. Optometrists don’t believe me when I tell them that though. So it becomes a guessing game. One where I always lose. I can’t help it if I not only see all colors but also through optical illusions. Anyway, so because of that the USAF wouldn’t let me near anything where seeing the wrong color could cost people’s lives. So I became a computer programmer. A hobby became a profession out of bad luck.
I did my Air Force Basic Military Training in Texas during the summer, playing with fire ants (fortunately not any scorpions or tarantulas) and constantly marching through black flag days. (Though it wasn’t technically marching because we didn’t technically have to keep to the rythm. Theoretically. In practice it was a nice way for TIs to cover their behinds while still marching everyone around endlessly.)
In technical school in Mississippi I was taught BASIC (as if I needed teaching in that), Ada, COBOL, 16-bit x86 Assembly, and SQL. I also had the joy of having my appendix nearly explode as I collapsed to the floor and shook violently during the middle of class. And then a day later in the hospital along came a hurricane. Which I guess being in the hospital saved me from having to do cleanup afterward. (As well as standing in the rain waiting for someone to actually unlock the emergency shelter, as I later heard.) But it threw me out of schedule with my class. So a week after being taped up (not stapled, sewn, or any such. Just taped. Because they were afraid of gangrene and actually cutting along the dotted line a second time was just too much effort for them) I was delivering packages all around the base, on foot, while I waited for the next class behind me to catch up to where I left off. Fun times, I tell ya.
In my first (and only) duty assignment, where I’d asked to be stationed in places like Alaska, Washington state, even Germany and Turkey, I was instead sent to Alabama. More south. Yippee? I used 16 and 32-bit Assembly, FORTRAN, C, C++, Visual FORTRAN, Visual C++/MFC, and Visual BASIC. Or in other words, I regularly used just about every language that technical school didn’t teach me. The project was AFTERPS (Air Force TERminal instrument ProcedureS). It involved calculating take off and landing procedures (as well as emergency and what to do it you missed) for every category of aircraft for a given runway. It was software used throughout the world. It took into account natural obstacles from NIMA satellite imagery through a program called DAFIF (Digital Aeronautical Flight Information File). And it took into account man-made obstacles through DVOF/DTED (Digital Vertical Obstruction Files and Digital Terrain Elevation Data). All so that airplanes wouldn’t crash. At the time however the air traffic controllers weren’t allowed to actually use these programs to determine take off and landing procedures because the military didn’t trust computers. They made errors. (Especially the first FORTRAN compiler we used, from Microsoft, that had a nasty division by zero bug in it.) So they still had to do all of the work by hand. These programs were just used to verify their results. It’s been a long time since I worked on that software, but I sincerely hope for their sakes that the military has changed it’s tune on that.
As I was there, AFTERPS evolved from a FORTRAN / 16-bit x86 Assembler DOS-only to a 32-bit console app of the same languages. (I upgraded most of the 16-bit assembly to 32-bit myself.) We did a lot of fixing the if-goto reverse logic of pre-FORTRAN 77 (with overused continue statements) and mismatched common blocks in the FORTRAN 77 code to proper clean if-then-else logic and such. It was a massive upgrade to the code to make it suitable for maintaining in a 32-bit environment. I also was part of the DVOF/DTED upgrade from global variable C to the object-oriented C++ for similar reasons as well as just plain sanity.
Then we did an upgrade all over again with DIGITAL Visual FORTRAN and Microsoft Visual C++/MFC. We enlisted the aid of a Microsoft pro, who promised us that it was possible. At the time, it wasn’t. At least not in a logical way. But eventually we sorted out ways to work around the incompatibilities of the two opposing ‘visual’ sides.
And besides programming for the USAF AFTERPS team I also occasionally had duties like installing memory and hard drive upgrades, installing Windows 95 and then again to Windows 95 B (OSR2), and even helping change networking protocols when the base switched.
And during this time as technology advanced my love of computers grew. At home I built my first computer, a Pentium I 133MHz machine with 128MB of EDO RAM. It’s been a very long time, but I remember also that the chipset was supposed to be very advanced (for the time) and had an external extra bit of cache memory. It ran DOS 6.22 with Windows 3.11. I even had a Soundblaster AWE32 for sound and awe-inspirint MIDI. I later upgraded the graphics to a Diamond Viper V330 and a nice big (back then) 17 inch monitor. I remember because the card itself had benchmarks that trounced the more popular Voodoo cards. But I was pissed because games like Quake weren’t supporting the Diamond Viper cards. They only supported Voodoo for OpenGL. It was a tough lesson that the best isn’t always the best.
My love of video games also helped me jump into saved file hacking with hexadecimal editors. I loved a good hex-ed. I even wrote my own in Visual BASIC once, called Hex Magic. Games like Ultima Underworld and Descent had wonderful save files that were so much fun to play with. And of course I taught myself HTML so that I could have my own webpage. It was on Geocities, back when Geocities was actually good. (Does Geocities even exist anymore?) When I could FTP my changes up. When advertisement wasn’t even required and people were proud to add a Geocities logo all on their own. Then it all became crap, and though by the end I had a mirror going on two other free hosts, it just wasn’t worth maintaining anymore. So I stopped updating and let the accounts close from inactivity. The cowboy era of the internet was when I learned to write HTML in Notepad, from books.
(Do people even actually write HTML anymore, or do the tools do it all for them now? I know even working on this blog I very rarely even get to touch actual HTML code anymore, and the last time I worked on actual web code it was in Python.)
The Air Force had been fun, if being constantly yelled at for nonsensical things like having a “too military haircut” can be counted as fun, and had given me plenty of opportunities to excel, but it just wasn’t for me. I was sick of my first shirt who seemed to have a hard on for trying to ruin my life. And because of my short five foot seven stature and heavy disposition I was always struggling with my weight. Not that I was fat. I went into the Air Force straight out of a high school season of track where I was a 100 and 200 meter sprinter extraordinaire, fit as a fiddle and in the best shape of my life, with no bodyfat whatsoever, and still had to starve myself for a week just to make the weigh-in. It’s all because if you weigh more than the Air Force thinks you should, they then go by a bodyfat index measured simply by taking your age, measuring your neck, and then measuring your stomach. (Note not by measuring your actual bodyfat anywhere.) Plenty of old people ran around fat as can be. Plenty of fat people with bulbous rippling fat necks ran around with stomachs the size of Texas. While actually fit young people that didn’t have fat in their necks were harassed constantly for being “overweight”. It got tiresome. Having a fist shirt that hated me for no good reason was bad enough, but occasionally giving him (albeit very questionable) ammo was a nightmare that I got sick of fast.
So after an honorable discharge with four years and two months (thanks to a stop-loss issued during the second Gulf War) I moved on. And perhaps out of spite (or relief) found a true love of food and allowed my belly to actually grow. Along with my hair. Even if my hair is betraying me now by thinning horribly in male pattern baldness.
I moved to Wisconsin, to be near my father’s side of the family. (My mother’s side being in Illinois.) I settled down in Baraboo, nearish to Madison where I commuted an hour each way to work and back. (Hence why I bought my Prius.) I worked for a scientific company, Bruker AXS. They build x-ray diffraction machines. I worked mostly on their single-crystal diffraction (SCD) which is small molecules (APEX) and proteins (PROTEUM). I became a GUI (graphical user interface) specialist. In other words I specialized in making the layout clean so that users could quickly grasp how to use a program. I also made tons of icons and graphics, mostly in Visual Studio (for the Windows .ico icons), Adobe Photoshop, and GIMP (an awesome freeware graphics utility). At first I worked in Visual C++/MFC to develop the very first version of their Proteum software, which was a massive usability improvement over their old SMART console app. Then as the software team actually reinvented itself, we switched to a base of the Python scripting language and Trolltech’s Qt using PyQt bindings.
I’ve got to say, Python and Qt kicks the ever-loving asterisk out of C++ and MFC. The code is just so much cleaner and easier to work with, and the forced indentation of Python keeps code a lot more readable. Even if Qt has gone largely downhill ever since Nokia bought out Trolltech.
SCD programming was interesting. It’s kind of like an electron microscope in that your intent is ultimately to look at molecules. But the means are completely different. You start by growing a tiny little crystal. Because all of the molecules in a crystal are aligned to each other. You then shoot the crystal with a very intense beam of x-rays. The x-rays refract off of the molecules in the crystal. A big x-ray catching camera called a detector catches these points of diffraction. (These days it’s done by using a thin layer of material that fluoresces -glows- when x-rays hit it. A lens of sorts focuses these points of florescence using glass fibers into a super-expensive high-resolution extremely cooled digital camera optical chip, which basically takes the picture.) As you spin the crystal and detector around to gain more and more viewpoints of how the x-rays diffract you collect enough data about your molecule to actually produce a ball-and-stick model of your molecule. Which you then refine with atomic thermal parameters and a bit of art. And voilà, you know everything there is to know about the molecules in your crystal. What atoms there are, how they’re bonded, what it all looks like, et cetera.
It sounds kind of silly to a lot of people. Why would someone need to know what is in their molecule. Didn’t they create it? Shouldn’t they know? Well, unfortunately chemistry is not always obvious. The same atoms can bond in different ways depending on catalysts, the amount of energy (heat) in the environment, and so forth. And so a lot of times while you know what you mixed together, the sum of the parts is less certain. You may have made the next wonder drug. Of you may have made something completely useless. So you mix up your batch, grow a crystal of it, and use x-ray diffraction to find out what you actually made. Plus there are all sorts of natural compounds, like DNA for example, where you didn’t make it but still want to know what it is in great detail.
At Bruker I also got to work on several OpenGL projects. Making 3D visualization tools was fun. I also got to maintain their KRYO-FLEX Control software, which cools a crystal down to well below freezing using air cooled by liquid nitrogen. It was educational to directly control hardware over a serial port, and fun to work with the liquid nitrogen. Plus I got to do all sorts of other fun computer hardware-based tasks. I got to test and spec neat hardware like LCD touchscreen monitors, ACS ACOS1 smart cards and readers, Axis network cameras, and on and on. And all sorts of normal computer hardware. It was a great experience!
Well, except for one part. At one point we needed a program updated, as in massive changes, since we were switching to Qt. We just didn’t have the manpower. So we thought, hey, why not outsource? Well, the outsourcing went to India. And it was the worst experience ever. They introduced a million of stupid bugs and screwed up the memory handling so badly that we never could sort it all back out. But I caught plenty of god awful stupid errors like instantiating a the same variable name with the new operator over and over and over in the same section of code, all because they needed a pointer. And at the end they just used one delete. Talk about a memory leak! They also did things like look at the Qt sourcecode to find under-the-hood mechanisms instead of using the API. Trolltech later changed those mechanisms (but kept the API the same) thereby forcing the code to only work with one version of Qt with no way to upgrade. They also didn’t compile under both Windows and Linux like they were required to, which left a lot of work to us to sort out. And they were notorious for finding bugs in the code, commenting what crashes here and why, but then not fixing them. (Of course demanding more money if we wanted these bugs fixed.) There were plenty of other crazy gaffs too. And the worst part? After all of that horrid programming, one of their programmers had the nerve to repeatedly bug us about hiring them and relocating them to America. After that I never wanted to outsource a single thing. Just in the time spent fixing their bugs, I could have single-handedly rewritten the entire program from scratch and avoided all of those bugs. It’s really what we should have done in the first place, but at the time we just didn’t have the time. So instead we got Frankenstein’s monster.
And at home, how was my PC doing? Well the Pentium 133 finally got too expensive to keep running. I’d order used parts (there were no new) that cost a fortune and I’d be lucky if they actually worked when I got them. It became a nightmare. But I couldn’t afford a real new computer. So I made do with an eMachines Celeron 500 box with onboard AGP but no AGP slot. It overheated (how I don’t know) so I drilled holes in the front of the case and added an intake fan. The power supply kept failing, and I kept ordering new ones, but was limited by a rather non-standard form factor.
Finally, after years of saving, I had enough to really build a new box. It was a Pentium 4 Northwood C. It started at 2.6GHz, but I overclocked it to over 3GHz by raising the FSB. It had 1GB of dual-channel DDR of the Corsair XMS variety. The graphics started as a nVidia GeForce4 TI 4600, but later went to a GeForce 6600GT. The sound was (strangely) the onboard audio. Since it could do 5.1 I didn’t see the need to get a separate card. Same with network. All on an Asus P4P800 Deluxe motherboard with the 865PE Intel chipset and a lovely fanless northbridge. And put into a lovely Antec Sonata case. With a pre-cut AcoustiPack aural damping material kit. The CPU heatsink got upgraded to a very non-stock giant fanless heatsink, lapped, and using Arctic Silver 5 TIM. The exhaust 120mm fan of the case was temperature controlled by the PSU. The intake 120mm fan was an Antec self-regulating fan with its own thermal sensor. And I had two quiet 7200RPM hard drives in a RAID1 array. (For redundancy to prevent data loss if a hard drive failed.) Running Windows XP Pro. The system was not only sick to play on, but it was almost dead silent. The only noise that could be heard from the box was the graphics card fan, and even that had been about to be replaced with a fanless heatpipe/heatsink monstrosity. Thanks to HyperThreading it ran two instances of Folding@home 24/7. It was great! Or would have been. If it hadn’t been for the house fire. Between the water from the firemen and the smoke absorption properties of aural damping material, nothing salvageable was left.
I was forced to go back to budget. So I built an AMD Athlon 64 3000+ box with 1GB of Corsair Value Select DDR. One hard drive. One optical drive. MSI (shudder) motherboard with onboard everything. And a later upgrade to nVidia GeForce 7900 GT graphics. In the cheapest PoS case known to man, with an included crap PSU that thankfully hasn’t failed yet. Unfortunately, this is the PC I still use.
But ever since my sweet silent powerhouse PC I’ve had a dream – performance and aesthetics. A powerful PC in a silent, and pretty, package. Who could ask for more? Unfortunately designing it this way costs a lot. Personally though, I think it’s worth it.
Well, long story longer, things at Bruker went great. But nothing lasts forever. I didn’t want to leave, but I had to. I fell in love with a wonderful woman in Pennsylvania. So I moved to be with her. I worked on contract with Bruker AXS, for a while, and then on-and-off, where I got to work from home and connect in through a VPN so that I can access the company CVS source code server as well as email and network. It was nice of them to need me, as I hadn’t wanted to leave them. But for love, needs must.
I worked on various small projects as an independent contractor for a while. Sometimes literally just a couple of hours of coding for a hundred bucks. Or making visits to people who had been infected with the latest virus to clean their PC or help them to upgrade their aged computer. Whatever would pay the bills as the economy crashed. And every so often I’d land another big contract, like at Superior Tech where I programmed in touchscreen GUIs for kiosks running on micro PCs.
Of course I managed to upgrade my computer once again, when finances permitted. The old box had been built budget, not to last eternally, and was started to get flaky. So I broke the bank building a powerhouse. Based on an Intel Core i7 quadcore processor, with 8GB of RAM, and some really solid components meant to last and to be fairly well silent without sacrificing airflow. And then, of course, I blinged it up a bit with extra lighting. Because I’m cool like that.
And lately I’ve landed myself a nice contract working for Tektronix out in Oregon. I can’t say too much about what I do, other than that I’m rapid prototyping a new oscilloscope GUI. Maybe it’s the future of their scopes. And maybe like so many prototypes it’ll be tossed in the bin when the day is done. But the west coast is a nice place to be, the pay is good, the technology is some I love, the people are nice. It’s all good. And best of all, I’m surrounded by trees, rivers, mountains. I can drive five minutes to some great shopping. I can walk to a train that’ll take me into Portland. And I walk to work to keep in shape. All without sales tax. It’s a good life.
So that, in a nutshell, is how I consider myself an IT expert. I program computers. I build computers. At work and at home. I network my home together. I use fancier networking technologies at work. I do a little bit of everything.
But what does a geek like me do for fun? (Besides blogging, obviously.)
I used to game, a lot. I don’t mean computer games. I mean role playing games. Advanced Dungeons and Dragons, Shadowrun, Mechwarrior, White Wolf, Rolemaster, even some Palladium and Rifts. Mostly I still prefer AD&D 1st Edition. It’s when classes were actually unique and separate, and thus groups of players actually had to work together. Even if the rules were rather unpolished at times. There were no one man armies. Gaming was about friends (and sometimes strangers/new-friends-to-be) working together.
Long ago I also played trading card games. Mostly Magic. I stopped around 4th Edition though because the game was just getting ludicrous. Besides the high costs of keeping up with the latest cards, most of the latest cards were getting ridiculous. So I gave it up, gave away my cards, and got out of that costly addiction.
I also read a lot. Still do. Mostly I read fantasy and sci-fi. (Though some general fiction gets in there from time to time.) I love Roger Zelazny’s Amber series especially. I used to like Laurell K. Hamilton’s Anita Blake series, at least until publishers started giving her a little too much leniency. Then she just started filling her books with crap and they got to be more and more Anne Rice-ian to read through. (Which some people probably think is a good thing, but personally I can’t stand the Queen of Anti-Climax.) I also have to admit that I used to keep up with the Stephanie Plum series from Janet Evanovich. That was one of my guilty pleasures. And, of course, what nutjob would I be without a large Piers Anthony Xanth collection? But really, I’m rather eclectic, and mostly just love a good space odyssey or humorous swords and sorcery fantasy jaunt.
I also write books. None have been published. In today’s screwed-up fiction author world, I doubt I ever will. Too many writers, not enough readers, even with Kindle. But I still try to write. I’d like to think myself at least as good as a random selection from today’s shelves. I can’t say I’m Orson Scott Card good, but then who is? And as you can tell by this and most of my blogs, I expound way too much to do short stories. I tend to be on the novel side.
I’ve had various pet hamsters and fish (mostly various goldfish/carp family and bettas because of bad tapwater) over the years. I did grow up as a kid with three cats, but I’m very allergic to pets, so these days I keep my allergens down with well contained little hamsters or nothing allergenic at all. In fact I haven’t had a fuzzy in a couple of years now, what with the moving and all.
I have a wonderful life partner. She and I are equals. We treat each other as such. We are a mated pair and love each other very much. We also understand and accept each other in ways no one else ever has. It’s a great marriage.
I also enjoy nature. Walking in at the very least. Camping and hiking has been on the agenda but never achieved in many years now, but hopefully again one day. I’m an Earth and Water child.
I’m also a third degree Reiki master, twice certified as such. And certified in Magnified Healing too. I’ve also read some and practiced a bit in Quantum Touch, but I can’t see it worth it to me to get certified in that. I’m a highly spiritual person and believe in the balance of body, mind, and spirit.
Anywho, that pretty much sums up me. I’ve a fine scientific mind. I can problem solve with the best of them. This makes me a good computer programmer and fair PC technician. I also love fantasy though, because I have a spiritual side that likes to believe in this great universe anything is possible. And strangely, I like to help people. I wish more people did. I’d like to think I have a fair sense of humor and can even be considered funny, from time to time. I’m also dangerously honest. And I’m both creative and quite long-winded. As this one blog entry shows. Which is why I write novels, not short stories.
So that’s me, in case you wanted to know.