My Life in the ’90s.

Just a brief trip down memory lane, of what was quite possibly the best decade to be alive in, and the greatest peak of the golden age of civilization since the Renaissance.

In 1990, I was in Kindergarten. My life revolved around the playground. I didn’t get an NES until 1991; before that, the family rented it from the local VHS rental place (Movie Time). I used to love going there and browsing their NES games while inhaling the smell of stale buttered popcorn. There used to be a portable computer lab that would come to the classroom. I can’t remember if they were Commodore or Tandy, but they were color. Meanwhile, we were saving up Campbell’s Soup labels so we could get our very own Apple II in the classroom. Word Munchers and Oregon Trail on 5 1/4 floppies for the win.

In 1991, the Teenage Mutant Ninja Turtles movie came out. I was a huge fan of the cartoon at the time (as well as He-Man, Transformers, and the usual suspects). I owned the t-shirt, the action figures, the breakfast cereal, the wallet, the cups,… even the lame concert cassette tape. Snap bracelets were a huge fad at the time, though it was short-lived (the inner metal part would get exposed and slice up kids’ wrists, so they got banned from school). My mom made me lunch every morning, and it was pretty consistent. Tuna sandwich, PB&J, deviled ham and crackers, Handi-Snacks / Dunkaroos, or Lunchables.

In 1992, I was in 2nd grade. We had to keep a journal. I wrote some boring entries, and did some particularly bizarre drawings. My best friend was John Maz. We were obsessed with The Ren & Stimpy Show. I also liked Salute Your Shorts, Family Double Dare, and Welcome Freshmen. We moved into a new house this year, an old Antibellum home from 1848. I found an old gold coin from the year the house was built, and slowly got into coin collecting. We also got a computer later in the year. It was a 486 SX20, with a CD-ROM drive and Windows 3.1. I discovered how to use a tape recorder, and had a lot of fun creating a “radio show” and other nonsense.

In 1993, Aladdin and Jurassic Park came out. I saw them, but wasn’t really obsessed. I was still playing NES a lot. John Maz got expelled from school. I can’t remember why… probably for cussing out the 3rd grade teacher. Walter was my new friend. We had the most bizarre projects, like the time we built a “quilt” out of Fruit Roll-Up wrappers. My dad somehow got a hold of a 4 CD shovelware collection that you would normally use with an online BBS server. I played a lot of Apogee, iD, Lucasfilm, and Sierra games. Wolfenstein 3-D blew my mind. I spent a lot of time at the Putt-Putt Golf arcade, playing Mortal Kombat and Street Fighter II. After school, I’d hang out with Eric May and Chris Smith, and we’d watch Disney cartoons (Goof Troop, Talespin, etc.) and play NES. Spy Hunter, California Games, Rad Racer, Punchout, TMNT, Super Contra, Paperboy….

In 1994, I got my SNES. Super Mario World and Clayfighter were the first games I had for it. I would later buy Super Metroid and Donkey Kong Country, two of the greatest video games ever made. My dad’s friend owned a BBS with a secret pirate channel. I had access to the registered version of every Apogee game, and pretty much everything else. Doom was my favorite game. By this time I was playing PC games and video games all the time. I discovered the joy of Photoshop, Deluxe Paint, PC Paintbrush, and Paint Shop Pro. I would make pictures of President Clinton shooting laser beams out of his eyes to kill aliens, among other things.

In 1995, After years of designing games on paper, I finally built my own video game. It was a first person shooter called Ultimate, that involved killing ninjas and orangutans. It was mostly an inside joke with some friends in 5th grade. Hidden in the game was a digitized image of my little brother in a poorly-drawn Deluxe Paint disco suit, and an audio clip of him singing an improv song about Kool-Aid. You could blow his head off. He was not pleased when he found this out.

In 1996, I was 11-12 years old and starting middle school. I released another version of my game on my website that I created last year. I was a full-on Internet addict, downloading every game I could get my hands on. We were still riding the wave of Seattle-esque grunge music, which had killed off the soft rock fad that had been around since the late ’80s. The music had gotten a little harder though, with Silverchair, Nine Inch Nails, etc.

