2014-01-02

Web Designers who start with Photoshop

I have a big ideological beef with designers who build websites from inside Photoshop.

The web is built on a single foundation: HTML. Sure, CSS and Javascript have extended it greatly, but everything ultimately boils down to HTML. This is the lingua franca of the web.

Designers who start with Photoshop generally (and keep in mind I'm making a lot of generalizations here that don't necessarily apply to every web designer everywhere) are looking at the web the same way they look at a print brochure or flyer, and that's wrong. "Designing" for the web should take the medium into account, and I don't mean that in the sterotypical visual way. I mean that starting from HTML and building it up with CSS produces a clear, more efficient, more informed result. I mean it from the perspective of learning a foreign language by rote; repeating key phrases over and over without understanding what the individual sounds being uttered actually mean as compared to learning a language the old fashioned way; vocabulary, structure, grammar, colloquialisms, practice, practice, practice. Only someone who has done the latter can truly be fluent in a language.

The difference between graphic design and web design is specifically that there is an underlying language and grammar governing every piece of output. Some (poor) web designers get around their lack of understanding of this by producing full-page images and simply spitting out one big  tag per page. This is the most extreme example of course, but there is a whole continuum from that all the way to developers who could not make a web page look attractive to save their lives. (For the record, I'm way far down at that far end of the spectrum.)

To reiterate that point; I am not a web designer. I'm not good enough at the, "making pages look pretty," part to rightly label myself that way. I do believe though, that the sweet spot on the continuum is a solid foundation from both ends: Someone with the aesthetic tastes to make something beautiful, but that understands that the best way to do it isn't by slicing and force fitting an ill-considered PSD design into s, but building a document structure that's flexible, responsive, and subsequently easily styled with CSS.

As an application developer, these are the designers I dream of working with. Someone who can take the output of my code and, with the appropriate classes and id's, mold it into a dozen different shapes and styles.

"In 1000 words or less, describe in as much detail as you feel necessary how you would do your laundry."

(Assumes laundry equipment is in-home.) Walk all living areas, looking for loose clothing. Collect it as you go and dump it all in the hamper, which itself should be in the room where the majority of the clothes are stored (typically a bedroom). If the load is small enough, skip ahead to washing (next paragraph). Otherwise, pre-sort the hamper into like-articles (all shirts, all pants, all underwear, all "whites", all "gentle wash", etc.). If necessary, sort too-large piles into further like-article loads (jeans vs. pajama pants.) (Prepping loads in advance provides a measurement for total time the chore will take: (Number of loads * time it takes to dry a load) + time to wash first load.) If you feel the need, combine any "compatible" piles that can be combined that together will still fit in a single load. (It's better to have two types of clothing in a load and do fewer loads in all.)

Put the smallest load, or the one that can be washed the fastest, in a laundry basket, take it to the laundry room and place the load in the washer. (Save "heavy" material loads like sweaters, jeans and blankets for last.) Add soap and softener as appropriate for the load in question. Set the quickest acceptable wash cycle at the appropriate temperature and begin the cycle. Take the empty basket back to the bedroom and load it with another load. Take the full basket back to the laundry room to "stage" it. Set a timer on a device you can carry with you (a phone, typically) to match the wash cycle's length. (Now perform other activities as time allows.) When the timer goes off, return to the laundry room and move the completed load into the dryer. Add dryer sheet, set appropriate time and temperature and begin drying cycle. (Get the dryer going before beginning next wash cycle since drying typically takes longer.) Take the staged load that is waiting in the laundry room and load into the washer. Again add soap and softener, adjust the cycle appropriately for the load and start it. Set a new timer for the remaining time on the longer of the two cycles (almost always drying). (Again pursue other activities until your carried timer goes off.)

Return to the laundry room, and move the load from the dryer into the basket, but leave it by the laundry room for the time being. Transfer the completed washer load into the dryer, add dryer sheet, adjust time/temp and begin the dry cycle. (This will leave the washer momentarily empty.) Take the basket of dried clothes back to the bedroom and put away the (pre-sorted) clothes. (For example, for my own shirts this usually means laying them in a stack right-side-out and front-up, then placing hangers in the each of the whole batch before carrying the lot to the closet.) Because each load only contains similar items, putting them away should be a relatively uniform process. Once the load is fully put away, put another load from the original sorting into the basket and return with it to the laundry room. Place the load in the washer, add detergent/softener, set time/temp/cycle and begin the cycle. The washer will likely still complete before the previously-started drying cycle, but set your timer for the larger of the two and repeat this paragraph for each of the waiting piles in the bedroom.

At the point where you've put away a load of dried clothing and there are no new loads to wash, return the basket to the laundry room empty instead, but still set your alarm for the end of the final drying cycle. When it finishes, return to the laundry room, take the final dry load back to the bedroom and put it away.

This process optimizes for fewest trips to the laundry room, fewest back-and-forths between the laundry and the bedroom and minimizes the number of interactions with the washer/dryer by both pairing *and* pipelining wash/dry cycles. It also optimizes for making the process of putting clothes away as painless as possible (the part that I hate the most) by making everything in a load be the same type of clothing.

2013-03-22

Fresh Produce

So Chris sent me these:




And I immediately thought of Alfe Woodard's line from First Contact, but couldn't find a ready-made image on Google, so I made one:



So now that's a thing on the internet.

2011-10-08

"Minimalism"

Saw an interesting article come through on Google Reader today from Leo Babauta, courtesy of Miss Spencer, about the iPhone 4S. Rather surprisingly, it didn't have anything to do with Steve Jobs' recent death. The gist of the post is about consumerism, and rejecting material goods in favor of, "contentment without products." I have no argument with this ideal, although "no" products may be unrealistic-- especially for Leo, who is using quite a lot of products in order to publish that blog of his. My beef is with sentiments like this:
Five years ago, the iPhone didn’t exist. It wasn’t a need in your life. You were able to live perfectly without it. And now that it does exist, all of that is true. It’s Apple’s marketing that has worked on us, and we’re fools for it.

To that I would add:

Don't give in to the hype about vaccines and nutrition and education either. People did "just fine" without those 200 years ago. People still "get by" in third world countries without these niceties. Don't be a fool!

Now obviously this is hyperbole. I'm not seriously comparing the iPhone to a 2000 calorie diet or not dying from malaria.

Is having an iPhone a luxury? Certainly. But so is having a digital camera, a cell phone, an iPod or a computer, and I sure as hell bet Leo owns at least one of those! If you aren't going to gripe about any of them along with the iPhone, then it's pretty hypocritical to critize a device that conveniently (and cheaply, compared to buying a bunch of one-task devices separately) covers all of those at once. Isn't that kind of right up a "minimalist's" alley?

And not to mention, why is suddenly the iPhone 4S the reason not to get a smartphone? Is Leo okay with Droids and Blackberries? Where's the post about resisting the overwhelming consumer urge, brought on by the sheer power of sly marketing, to purchase a Samsung Nexus?

I've made my orignal iPhone last for over 4 years, and even now I don't want to give it up because it's been such a faithful and useful companion. But! I'll be getting an iPhone 4S as an eventual replacement so I can take videos of the daughter that will be joining us in December. It will be one device, replacing one device, which replaced 4 devices in my life 4 years ago. Are any of them a "necessity"? No, probably not. I'll concede that point. Will my girl grow up just fine without them? Sure. But choosing a quality product that I know from experience will last a long time and serve me well is not a bad decision, and not something I think is a wise choice as a source of criticism. Poor Leo:
I’ve wanted an iPhone for almost 5 years now, but haven’t bought one because I know I don’t need it. Will it make my life a bit more fun? Sure, possibly — but so will a walk in the park with my kids, or a hike with a friend, or a free book at the library.

Why not do both? I've gotta be honest: It sounds like Leo's been missing out on more than a little fun.

2009-10-13

Ten True Things, Number One

"1. I struggle with what is "real." You see, I haven't been fully awake in eight years."

That tweet was a self-elected response to Nikki's Ten True Things. The "rules" state that you have to be nominated for this honor by someone who thinks you're a "brilliant" blogger. Nikki qualifies (naturally) but I'm going to break the rules because I received a specific request to expound upon that tweet.

2009-09-08

System Reloads and Customizations

I follow the blog of one of my fantastic ex-professors from Knox, and he's been posting recently about switching from Mac OS X to linux. I know better than to criticize someone's decision when it comes to their OS, especially a professor of Computer Science, but Don's post did get me thinking.

See, I've played with my fair share of *nix distros in my day. I cut my teeth on FreeBSD 4.x, and I've installed everything from Ubuntu to Gentoo (an odd duck that at the time I played with it insisted on compiling the entire damn operating system from source code for every installation.) Thanks to its incredible utility for recovering files from corrupted Windows NTFS partitions, I've spent a ton of time inside Knoppix boot CDs too. Out of all of these, I can tolerate FreeBSD the best, provided I don't touch the X Windows system at all. (If I'm going to have to deal with some *nix flavor, at least give me the semi-consistency of the command line!) The reason I've stuck with FreeBSD is because they have a halfway-sane package management system that makes it somewhat less painful to maintain an "up to date" system. Even then it's a serious undertaking in order to ensure your network-facing components are fully patched and still happily talking to each other afterwards!

Now, it's worth saying that I've personally tried to use linux as a primary desktop OS. In particular my attempts were a desperate attempt to avoid Windows 2000 and XP so I'm willing to acknowledge that some distros have (hopefully) come a long way in the 8 years since I was put off by each and every one of them in turn. Based on my experience, I just can't for the life of me see how anyone could subject themselves to the kinds of "system maintenance self-torture" that Don is fastidiously documenting on his blog specifically so it won't hurt so bad next time he has to install and configure his system.

This brings me to the point of my post. Back in the day (primarily my first year or two at college) I would "modify" my B&W G3's copy of Mac OS 9 in a variety of unadvised and unsupported ways. Custom visual themes, custom icons, custom behaviors and desktop utilities abounded to fill in the gaps where I found the stock OS lacking. All of this was fine, because I was experimenting, and learning, and it was all very educational. As time went on though, and as I installed new hard drives and reloaded operating systems onto my machine, those customizations began to get dropped. They simply wouldn't get loaded onto the new installation either in the interest of system performance, or because the utility they provided wasn't worth the investment of time to find, download and install any more. I began to look for faster ways to get through the increasingly tedious system setup up process and back to the important work I wanted to be focusing my attention on instead.

Now, you can criticize me for being willing to adjust my own workflow to the provided behavior of the system, but after all these years when I'm faced with a clean system install now, I think about how much time it's going to take before the computer is "usable" and I still cringe. I have very savagely uncluttered my setup experience. There are certainly still some things I insist upon, such as MacPorts, TextWrangler, MenuMeters and DropDrawers, but these tend to be things that I keep bundled together specifically so that they're on hand when I sit down at an unfamiliar Mac. And more importantly, I make sure to keep the list of "extras" small enough that it fits comfortably in my memory, even during the years that pass in between reinstalls on my Mac (which is itself a blessing I try never to take for granted.)

MacPorts in particular is soooo ridiculously easy to use compared to just about anything I've been exposed to in the linux world. A single command like sudo port install x (where x is the name of the unix utility I need for the given situation) will get me literally any tool I need in a matter of seconds along with all of the tools it needs in order to run. And six months from now, when both x and every single one of x's dependencies have updated point releases, I can run sudo port upgrade installed and come back in half an hour with a fully up to date, still working system! It absolutely baffles me why anyone would bother with traditional RPMs or installing from source unless they were: 1) a student, 2) masochistic, or 3) had a gun to their head and had no other choice.

