Why I'm a master software developer.

Why I'm writing this.

Given the MBs of hand-typed content on here going back 12 years, this isn't the sort of thing I'm in a hurry to do. In my apprentice ad, or at least variants thereof, I mention apprenticeship in the medieval sense--an apprentice learns from a master craftsman. When I posted a variant on Gab, I acquired a troll who made fun of my usage of "master."

Obviously I don't owe this to the troll, but perhaps I should defend my claim. I could argue it from a number of directions, which I try do to below.

an attempt at a short version

I started programming when I was 8 or 9 years old in the early 80s, and I still remember what I did; it was real programming. I learned BASIC out of the manuals that came with my TI 99/4A with 16KB of RAM.

My first computer science class was learning C at Harvard's Summer School in 1991. I got an A-, and the minus shouldn't be held against me for a number of reasons, but this is the short version. After a gap of decades, I now have some rather elegant, if I do say, C in my GitHub.

The signs were that I may have been employed indefinitely at the University of Southern California's Information Sciences Institute. A dramatic life event outside of my control derailed that and a lot of other things, but it was a good start. I got mentioned as a (small) contributor in two related NASA papers for that (interim report, and final report).

That life event delayed things for years, but I was only 23 when I was debugging software used at a gold mine, coal mine, power plant, copper smelter, and oil refinery. That was for a ~2,000 employee software company. Our of a team of four, I often had the plurality of fixes, and I often took the harder problems. I dev'ed for 4 years total for ~2,000-employee software companies. In 2004 I billed $60 / hour for ~215 hours for $13,000. There was some luck involved in that, but, still. The advice I got was that $60 was the medium tier price; I might have gotten more.

I've always done my own customer support, business anlysis, sysadmin, dba, etc. Being a decent sysadmin makes me beyond full stack, relative to some developers who use various crutches that can cost a project $10,000s. As I freelancer for roughly 13 years, I've taken what I can get, which has been a wide range of jobs.

I wrote a USB device driver that was shown off at the Consumer Electronics Show in Silicon Valley in 2011. I later consulted with some Sony Playstation 4 (Orbis) developers on the possibility of adapting it. I have the (probably) cryptographically signed emails to prove it. (I have the emails, whether they are signed or not, and you could correlate it with LinkedIn profiles, and decide if I would go to the trouble for such a forgery.)

I've written an NFT minting contract, and two Firefox extensions. One of the extensions passed the Mozilla add-on approval process and was in the store briefly. It was removed for business reasons that were beyond my control. (Once again, I have the emails.)

I've done client-side JavaScript that devs working for web dev shops could not do. I eventually wrested that project from them because I got much more done, more cheaply, and faster. That project has been ongoing since Feb, 2016, although it's always been part-time.

Robert A. Heinlein said something like "writer's write." You're an author because you write because you can't help but write. Another argument I would make is the sheer volume and variety in my GitHub. Very, very little of that is paid work, and I didn't become active until early 2020.

How many developers these days have used fork() (pcntl_fork() in PHP) or assembly language snippets (__rdtscp(&pid))?

"What's your experience and competency in what programming languages[?]"

From oldest to newest, or oldest to what I currently use most often:

bandwagon argument