In 1997, my friend Walter left. I found myself friendless, so I crawled into my shell and started getting a little weird. I invented my own alphabet so nobody could read my writing. I created another violent video game about a robot mercenary. I started drawing bizarre things again. I got a Nintendo 64. I’m pretty sure I spent the entirety of next year playing Goldeneye 007. Like most kids, I was briefly, shamefully, into anime (it was called japanimation then). In case you’re wondering, back in my childhood it wasn’t common to give kids medications for acting weird. And that’s the way it should be, dagnabit.

In 1998, it was my last year of middle school. I was addicted to Valve’s Half-Life. I graduated from Trinity Catholic School and never talked to anyone there ever again. I went to Comdex this year, and I’m actually wearing the lanyard as I type this (it was cooler than the boring government one). I was only 14 at the time, so my dad had to sneak me in. Canon had the best booth babes, that’s about all I remember. Otherwise, lots of virtual reality gadgets that never saw the light of day. I also got a laptop for my birthday. It was a 486 DX40, but hey, laptops cost a small fortune back then. Last I checked, this laptop still works. IBM Thinkpads are built like tanks.

In 1999, I started high school and wasn’t any better off socially. A girl in my class kept passing notes to me, wanting to be my friend. I never wrote back. I relaunched my website as slawdog.com, and started focusing on productivity software. I was the first sophomore in school history to join Journalism class, though I wasn’t particularly into it. I spent most of my time sketching out ideas for video games, productivity software, and websites. This was probably the start of when I really got my creative output up.

Afterward, into the aughts, I graduated high school and never looked back. I went full-force into college and had a really good time. Moved to the east coast and lived there from 2005-2012, and here I am in Atlanta, trying to figure out how the ’90s happened over 12 years ago.

Opera Adopting WebKit and Why it Sucks

Everyone who knows me, knows I’m an Opera fanatic. I’ve been using it for 13 years or so, actually. We had some great times over the years… tabbed browsing years before Mozilla copied it. Mouse gestures and easy keyboard navigation. Incredibly fast rendering. Session saving. Security. Stability. I could count on one hand the amount of times its crashed on me over the years (and 90% of it had to do with MSNBC’s old website — I can only hope they fired their UX guy). Admittedly, Opera has been slacking off with standards implementation lately, but it’s not exactly show-stopping stuff.

So why are they ditching Presto in favor of WebKit? I guess they just don’t have the money to keep moving in that direction, especially with the WebGL stuff that complicates future implementation. It’s a sad situation though, and makes me wonder how long until Firefox and IE follow suit. “But wouldn’t it be a perfect world with one rendering engine?” Well, yes and no. This happened once, remember IE6? If you wanted the Internet to work, you had to use that browser. But things weren’t so great… standards were lacking to say the least. New standards stagnated, and Flash workarounds became prevalent. But hey, it was the only browser in town, until Firefox. So if all browsers went to WebKit… not only would it be IE6 all over again, but the WebKit code would probably get forked all over the place anyway and defeat the purpose. You’d just end up with arguments over the direction of the project, and the end result would be WebKit, MozKit, ChromeKit, and IEKit. Hey, it’s happened once before.

I like WebKit, but I don’t love it. I’ve tried to love her, honestly I have, but she’s just not my type. The Javascript API implementation is very nonstandard and IE-ish. Stability seems lacking (might be due to the multi-threading?). Flash barely works (Chrome and Safari need to stop blaming Flash for their browser crashes; other browsers don’t have these problems). It’s slow. To be fair, maybe these are just problems with Chrome and Safari, and not necessarily WebKit. When I was loading up my netbook awhile back and deciding on a browser, I went with Chrome, and for 3 months I gave it a chance. It was excruciatingly slow. It crashed a lot. I figured it was because it was an underpowered netbook, so I didn’t think Opera would work any better if I installed it, but thankfully I was wrong. It made the Internet tolerable again. It’s going to be really lame if I have to start using IE9 instead of WebKit — and worse — if IE9 turns out to be a better browser than Chrome.

Presto was the little engine that could. Blindingly fast, incredibly stable. It’s just sad Opera never let it live up to what it could have been, or rather what it was, a standards-compliant powerhouse that shamed all other browsers. Why did they let it fall behind? Why don’t they open-source Presto and let the community improve it? Why just piggyback on WebKit?

I know I’m rambling. I’m not happy about this, but I wish Opera the best of luck in their implementation. Perhaps they’ll do a better job than Google, at least.