Here's the bottom line for me: When I have to reload one of my systems (which I've gotten pretty adept at avoiding) I ask myself this question: Do I want to spend the next 3 days downloading and installing and tweaking and customizing this poor system into the convoluted environment I require in order to be able to be productive, or do I just want to sit down and concentrate on banging out some great code? The answer these days is invariably the latter. I certainly wish Don the best with his switch, but for me sysadmin != productivity and the day I need to start writing down how I configured my system to get it to do what I expect is the day I need to reevaluate my expectations. Believe it or not, I think I'm still young enough that it's easier to change myself than it is to change hundreds of lines of config files throughout the various and sundry /etc directories of my system.

2009-08-28

"What's Wrong?"

There are times when I can sense that my wife is unhappy or bothered about something. At those times, I ask the obvious question, "what's wrong?" and she gives me this response; "nothing." This is an awful answer for a lot of reasons, but the biggest one is this: I'm a geek, and I analyze everything. If my wife were to tell me what was wrong, I would take that little bit of information, and file it away in my mental model of "how my wife works." It would get corrolated against everything I could possible associate it with. Everything from the topics of conversation leading up to the "what's wrong", to the events of the day, to the time of day and where we were. Everything would get filed away into the massively-cross-linked database that is my nerd brain.

Now let's fast-forward again to the next time I'm about to ask "what's wrong?" This time, I'm mentally going back and checking against all the previous instances I've encountered like this one, looking for similarities and trends. This time, I don't have to even ask, "what's wrong?" because I am informed from my previous experiences and the corrections my wife made to my mental model the last time she explained herself. She would be letting me learn something about her that helps me be a better mate to her.

The thing is, when she answers with, "nothing" right now, I give up and I walk away, because she's shutting me down and closing me out. There's no way I can learn the motivations and impulses and feelings she's experiencing that are leading her to be upset, because she's providing no feedback at all for me to adjust my approach. This is like playing a videogame actually: you learn how high Mario can jump, how far he can jump, and under what circumstances you can safely navigate a level. The game gives you immediate feedback that lets you build a model for expected outcomes: given this set of variables, and this set of inputs you're applying to the game, you can expect such and such a result. You can begin to predict and influence the outcome. The more you play, the better you get at being able to navigate the game's environment because you're integrating the feedback (both positive and negative) back into how you handle the controls.

Now by no means do I at all assume that my wife (or any other woman) could be reduced down to something so simple, and by no means are the life events that lead up to a, "what's wrong," moment deterministic, but it would go a long way towards me being better able to read her, understand why she's upset and even work to help avoid such circumstances in the future if she would just be willing to explain what was in her head. It wouldn't have to make sense, or be logical or even be nice, but I just can't learn from a deadpan response of, "nothing" every time.

A videogame where the screen goes black and resets every time you make a single mistake isn't at all engaging. I mean, have you ever played Dragon's Lair? Awful game really. Not fun.