Out of FANG (Facebook Amazon Netflix Goo(gle), FAG have tried to recruit me, up to the moment, and in some cases twice spanning 12 years. I still have all the cryptographically signed emails to prove it. The main reason I'm not rich is that I'm writing this at 11:30pm, and I'm in the middle of my ideal work day. A related problem is that I'm not excited about talking to recruiters during business hours. There are some similar issues, but that's another story.

In 2010 I got through 2 phone interviews with Amazon Web Services and got flown to Seattle. I'm not sure I need a reason that I wasn't hired, but I was going for the 3pm - 11pm Linux sysadmin shift rather than my core developer skills. Also, I was exhausted during that interview; it may or may not have mattered. I got them to start at 1pm, but after flying across the country, that didn't matter. On a normal day, I'm not ready for interviews until 8 - 9pm.

I don't remember how long it took--very roughly 3 - 4 years, but Amazon started contacting me again and did so about every 6 months for years. Since May, 2022, I think I'm up to my 7th Amazon recruiter.

I talked to a DARPA Lifelog (Facebook) recruiter at his request in about 2015. He tried but could not solve King of the Night Owls.

Big Evil Goo(gle) emailed me in roughly 2015. A few weeks ago (mid-2022), I went back and forth with another recruiter. Goo is vying for the most evil company with the highest body count in the history of the world. I think I should avoid temptation and not even start that process.

another take - languages and experience - somewhat redundant

The very short version is that I've programmed in 8 - 9 languages professionally and another 1 - 2 as non-paid projects. I've been at this on and off for almost 40 years since I was a small child. Just below is a summary, and then I elaborate further below.

I started programming on a Texas Instruments 99/4A with 16KB of RAM in '82 or '83, when I was a relatively small child. That was the BASIC language. I still remember enough I knew what I was doing, learning from the manual.

I next learned PASCAL in my mid-teens. I did my first professional program in PASCAL when I was 17 - 18. I did my final honors Computer Science 120 (a combination of 101 and 102) final project in PASCAL, and that would still take me a while.

I started learning C when I was 17 at Harvard's Summer School. First I did a program that almost gave a pro a nervous breakdown. Then I did C at TSW International / Indus International for almost 2 years. Indus a ~2,000 employee software company. I fixed dozens and dozens of bugs on industrial maintenance software used at a power plant, a gold mine, a coal mine, a copper smelter, and an oil refinery. I also started learning SQL there.

I then worked at Hyperion Solutions for almost 2 years. That was also about a ~2,000 employee software company. I mostly did PL/SQL and a bit of whatever Essbase's scripting language was called, if it had a name. I tamed 30M rows which was medium sized at the time. I got PL/SQL scripts and Essbase cubes to go from 10 hours to infinite calculation down to 1 - 2 hours.

I went back to school full time after that and then got somewhat derailed. That's another story.

the first version - somewhat redundant

Historically speaking, I started programming on a Texas Instruments 99/4A with 16KB of RAM when I was 8 - 9 years old. It had a BASIC interpreter and came with a BASIC manual. I read the flippin' manual and got to work. I created an Indiana Jones game where you decided which way to go--like a "pick the path" book that were somewhat popular then. There were also random events such as the huge, round, rolling boulder. Based on your choices and randomness, you would live or die. I only had a handful of choices and events, but I understood and used the basics (pun) of if-then and function calls such as random.

I also drew a digital picture of the Blue Thunder police helicopter based on the TV show of that name. I was probably doing ASCII art. Based on the 8-bit ASCII table, I probably could have done it. I may have been using some crude graphics package, though. I probably haven't done art that complicated since then in any medium. I'm not claiming it was profound, just that, looking back, I'm surprised I had the patience and interest.

The TI broke when I was 10 - 11, and I didn't touch a computer again for 3 - 4 years. Then it was a PC running SatanSoft. I did my first professional project when I was 17 - 18. It was a PASCAL language backup program that copied from hard disk to 5.25" floppy disks. It told the user when to enter the next disk.

When I was 17 I got an A- (letter grade) learning the C language at Harvard's Summer School. I think the minus was due to my weird final project. I'm not sure I saw the final commentary. I have some of the graded papers somewhere. Some decade or another I'll try to see if it was the final project based on what I do have. Maybe I'll describe the final project at some point. I'm not saying the minus was unfair. We'll call it water under the bridge for now. The point being that I didn't get a B.

I skipped my senior year of high school and was admitted early to the U of Southern California. I took honor CS 120 which combined 101 and 102. I got an A, but what I remember from that is I may have been the only one in the class to fully solve the final puzzle project. I may have that on paper. I wish I had kept it intact digitally. The professor created 10 weakly encrypted messages with simple letter substitution. Each puzzle had a different substitution. With each puzzle, he gave us a list of roughly encrypted words which among them contained all 26 letters. He also gave us a list of roughly 350 clear text words and guaranteed that the words in the lists for each puzzle were in the dictionary. Often he gave us one letter words which had to be "a" and "I," but I don't think he did that every time.

I'm not sure, but I may have been the only one in the class to crack all the puzzles. I didn't brute-force it. I did what I would now know to call backtracking recursion, although I figured it out on my own; I didn't know that concept at the time. Or at least I did a variant of it. It's somewhere on my list to reproduce this and see how I'd crack it now. Now I might be hard-pressed to do the backtracking method. Overall, though, I'm reasonably sure I just get better. At the time, I had the patience to work through the algorithm. Now I would probably back away and brute-force it or do something a bit different. That is, I'm not sure I'd be hard-presed because I couldn't write it that way. I just probably would not if I got confused for too long. I'd take the path of least confusion.

When I was 19 I worked for USC's Information Sciences Institute writing a Gopher client using the Prospero file system. The project was a NASA contract, which I don't think I knew at the time. I am mentioned as a contributor in an interim report and the final report, on NASA's site. (Before clicking, note those are PDFs, which are annoying.) My bosses were very happy with my work, but life happened in a big way. That is a big "What if?" in life. But that's another story.

In 1996 a wrote a numerology program that had driven a professional dev (programmer) crazy roughly 10 years earlier. She wrote it in BASIC, and it was a mess. It worked, but she dropped the final product and said to never contact her again. That is, it worked until it hit a Y2K bug, so I rewrote it in C. I ground it right out with no trouble.

(Left off here. Probably worth posting. Maybe I'll come back to it.)

page history

  1. 09/17 21:42 - with languages and a new version
  2. 2022/09/08 01:23 EDT / New York / Atlanta - possible first post