If I had a TED Talk, it would sound like this…

Once upon a time, computers were invented. The idea was simple enough; feed the machine input, it processes per your instructions, and produces an output. The hard part was getting the instructions into the computer so it knew what to do. First, logic was hardwired. Then there were punchcards. These processes were incredibly time-consuming, so programming languages were written. Low-level languages like Assembler allowed the programmer to build software for the CPU itself… this was efficient, but still complicated, and would only work for that particular hardware. Higher level languages were created to abstract the hardware and software, and make things more programmer-friendly. This gave birth to COBOL, FORTRAN, and BASIC. However, it was discovered early on that these functional languages were not well-suited for complex applications. Languages like C++ evolved over the next few decades to make object-oriented programming popular. As languages moved away from concepts such as garbage collection, other concepts remained, like static typing.

Over a decade into the 21st century, PC productivity has evolved by leaps and bounds. We no longer do word processing using markup tags. We don’t use BASIC as an OS. We don’t poke around in PostScript code to build vector shapes and 3D models. We don’t hack around in Unix terminals to check our email. Event logging is not done using a dot matrix printer in a closet. So then, why are we are still using punchcard-era thinking in computer programming?

We need to demand better than this. We need to put an end to Notepad-style IDEs. End the command prompts. End the need for compiling everything to machine code. End the buffer overflows, freezes, crashes, hex hacking, and general security disasters. End the thousands of source files strewn across directories. End the hours wasted rebuilding for other architectures. End the dozens of C++ and LISP copycat languages and admit they were never great languages to begin with. End the need for languages.

While everything else on PCs has moved away from languages, software development has not. Why is that? Is it because we’re too limited by RAM and HDD? Software is getting more complicated? We can’t afford for software to take longer than it needs to? No, no, and no. Why can’t we abstract things in a different way? Like simply use visual interfaces to snap together libraries of low-level logic, skipping high-level programming languages completely? Why does MVC and OOP have to involve hundreds of files, when it could simple be the way you choose to visualize your data, not necessarily how you physically organize it? Why not let the computer organize itself efficiently… why is the housekeeping our job?

I hope one day we will live in a future where the average developer doesn’t concern him/herself with text-based code, but instead concentrates on the tangible engineering aspects of their project. I see interesting projects that attempt to go this route, and I guess the biggest problem is the money and time involved in such feats. But in the IT world, wouldn’t it be so worth it? I know I’ve talked about these ideas a million times, but let me reiterate: Creating yet another programming language will not solve any problems; let’s instead come up with a plan to move away from programming languages.

jQuery Image Slideshow

Ever wanted or needed to make a slideshow system like you see on news websites? Here is a simple HTML/CSS/jQuery template to help give you a jumpstart. Here are some of the features:

– JSON-based input
– will handle a mixture of horizontal and vertical images of any size
– image descriptions can contain HTML tags
– navigate slides using buttons or arrow keys
– view and jump to slides visually
– automatic advance button
– shows thumbnails when hovering over slide buttons
– responsive layout (for mobile and iframe widgets. Non CSS3-based so it works in IE7 and 8)
– tested in IE8, FF, Chrome, Opera
– lightweight and easy to modify

I started working on a fullscreen mode for it, but got frustrated with the spotty browser support. I hope to eventually come back to that feature… but at any rate, here it is in 1.0 form. You can use it in your projects, but if it’s commercial, be nice and put me in the credits.

(DOWNLOAD COMING SOON…)

MVVM Frameworks versus Unobtrusive Javascript

So this has been bothering me, and maybe I’m underthinking this, but doesn’t it seem like Javascript frameworks these days are not only breaking the unobtrusive scripting mantra, but also breaking MVC? Example from knockout.js’s website:

knockout

Why on Earth would it be a good idea to “encapsulate data and behavior into a view model”, as their website suggests? Well, to “get a clean, extensible foundation on which to build sophisticated UIs without getting lost in a tangle of event handlers and manual DOM updates.” I’m really on the fence about this. While I’ve always suspected MVC can sometimes complicate development and refactoring, these days I live by unobtrusive scripting. HTML holds your structure. CSS holds your stylesheet. JS holds your business logic. SQL, JSON, XML, etc. hold your data. Why mix and match all that crap in your HTML file? Just because you can, doesn’t mean it’s a good idea, that’s why we all stopped doing that method years ago. And it’s not just Knockout doing this, it’s nearly every framework these days.

