Well folks, a new month has come around! it's time to announce our next Member of the Month!
This month, we congratulate deathshadow60 (aka Jason Knight) as the SitePoint Forums' Member of the Month.
Now, if you've followed any of Jason's contributions to the forums, you'll know what a character he is: on the one hand, providing amazing help to those who need assistance with their code, while on the other hand, often having a somewhat—how shall I say it—colorful manner. Jason is to the Court of Code what Judge Judy is to the Court of Law. However, for all his outspoken and sometimes confronting ways, Jason is an incredibly helpful member of the forums, often going out of his way to rewrite people's code for them—offering better service than you'd be likely to get from many a professional web designer.
So for this reason, we decided to use this opportunity to get to know him better and thank him for the help he has provided around the place.
Here is an interview we conducted with Judge Jason recently. (Because it's rather long, some titles have been added.)
Username and Games
Question: You have an interesting username—one that you've used elsewhere on the web. What led you to choosing that name? Is it taken from a computer game?
Jason: From an Anime I watched back in 1982—"My Youth in Arcadia". It was the name of Captain Harlock's original starship. I've actually used that name online all the way back to then over Fidonet, Genie, Compuserve—Yes, I'm THAT Deathshadow (some of you old-timers may remember me on Genie).
Question: You obviously have an abiding interest in computer games—not just in playing them, but in creating them yourself. So what is your interest in games, and what are some of your favorite ones?
Jason: I like games that tell a story—started out with the old text adventures. First computer game I ever played was Raaka-Tu for the TRS-80 Model 1. Nowadays, with all the obsession on graphics, the story is often "lost"—though there are some real gems. "The Witcher", "Dragon Age", and "Mass Effect" come to mind.
My all-time favorite game series is "Thief"—or should I say the first two … The third one was complete unplayable trash, and the upcoming "Thiaf" (THI4F?!?) looks to be a total disaster, doing everything the fans complained about in 3 … but that's what you get when everything is dumbed down now for console gamers. PC gaming is dying a slow death—they want to blame pirates for it. BULLCOOKIES; it's that many of the big name games aren't even WORTH money anymore.
The road to web development
Question: On your website you mention that you are a retired software engineer, with two and a half decades' experience in electronics, software development and graphic arts, among other things. What is your background in computing, and how did you come to be involved in the area of web development?
Jason: Well, I've been using computers for a decade more than that, and spent most of my time with computers in the 80s and 90s writing database software (using DiBol, Clipper, Paradox). When the Internet started to gain traction, I started playing with Netscape Composer ( * hangs head in shame * ) and almost immediately realized the markup it made was redundant garbage. Since I already had two decades of programming under my belt—a decade of that working professionally—I recognized very early on that WYSIWYGS are complete trash.
I didn't really get serious about web development until after a bit of a medical incident where my diabetic seizures were misdiagnosed as neurological, so they doped me into a vegetable on anti-depressants and anti-epileptics—much of which contributed to my health problems today. When I finally got off the wrong meds, my life was in the toilet, and I needed a way to get myself working enough to supplement my disability until the lawsuit was settled—after a two year gap in employment thanks to those meds and my prior employer being … ME.
I started out dipping into my savings to get a 5mpbs symmetric connect and doing simple hosting out of my apartment … but didn't do more than dabble in web development itself. It wasn't until an acquaintance who had turned his fan website into the official page for the miniatures game "BattleTech" (a game I've played since the mid 80s) asked me to help get the site usable and cost-effective that I really dug into web design.
When I took over as head admin of classicbattletech.com in 2002, the site's home page had been built in this horrible WYSIWYG called "HotMetal" (the home page was in excess of a megabyte through the use of images AND sloppy code). It was 200k of markup on a page that has less than 1k of plaintext! Remember, we're talking 2002—decidedly still when most people were on dial-up.
It went through almost yearly incarnations the first four years. We kept getting kicked off hosts for excessive bandwidth use, and it wasn't until I finally found a hosting provider that had dedicated servers our budget could afford that things started to turn around. Then the relaunch—with the appearance matching the newly launched sourcebooks—is where the first signs of my "modern" approach to coding began to show.
Though the five- or six-year-old site code running there currently is disastrous by my standards of today, which is why a rewrite is in the works once they pony up the resources to cover the expense. You can look what's there now and see all sorts of rookie mistakes that I need to go back through and fix … SOON. I've got a prototype template, but it's also getting a more secure back end code.
If you think I'm harsh on other people's work, you should hear what I say about my own … but we all had to start somewhere.
From there I got a bunch of state agencies and local businesses as clients, as well as a few that Dan passed on to me as being outside his scope. (He was strictly front-end; I'm jack of all trades.)
On Forum posting and Dan Schulz
Question: You spend a lot of time answering questions in the forums. What brought you here, and what keeps you here? What motivates you to write such long answers, and virtually to rebuild whole sites for people?
Jason: I was actually introduced to SitePoint by Dan Schulz … and in a lot of ways his willingness to help people with no expectation of monetary gain mirrored my own view on things. If I can spend an hour or two a day helping other people, I will. That's just who I am, always have been.
As to "long answers", I often find short posts annoying, since they rarely explain things well enough. The more you explain, the better the odds are people will understand. I also have this weird problem that really short posts on forums often end up invisible to me—don't know why, but it happens.
The rebuilds really aren't that much work. I realize a lot of people think of markup and CSS as a day or even week long project, when, for most layouts people have, it really shouldn't take more than 5 minutes for the HTML, 15 minutes for the CSS, maybe another 15 minutes of screwing around with IE if the layout is doing something stupid you are probably better off not having on the page in the first place; then 10-20 minutes of playing with the images you hang on that layout. Again, if I can set aside an hour to help someone or show them a better way of doing things, I'll do it. It's just how I'm wired.
If you look at my posting history, you'll notice it looks like I post around the clock. I'm willing to bet, if you graphed it, the graph would be flat. This is because, amongst my many health issues, I have non-24 sleep wake syndrome. My body REFUSES to accept that a day is 24 hours long; for me, it's 26 hours. If I try to maintain a 24 hour day I get the equivalent of jet lag, followed by insomnia, followed by blackouts. It's just part of why I'm on doctor's orders now not to work, and why I have difficulty committing to any projects that have a fixed deadline—though the medication induced parkinsonism, thanks to quackery, is much more of an issue.
Question: You clearly gained a lot from your association with Dan Schulz—an honored member of these forums who sadly passed away in 2009. What did you learn from him, and what is his lasting legacy from your point of view?
Jason: My history with Dan is an interesting one. We met through that Miniatures game I mentioned earlier—BattleTech. He was struggling to put together a "faction" page for "House Marik" using Dreamweaver and hosting on Geocities at the time (2002ish)—a double whammy for /FAIL/. I helped him clean up his DW code, got him to stop using DW, and gave him cheap hosting on the server I was running out of my apartment at the time.
I helped him as much as I did because I saw a lot of potential. I taught him the basics of code efficiency and good coding practices. He came back at me three years later showing me HTML that made me feel like a rank amateur. The apprentice had become the master. I'm the one who introduced him to clean, minimalist code and good coding practices; he's the one who introduced me to Semantic Markup and the concept of "Separation of Presentation from Content". I went to him whenever I had a semantics question; he came to me whenever he had something that needed a complex CSS solution and things like image recombination and optimization.
The stuff we did together—he ghost-wrote much of mine, I ghost-wrote much of his … We both were wired to just help others, which made us more than able to work well together.
When he passed, we were working on a website about semantic markup and modern coding practices—and taking a dump all over HTML 5 as pointless bloat. Unfortunately, I think he was the driving force behind that project as it's languished on the back burner since his passing.
I kind of weep for his legacy though. He often told me he felt like Sisyphus so far as good HTML was concerned … and a lot of things done "in his memory"—like the memorial page—do more to piss on his ashes than they do to remember what he was about. There's also the personal behind the scenes stuff that I really shouldn't go into detail on, that make pages like that one outright offensive.
Question: A few times you've mentioned that you have somewhat impaired vision. Has this contributed to your interest in accessibility? What are your thoughts on the state of accessibility on the web, and how important a topic is this? (There was a temptation to write this question in light gray, 9px font, but we resisted!)
Jason: I am legally blind—that doesn't mean I can't see. With my glasses I can see everything inside 10 feet clear as a bell, and I could tell you to within a yard how far away a car is a quarter mile down the road. I just can't read street signs more than 15 feet away.
As such, my vision does not effect my computer use—BUT, I've been using the large fonts/120 dpi setting in windows since it was released for the IBM 8514 on Windows 3.0. Back before we had font-smoothing technology, it was the best solution to jaggies. Instead of running a 14" display at 800x600, you ran it at 1024x768 with large fonts on. The text ends up the same size, but with a higher pixel density.
Even on a 24" display at a reasonable one yard viewing distance, 1920x1200 makes the text too small: you could only use it if your head is plastered 12" from the display—which I've watched people do.
Because I like that setting, I've been aware of its effect on web pages longer than most. Hell, most people have never even heard the term "system metric". Even some web browser coders (like the jokers making Webkit) think (and I quote) "All browsers think pages are 96dpi"—a laughable statement at best, pathetic at worst.
The thing about accessibility is that if you cut through all the nonsense, it's remarkably simple if you are practicing semantic markup. Same goes for SEO. On the non-visual side, semantic markup is the beginning and end of the story—PERIOD!!! Visually, is it really that hard to say "try to use %/EM for everything? When you are FORCED to use px, due to an image interaction, consider 12px minimum size and 14px or larger the ideal. Don't use serif fonts on screen: those are for print. Don't design crappy fixed width layouts, and don't use color contrasts that are illegible. Is that really so hard?!?
It's even more pathetic when you say that to people and they answer Yes, or disagree with the very notions of any of it. But, of course, the majority of developers out there continue to sleaze out pages any old way—hence why so much of the web is still in transition from 1997 to 1998.
New web technologies and advice for developers
Jason: Much of it is indeed just bad technologies setting things back a decade and undoing all the progress of STRICT. HTML 5 in particular appears to me to be HTML 3.2 with a lip service doctype. It's absurdly loose on allowable code—just mix and match any styles you want. But worse are the new tags, 98% or so of which are either pointless or redundant.
HTML 4 strict deprecated a lot of tags—not because they were "presentational", but because they were redundant to other tags. MENU and DIR, for example, were dropped in favor of UL. EMBED was rejected from being officially adopted, and the APPLET tag and BGSOUND attribute were dropped in favor of OBJECT. Even IMG was supposed to be on the chopping block (and probably would have gone the way of the dodo if IE hadn't dragged its feet on making object work right). The idea was to make it modular, so that as new and better file formats are introduced, they could be added and removed to all browsers using plugins.
But now, of course, plugins are evil and each browser maker gets to embed their favorite pet codec into the browser code—bloating out the code when it's not in use and preventing you from using the VIDEO or AUDIO tags in codecs the users browser doesn't support; or worse, having to store your data in four or five different formats.
VIDEO and AUDIO are redundant to OBJECT—and don't give me that lame "it's too hard to code it for one tag" nonsense you get out of the Mozilla devs. Is a SWITCH/CASE, BTREE condition or even run-length test really so hard by mime-type? Of course, what can one expect from browser coders whose alpha-blending engine makes background-gradient unusable. LOVE that 100% of once CPU core just trying to scroll a page with a CSS3 gradient, or the two second mouse-over delay if you try to use text-shadow on hovers.
Others are just pointless bloat and goofy "gee ain't it neat" bling (see 90% of what jQuery is used for). It's even more pathetic when you see sites relying on multiple libraries with 200 or 300k of scripting for a couple of goofy animations that would be 2k of scripting without the libraries or shouldn't even be wasting the users' time on the page in the first place!
It's kind of sad: much of the jQuery and other frameworks' nonsense not only bloats out pages for nothing—not only throwing accessibility completely in the trash, but they're the modern equivalent to auto-playing midi music, animated gif backgrounds, comic-sans for everything, framesets, splash pages, and the dozen other 90s idiocies we all laugh at today.
Question: What is your advice for budding developers who want to do the right thing on the web?
Jason: The biggest thing to remember is you are building a page to deliver content to the user. As such, anything that gets in the way of that—stupid animations, giant banners pushing content clear off the screen, illegible fonts, non-scaleable fonts, pages measuring the megabytes in size—just don't do it!
CONTENT FIRST: it should be a rally cry.
I also say keep your sizes in mind. I'm in the process of revising my "style guide" and "page guidelines"—something I suggest all coders develop and follow. Outline not just how you are going to format your code, but also set limits. I have this formula I always fall back on (newly revised to cover some changes to what goes into HEAD):
5k + 1.5 * content size + 200 bytes per content "object".
Content size being just the plain text version of the page with no tags, an "object" being all the things object was supposed to replace (object, embed, applet, image). So, for example, if you have 6k of plain text and five content images (as opposed to presentational images, which don't belong in the HTML!) there is little good excuse for the HTML of that page to be more than 15k. If you exceed that estimate by more than 50%, it is likely your HTML is total useless bloated pointless rubbish.
I also highly suggest setting realistic size limits for pages (HTML+CSS+IMAGES+SCRIPTS). As a rule, the past six years I've set 70k as my ideal total size for a page, with 140k the upper limit. I am considering increasing my target size to reflect the bandwidth increases to a whopping 80/160.
It's not just worrying about people with lesser bandwidth that page size affects either; it's also about hosting costs. A page that's only 100k can serve ten times as many people as a megabyte sized page. It's also about the number of files; more separate files takes longer to download, so learn techniques like sprite optimizations.
And if anyone tells you to use IE conditionals for CSS, they are packing you so full of sand you could change your name to Sahara.
'Cruel to be kind'
Question: You clearly have a love of clean, semantic code, free of unnecessary bloat; and you passionately champion this cause in these forums. However, you know that your often brusque manner sometimes offends people. You've said a number of times that your aim is not to offend but to educate; yet a message can often be lost in the delivery. So have you considered softening your tone for the sake of the message? And do you carry the same manner into other facets of your life, or is thus just your 'online personality'?
Jason: I still don't get where people even get upset with my comments. Patton said it better than I ever could:
When I want my men to remember something important, to really make it stick, I give it to them double dirty. It may not sound nice to some bunch of little old ladies at an afternoon tea party, but it helps my soldiers to remember. You can't run an army without profanity; and it has to be eloquent profanity. An army without profanity couldn't fight it's way out of a piss-soaked paper bag.
As for the types of comments I make, sometimes I just, by God, get carried away with my own eloquence.
My manner of speech is entirely consistent with the speech patterns I am used to dealing with in business. Something sucks, you say it sucks, you say why it sucks, and preferably you do so before it's unleashed on a customer; and if the customer is making unrealistic demands, or doing things that go against your knowledge of the subject, you ask them "What the blazes did you even hire me for then?"
Though a lot of times I just suspect the "employee" mentality: keep your head down, don't ever say anything negative, doing as little work as possible to collect that paycheck at the end of the week—basically the people who will end up doing work for someone else their entire life. I've been pretty much on my own since age 14; I've owned my own successful business, and even now on doctor's orders, I can't just sit here doing nothing.
It's like the people I've talked to online who think Simon Cowell or Gordon Ramsey are pompous asses—when frankly, they behave like every successful businessman I've ever known. Gordon in particular has that no-nonsense, brass tacks attitude which is the difference between failure and success. And if nothing else, meaningless, facetious platitudes that slap the rose coloured glasses on people's heads to lead them down the garden path does nothing to help anyone!
On computers and OSes
Question: You've expressed—how to put it delicately—a certain disrespect for Mac computers. You've also mentioned that you primarily use Windows. The forums' resident cat wanted to know when you are "going to get a real OS?"* What do you have against Macs? And why do you (of all people) tolerate Windows? [* Editorial note: the 'real OS' was Linux, but that wasn't made clear by Ralph's phrasing of the question.]
Jason: I think what annoys Mac users the most is that when I ran my own whitebox shop, I was the shop's certified Mac tech, and I've owned G3s and G4s, and I've got a Atom 330 powered hackintosh (sitting in a Apple IIe+ case) out in the garage. So I know exactly where to stick the knife and twist.
On the hardware front, they are some of the most rinky cheap poorly designed stuff on the market. I cannot fathom how people can use the words "Quality" and "Apple" in the same sentence—without words like "lack therein" or "not"! The artform over function design cripples the usefulness of their hardware. Especially since Apple wouldn't know cooling if it stripped naked, painted itself purple and hopped up on a table to sing "Oh look at what a big cooling fan I am".
On the software side, I have fewer unkind words. I still say apple has the BEST installation/removal of software of any OS and its true native support for ASIO is great on the audio-front … but it's based on such an old BSD that 20 year old vulnerabilites are STILL unpatched. There's a reason OSX has been first to fall at the past four PWN2OWN competitions. In terms of security, they have been sleazing by on obscurity and at the code level are a billion times more vulnerable than unpatched versions of XP from a decade ago.
And that's before we talk the lack of ability to customize the user interface, how if you do go in and force the fonts larger it breaks half the applications, how cute toys like Expose and the dock are useless for true multitasking control.
It's not a matter of tolerating Windows: it's the only OS that does what I want done in a desktop OS! To be brutally frank, Windows7 blows OSX out of the water. It also helps that I can customize anything—part of why I use Opera as well … built in ability to truly customize. I want my taskbar in portrait on my right 1024x1280 pivot display using half the screen width, I just DO IT. Drag, drag, lock... DONE. I want larger fonts, Windows has had that support built in since Window 3.0. I can stil get a MEANINGFUL file tree out of Win7 speeding up things, it's easy enough to add or remove "open in ___" to context menus, context menus are actually useful.
On hobbies and music
Question: You mention on your website that your hobbies include saxophone, electronic wind instruments, carving and drawing. Would you like to tell us anything about these hobbies, and how you find time for them?
Jason: Well, I have a lot more time now that I'm retired, even with the "maintenance" I have to do because of my health. I'm biking 20 miles a day, and have become something of a local bike guru, doing simple repairs and upgrades out of my garage.
I practice the EWI (electronic wind instrument) two hours every night, (right before I read my required two pages of php.net that I read every night). Every other weekend (more often if the mood strikes me) I go busking (street performing) dragging my EWI, a netbook and my Roland Cube Street downtown. The EWI USB I have requires a computer, and the netbook gives me about four hours battery time. The Cube Street is a fairly powerful battery powered amp that gives me about 9 hours per charge. On average, I don't do too badly either: I usually play for two or three hours at a local square, taking in around $80 on a slow weekend and around the holidays pulling in $300 or more. I actually took in over a grand in two hours back in November on Black Friday.
I even made a website about the EWI, Home - EWI USB. Sometime I should get a friend to videotape me so I can put a video online.
My art I don't work on as much as I'd like, but it's something fun to do as a distraction. If you are working on a code problem or mechanical problem, sometimes you hit up against a wall and can't think of the solution. Get up, go do something else you enjoy—my drawing and my carving miniatures is that distraction.
For those of you interested, I've got some pics up on my Opera blog of stuff I'v drawn, designed in 3d, and miniatures I've carved and others I've just painted: http://my.opera.com/deathshadow/albums/
Though it's funny … back end coding can often be frustrating and hit up against obstacles. My coming here and doing rewrites is also a fun distraction. HTML and CSS for layout is simple and easy once you know a few tricks and understand semantics. For me, those are fun distractions from the slightly less fun PHP/SQL.
I should probably just open up a PSD-to-code conversion service, since it barely takes me an hour for most layouts to do it. I just hate working from PSDs in the first place, as drawing some goofy picture before you have the markup of actual content is putting the cart before the horse. Content should dictate the layout, not the other way around!
Question: What sorts of music do you like to listen to? Likewise, do you have any favorite books? What are you listening to and reading at the moment?
Jason: Anything with a hard driving beat I'll listen to. In school I was a metalhead. No soft-glam rock like Def Leppard and Bon Jovi for me: I was listening to Motorhead, Biohazard, Posessed …
But I also come from a family of musicians. On my mother's side of the family, everyone plays guitar and accordion; on my father's side, my grandmother was a classically trained jazz and opera singer. As a saxophonist, I have a love of jazz, though my tastes run more towards the fusion from the likes of Steps Ahead or St. Germain than the classical "Swing" type stuff. Blues and Texas Rock are also in my blood, since my favorite band is "Omar and the Howlers".
I also have a weakness for novelty music—bands like In Extremo, for example, which do middle ages songs in dead languages with a mix of period and modern instruments as metal tunes. Also Hayseed Dixie, performing rock and metal as Bluegrass (started out as a AC/DC cover band), and MC Hawkings for some excellent Nerdcore Rap.
I have no tolerance for whiney annoying—what a music teacher I once had called "non-committal" music. When the vocalist cannot sing, and you have nothing but twinkly little noises in the background leaving the musician in me waiting for the song to actually start, that's bad. In that way, 99% of today's pop is meaningless garbage; but that's pop for you in a land where most of the population is stone cold tone-deaf. To give you a simple comparison: I like Lisa Kelly, and I have no use for Celine. I like CCR, I have no use for the Eagles. I like PUSA, I have no use for Green Day. I like Dead Milkmen, I have no use for Depeche Mode.
New projects in the offing
Question: It's the privilege of the Member of the Month to promote a website, good cause or any other pet interests. So fire away if there's anything you'd like us to know about.
Jason: Well, I've started writing new games for DOS, with the original IBM 5150 as my minimum target system. It's just a fun challenge to try to work inside such limited hardware. I'm writing these games using an undocumented CGA mode that tricks 80x25 text mode into behaving as a 160x100 16 color mode—which works out well for porting many games from other platforms like the Atari 800, since its PMODE 4 was 160x96 … and I'd rather have the full color palette than be restricted to the 4 colors the cga's normal 320x200 graphics mode is limited to.
The first game is a Pac Man ripoff. It runs DOS native, but will NOT work in a windows command line window due to the unusual graphics mode. It does however run flawlessly under dosbox, the included readme.html giving the recommended instructions. The best sound for it is actually the old CM/S (precursor to the soundblaster before they added adlib support) or Tandy/PCJr sound … though the PC speaker isn't as bad as other games. (It's still bad!)
Unlike most of the old games that use said video mode, it also is not tied to the CGA hardware and should work on pretty much any EGA or VGA card. On some it works perfectly, some cards need the /SAFE command line switch which isn't perfect, but is at least guaranteed to run. (It all hinges on the capabilities of the CRTC chip used in the card.)
My blog entries about it are here: Jason Knight - Deathshadow's Madness - Posts tagged by "paku".
RGB Classic Games has put a copy online using a java version of DosBox: RGB Classic Games - Play Paku Paku Online
I'm in the process of writing a second game that's going to be a mashup of the old DOS "moonbugs" with the TRS-80 Model 1's "Defense Command". Still hammering out a lot of details on that. So far I have the base engine and the sprites; it's just a matter of enemy AI and player movement controls.
Also, I'm still plucking away at my CMS that when complete will be released to the public, though I'm still trying to figure out how I want to license it. Right now I'm working on user account management for it. I'm dotting every t and crossing every i when it comes to security on it, building it in PDO with prepared queries stored in an array. The use of the indexed query arrays means that you can just rewrite the queries as needed for each possible SQL target. Keeping said queries private and locked inside my PDO object extension, and rewriting PDO:: prepare/query/exec to only work with the array locks things down pretty tight.
No idea when that will be finished, though. It's done when it's done.
As a teaser, I do have a screencap of its current status: http://www.cutcodedown.com/images/paladinCMS.png
Doesn't look like much yet, but there's a LOT going on under the hood. When/if I finish it, I plan to plug all the content Dan and I had been working on together into it to launch "cutCodeDown" properly.
A preview of some of that content can be found here: Index of /tutorials
Ralph: Well, Jason, thanks for participating in this really interesting interview, and thanks again for helping out in the forums. Best of luck with those projects!
OK everyone, it's your turn to offer your congratulations to Jason on his award.