So to be fair, there are definitely arguments in some cases against MVC. Likewise, there are arguments against unobtrusive Javascript. For instance, jQuery event handlers can be used irresponsibly and make it easy for your designers to screw up the logic by renaming a class or restructuring the tag hierarchy. I’m definitely familiar with this. And with MVC, I can see the advantages of forsaking it in the backend for some projects since it’s often times building the view itself based on logic. However, in the case of Javascript, your view has already been generated so I fail to really see the benefit of decoupling them.

What is the best way to go about this problem? Honestly, we can chase our tails on MVC and UJ for another decade, but I think the only way to solve this is with smarter IDEs. Can you get “lost in a tangle of event handlers”? Sure, I guess. But you can also get lost in a tangle of MVVM… as a veteran of the “onclick=” era, you can trust me on that. We should demand a web development IDE that makes it easy to manage event handlers and functions, representing them visually in some fashion, and linking them to objects from the HTML side so we can instantly see what logic is attached to them. Then we won’t have to wade through tons of text files to locate what we want. This is the year 2013, why do we continue to pretend this problem doesn’t exist or doesn’t need to be solved?

I don’t mean to sound all negative; modern Javascript frameworks can do some cool stuff… automatic DOM updating, templating, ease of code generation from the backend, etc…. so for some projects, this is absolutely wonderful and perhaps merited, but honestly I can’t think of an everyday use for them that wouldn’t make things needlessly complicated. jQuery forever changed the way we code… it’s a great general-purpose framework that makes it easy to do event handlers and DOM updates, so in a way, doesn’t that already solve the problems that MVVM frameworks are trying to “re-solve”?

In closing, some of these MVVM Javascript frameworks infuriate me and make me want to develop my own cleaner, friendlier framework or IDE. It also makes me reflect on previous posts suggesting that we might be regressing back into 90’s web development; now I’m starting to think it really is happening.

Predictions for 2013-2014

– Apple will release the iWatch
The curved screen thing will be cool for about 5 minutes, and then people will remember why we stopped wearing watches in the first place. Bottom line is it won’t be the sort of thing Steve Jobs would have allowed to be released.

– HTML5 and Javascript will continue to revolutionize application development
Developers will start ditching Objective-C, Java, and C# and moving towards the cross-platform capabilities of HTML5, whether it’s a mobile or desktop app.

– IE8 will continue to be a problem for web designers
Worldwide usage will go from 25% to ~15%, but that won’t be enough to be able to completely drop support for it. Maybe 2014. And even then, there are numerous issues with IE9 to look forward to.

– Flash will still dominate over canvas
But if Adobe knows what’s good for them, they’ll give Flash an HTML5 export option.

– New canvas development environments will be introduced, but still no real IDE for designers
Canvas technologies will grow by leaps and bounds, but will still be in the shadow of Flash in many ways. However, game development engines written for canvas (and some cross-compiled to Flash) will become a driving force in developers moving away from Flash’s strongest selling point.

– Tablets will start to go the way of netbooks and ultrabooks
Although they will still have a comparatively strong showing, people will finally start wondering what they need a tablet PC for, and start going back to buying normal laptops.

– Apple stock will fall flat and more or less stay that way, besides on Keynote days
Apple will continue to do everything but innovate against their increasingly tough competition. Instead of making much-needed changes to iOS and the iPhone’s featureset, they will continue down the path of gradually speeding up the processor and adding more services nobody will use (Maps, Siri, Newstand, that ticket thingy…). They will finally use all that money they’ve been building up… in an attempt to wipe Samsung and Google off the face of the earth. It’ll make the justice department kinda mad.

– A financial crisis will begin to take shape, much like in 2008
The US will get its turn to be Greece. Not to sound like Chicken Little, but start investing in precious metals and virtual currencies. Tech stocks will not save you.

– The popularity of Rails and PHP will decrease as more of these casual backend developers decide to specialize in Javascript instead
Much like traditional developers moving to Javascript, backend web developers will do the same, but I’m not just talking about Node.js. I mean they’ll get into a more lucrative and fun line of work, and let the engineers do their Java and .NET thing.

– This will be another not-so-great year for Microsoft
The Surface won’t sell. No tablet will actually, besides the iPad, but even those sales will start to sag.

– Assault weapons will get banned like they were in the past
Some people will whine, and then they’ll move on to more important things, like the latest celebrity divorce. Seriously though, conservatives might actually start hammering Obama on more important things, like the use of drones and his continued assassinations of Americans overseas. Real political discourse: it’s not just for the fringe element anymore.

– The cost of app development will skyrocket
Due to the continued fragmentation of iOS and Android, it’ll be harder to write consistent apps, especially ones that can’t be written in Phonegap. Apps will also require more complexity to do things that haven’t been done already. This will drive up the cost of deliverables and slow down growth of the sector, though it won’t exactly stop growing.

– What’s left of the social IPO bubble will burst hard
People (besides their shareholders) will still love their Facebook, but that won’t save anyone else. Twitter will start to get old and busted, while places like Reddit will get more popular. Social will turn into something more community-oriented, instead of an isolated soapbox for you and random people you went to high school with.

– LinkedIn will get hacked
Anonymous will continue to show a strong prescence, but their “organization” will have more of a decidedly left-wing adgenda that includes hating on business professionals at large. A vulnerability will be discovered in some legacy code, which will culminate into an attack on LinkedIn. Otherwise though, it’ll be business as usual.

– Journalists will continue to preach the end of the desktop PC era
Its death will be greatly exaggerated, although sales will continue to slump. A PC is like a car these days, it’ll last 5-8 years before you need to think about replacing it. An Apple product will continue to have the shelf life of a gallon of milk.

– This will finally be the year of SASS and LESS
Web specialists will not be able to get jobs without knowing one of these technologies. A competing technology might be created to merge the subtle features together to make one CSS preprocessor to rule them all. Knockout, Angular, and Ember will also be huge forces, but may fizzle from whatever similar solutions come next.

– A major part of “The Cloud” will go down
AWS is guaranteed to have hiccups, of course, but I’m thinking Apple, Google, or Microsoft’s services will crash and wreak havoc on the Internet.

– Web designer roles will start dying out
It will no longer be okay to simply be a web designer. That’s like being a janitor that sweeps but doesn’t mop. More than ever, employers will look for either hybrid designer/developer roles, or look for specialists (UI/UX designers, art directors, branding consultants, etc.) to drive the creation of web mockups… people that really understand the professional logic and theory behind a website’s creation, just people who know what HTML and CSS are.

– Crowdbusiness will go unsung, but quietly grow in popularity
That’s a word you’ve never heard before. That’s because I invented it (I think). General-purpose technologies as well as specific projects will be created and expanded on to run businesses in a social way, instead of the traditional Machiavellian way. Instead of booking hotels, people will book with AirBnb. Entire businesses will run off of random strangers’ services. Which will bring about the next point…

– This will be the year of the eReputation
It is no longer acceptable to run the entire web in anonymous way, like Craigslist. A shared system will be created to share a person’s real-world reputation across the web, to make it okay to trust strangers again. This must be done in order to take the next steps in businesses going truly digital.

Jobs to Stay Away From

During my month of unemployment (which felt like a lifetime), I got thrown back into the job market with no lifesaver, thrashing in a sea of horrible jobs looking for something out there I’d be a good fit for. Ultimately I found lots of great things when I started looking outside of Florida, and ended up with 5 different job offers at the same time. But what was even more amazing was how some things in the job market never change, and some of the new trends in hiring these days. Below, I have created some fake job descriptions to help all aspiring web developers navigate the rough waters of modern day job hunting. Enjoy.

Disclaimer: NONE of these are based on any previous jobs I’ve held, which have all been overall positive experiences, but rather based on ridiculous job requirements I’ve seen over the years.

Captain of All that is Awesome
We are looking for a ROCKSTAR developer and IT Evangelist to work for a super awesome badass company!! We’re pretty much the best company ever, because we have beanbag chairs and Xbox. You must be a designer fluent in Photoshop, Illustrator, and InDesign. A web developer fluent in Dreamweaver, Flash, Flex, Ruby on Rails, ASP.NET, PHP, Java, Javascript, and jQuery. Must be a mobile developer fluent in Java and Objective-C, even though you’ll spend 100% of your time in Phonegap. You must have advanced level MySQL, Oracle, sqlite, and NoSQL. Must be a cloud evangelist that has built data centers and has Oracle networking certification. Must have a Six Sigma Black Belt, a PhD in Nuclear Engineering, and expert knowledge of House and Glee (because we’re so down to earth). At AwesomeCorp, we’re hard at work building our CEO’s idea of the moment, whether it’s an app to tell bros where to party, a WordPress plugin that puts, like, hot chicks all over your blog, or a Facebook game that simulates drunk surfing. Come work for AwesomeCorp, because we’re so freaking awesome!!

These are the most easily-recognizable postings, due to use of the words “rockstar” and “evangelist”. Typically it’s a company on the beach, run by a trust-fund frat boy or ex-high school jock trying to live out his glory days bossing people around. The job requirements are impossible, but they’ll hire you if you know the secret handshake. Considering you have to do everything under the Sun at any given time, the pay sucks and the boss is intolerable. The company goes under when it turns out the boss’s snail mail “fake DMV” scam was frowned upon by the state government, thus he spends the weekend converting next week’s payroll to Jose Cuervo.

Ironically Cool Web Barista
HipStar LLC of Portland is looking for a simple web designer to take our Social Network about fixies and old-timey mustaches to a whole new level. Candidate must be fluent in Bootstrap, Node.js, Sproutcore, SASS, HAML, ExtJS, and 10 other Javascript frameworks you’ve never even heard of that came out last month. Must supply your own MacBook Pro with Retina Display. Or else you’re not cool enough to work here. The dress code is Paul Bunyan swag, and the kitchen (we call it the “pretension pond”) is always stocked with Pabst Blue Ribbon. Qualified candidates must have beards and producer glasses, and must submit their art school portfolios for us to make fun of. We’ll contact you within 48 hours to let you know that the cut paper look is so Fall 2012.

There are way too many of these. The “we wish we were Apple” corporate culture from a prima donna CTO, along with incredibly esoteric technology requirements. Ultimately nobody gets hired, which is too bad, because their auction website for knit animal hats totally would have taken off.

Web Developer III
Conglomodyne Corportion requires a synergistic candidate skilled in Visual Studio, ASP.NET, T-SQL, Source Safe, and Powershell to leverage a banking application structure. Must be familiar with Agile/SCRUM SDLC, and must be able to pass a test where you identify 200 different IT acronyms, because that’s an excellent indication of whether or not you can do the job. Your workspace will be in the AT&T building downtown on the former janitorial services floor. Just follow the inspirational posters into our waiting room, then we’ll call you in to grill you on technologies we don’t even use here. Benefits include Hawaiian shirt day, picnic sack races, and a water cooler on every floor. Conglomodyne is an Equal Opportunity Employer.

There are lots of these, and the recruiters always swear this company always does contract-to-hire. Getting hired here is easy; the answer to every interview question involves the words “proactive”, “incentivize”, and “low-hanging fruit”. Standing on the shoulders of giants and getting money shoveled to you is fun for awhile, until the cubicle life starts wearing you down. Then the managers and HR who seem bent on making you miserable. And the nonsense meetings that last half of the day, that make you fantasize about ED-209 board room re-enactments. In the end, even if they did extend a job offer, it’s more beneficial to leap out the window of the 43rd floor… you’d have a better chance of surviving. See, there is a lot to learn about the corporate world from RoboCop movies.

GURU NEEDED IMMEDIATELY
i am looking for a web guru who knows photo shop cs9, excel & autocad 2016 for a project that is sure to make BILLIONS & YOU WILL BE ON THE GROund floor to make teh 6 fig$$$$!!!!11 this idea has never been thought of before so u must come to my home office at 1433 trailer oaks cir to sign a NDA. all candidates must be CHRISTIAN & are subject to a background check. if u are from the government or cia u nead not apply..

Danger, Will Robinson. Some wannabe CEO with absolutely zero clue about the industry wants to sell his/her MLM diet plan through the internets, and wants to pay you in “private stock”. Unless you live in Silicon Valley, this never pans out for anyone. Ever. Plus, with this person’s knowledge of software that doesn’t exist yet, coupled with their fringe entrepreneur spirit, chances are your boss will be this guy:

And if you do end up working for these people, nothing will get done because they’ll stand over your shoulders and argue with you why you didn’t make their website a pixel-perfect adaptation from the Word document they gave you, and how removing Comic Sans from the products page is “subverting their carefully-engineered, god-given vision”.

Sr. Internet Engineer
Victrola Technologies now has an opening for a senior level world wide web (www) programmer. You may have seen us in our booth at COMDEX. Utilizing what is known as the “Internet”, or “information superhighway”, you will be in charge of utilizing cutting edge cyber languages like Perl and TCL/TK to build robust, bug-free “web sites”. Bonus points if you can use Java or Macromedia Shockwave to add rich interactive user experiences to your work. Optimal candidates will have experience in Visual Basic, ASP, and Visual Foxpro, and an A+ certification. Please contact us at victrjobs2828@aol.com.

I often wonder how these situations end. This could potentially be a great company, but with a clueless hiring manager that hasn’t updated the job description in 8 years, or doesn’t know the difference between a web designer and a web developer. Here they are on Monday, waiting for their new VP of development to walk through the doors so they can walk them to their private office, offer a complimentary bottle of Dom Perignon, and hand over the keys to the executive washroom, but instead you chicken out at home because you don’t think you have the 4 years of COBOL experience they demanded on the requirements. With sad looks on their faces, they go back to the beer pinball tournament they’re having in the break room. You’ll never know what you’ve missed.

IT Scapegoat
Cupertino, CA company seeks a GIS specialist who can help fix a popular mapping app. Must have a firm grasp of map software engineering and Objective-C experience. Must be able to use Xcode for 40 hours a week without getting the urge to gouge out own eyes. Must be able to take angry calls from the Australian Government, and spend hours writing apology letters to customers under the initials T.C.. Benefits include dartboard featuring Larry Page, a Steve Jobs shrine made out of Beatles and U2 records, and a $20 iTunes Gift Card. Please send resume in Keynote format to 1 Infinite Loop.

Two words: RUN. AWAY.

SineBob.js: A Simple jQuery Plugin for Creating Easy Sine/Cosine Effects

Ever notice that, even with jQuery’s Easing plugin and CSS3 transforms, it’s not really easy to make sine effects in your frontend projects? Being a game designer, I’m a sucker for sine, so this has been bothering me for awhile. Sooo… I finally decided to do something about it. This is an extremely simple jQuery plugin that allows you to add bobbing effects (horizontal or vertical), sine fades, sine scaling, sine rotating, and rotoscaling. Example usage is as follows:

Default vertical bobbing effect:
$("div").sinebob();

More options:
$("div").sinebob({direction:”left”,offset:60,length:120,interval:10});

Alternate bobbing effect (a simpler implementation with better timing control but less accuracy):
$("div").sinebob({mode:”simple”,ticks:3});

Sine Fading:
$("div").sinebob({mode:”fade”});

Scaling:
$("div").sinebob({mode:"scale",offset:10,length:1});

Rotation:
$("div").sinebob({mode:"rotate",offset:0,length:10});

Rotoscaling (both rotation and scale):
$("div").sinebob({mode:"rotoscale",offset:2,length:10,s_offset:10, s_length:2});

NEW! Text sinewave scroller (beta):
$("div").sinebob({mode:"text",length:10,increment:0.1,speed:15});

I threw this together in a day, and it is my first attempt at a jQuery plugin, so go easy on me.

Downloads (COMING SOON):
jQuery.SineBob.js v1.1
jQuery.SineBob.js v1.1 (minified)

Creating a Hierarchical Dropdown List from JSON Data Using jQuery

Recently I ended up with a project requirement that needed to build dropdown menus from external data. Because the project ran offline, databases and backend programming were out of the question, so I had decided to use JSON as the storage medium for the package data as well as the manifest of all packages. The challenge would be both coming up with a JSON format for storing hierarchical data, and being able to parse it in Javascript. Here’s ultimately what I came up with:

External JSON file:
{
"name": "Example Package",
"author": "Chris Bartek",
"contents": [
{
"title": "Menu 1",
"href": "menu1.html",
"children": [
{
"title": "Submenu 1",
"href": "submenu1.html"
},
{
"title": "Submenu 2",
"href": "submenu2.html"
}]
},
{
"title": "Menu 2",
"href": "menu2.html",
"children": [
{
"title": "Submenu 1",
"href": "submenu1.html"
},
{
"title": "Submenu 2",
"href": "submenu2.html",
"children": [
{
"title": "Subsubmenu 1",
"href": "subsubmenu1.html"
}]
}
]
}
]
}

Javascript/jQuery:
$.getJSON('package.json', function(data){
var module = [];
$.each(data, function(key, val){
module[key] = val;
});

var ul = $('<ul id="nav"></ul>');
$.each(module.contents, function(key, value){
var func = (function (item, list){
if(item){
if(item.href && item.title){
$(list).append($('<li></li>', {
"html": $('<a></a>', {
"href": item.href,
"html": item.title
})
}));
}
if(item.children && item.children.length){
var sublist = $('<ul></ul>');
for(index in item.children){
func(item.children[index], sublist);
}
$(list).children().last().append($(sublist));
}
}
});
func(value, $(ul));
});
$('nav').html(ul);
});

All that’s left is to hook in a dropdown menu script. I used a pure CSS solution, but a jQuery one would work, too. Hope this helps someone out there.

Common Sense By Any Other Name…

Seems like these days everyone gets to give a brand name to common sense, obvious practices. OOCSS, for instance… using DRY principles with CSS, come on, that’s just good practice. SCRUM… “let’s have meetings to discuss what’s progressing and what has problems–nobody’s ever thought of that before!” And then silly ideas from ages past, like sIFR and Cufón, the ridiculous answers to problems that weren’t really that huge of problems… well, those weren’t really common sense, more like the opposite, really. Since people like Inman get their 15 minutes of fame for thinking they’re the only ones that ever thought of using Flash to embed fonts, perhaps it’s time I came up with the Bartek Web Design Philosophy. I’m gonna make this up as I go…

  1. Be as semantic as possible. Let everything be what it is, and the universe will stay in balance.
  2. Validate your HTML. If it doesn’t pass validation, and you don’t want to let go of the code that’s causing it, you should probably rethink it. If you truly love Chromeframe, you must let it go free.
  3. Don’t bother trying to get your CSS to validate, except to look for syntax issues. You’re only going to hurt user experience trying to settle for the lowest common denominator.
  4. Use HTML5, but use it like it’s XHTML5. I know it’s a glimmer in the W3C’s eye right now, but you’ll thank me in 5 years.
  5. Polyfills are your friend. CSS PIE will help you achieve enlightenment, even though it has its dark side.
  6. CSS and Javascript do not belong in your HTML. Ever.
  7. jQuery, jQuery UI, and jQuery Mobile. Through this holy trinity, you can accomplish all things.
  8. Wireframe if you feel it is necessary for your clients. Mockup and slice with Photoshop. Don’t start any HTML/CSS without a full mockup.
  9. Don’t over-engineer. There’s no point in going nuts in Javascript for Aunt Edna’s Doll Furniture Emporium.
  10. Load as few external files as possible. Don’t have an external print stylesheet, 50 icon files when you could have used a spritesheet, or a dozen jQuery plugin files that never get touched, that could just be merged together.
  11. Don’t be a slave to backend devs. Pick a language, and learn it. It’s not as hard as you think.
  12. The best solution is almost always a custom one. It will save massive headaches in the long run.
  13. Don’t get caught up in design fads. The homemade look will one day be just as tiresome as the glossy “web 2.0” trend from 2006.
  14. Experiment with new stuff, and don’t be afraid to use Flash if absolutely necessary, but always have a fallback plan.
  15. Make your layouts responsive, but remember this is not always the answer to all mobile user experience problems. Sometimes jQuery mobile, etc. will solve this.
  16. Always plan for IE7 and IE8. Use IETester. IE6 is burning in hell, so no worries there.
  17. Be smart with your SEO. Don’t overdo your SEO, or you will find your SEO fighting an uphill battle it will never win. But if you have a serious budget for SEO, then by all means. SEO.
  18. Don’t settle being employed by ad agencies and web marketing companies for years on end. They help build your portfolio, but are career dead-ends. Keep pushing yourself further.
  19. The quality of your database is directly proportional to the quality of your backend. If you find yourself doing stupid queries, you probably have a stupid schema.
  20. Know a little of everything, find what you like best, then specialize.

And I guess 20 is enough. This philosophy evolved over 7 years of doing this professionally, and has served me pretty well. Hope someone out there finds this useful. And remember, it’s not just common sense… it’s the patented Bartek Web Design Philosophy®.