Friday
Jun182010

Visual Design

I recently took a visual design course for school. Well, technically I didn't HAVE to take it, but I needed to take a 5 week pre-req course for my tech degree, and needed to do another 5 week course so I would be taking a half load. Visual design sounded interesting, although I was hesitant because I'm a touch color blind (apparently the PC term is color deficient.  I prefer blind).

  I was correct to be worried about not seeing color correctly, but it wasn't as bad as I thought it would be. There was only one week that focused strongly on color. I didn't do so great on the quiz that week, but oddly enough, the teacher loved my assignment and wants to use it as an example for future courses. I have to admit, the cynical part of me wonders if he didn't ask everyone in the class, because he asked as part of feedback for the final assignment. The little devil on my shoulder thinks he throws that in there to see if anyone is paying attention. I'm not so good about checking my final grades in a class, especially if I've done well the whole time. He has access to my email address, why not contact me that way if he's really interested? Ah, but the angel on my other reminds me that spam filters are dumb, and he probably wants to be done with the course as much as the students, so why take extra time to send an email when he's communicating with me via feedback already. Also, and this is perhaps the most damning evidence against my little devil: Why would he put himself through the possibility that no one will respond?

  That really had nothing to do with design. So the main thrust of the course is a mixture of teaching how the eye and brain work, including some psychological tricks designers can use, and also some quick and dirty tips on creating an effective design. Examples include using proximity by grouping relevant items together, aligning design elements to give the piece a cohesive look, etc. There was some interesting talk about colors, and how warm colors tend to dominate the foreground while cool colors blend in more with the background. Also, the differences in color profiles between monitors and printers. The short story is that monitors use 3 colors, printers use 4, so you have to take special consideration when designing for each medium.

  What really surprised me most of all, almost to the point of paranoia, was the tricks you could use to make your design more attractive. For example, the eye is drawn to dots. If there is a single strong dot on a page, your eye will go to it no matter what. You can't help it. Similarly, lines create tension based on their orientation. Horizontal and vertical lines create tension, diagonal isn't so bad. The eye does not like to cross lines, it creates tension. The eye will follow partial lines or arrows. While I was (and still am) impressed by this, it also gives me pause. I don't like knowing that it is so easy to manipulate the way we look at something. I don't think there's anything nefarious going on, but it doesn't sit right with me. I think ultimately it is the goal and responsibility of a designer to make an ad that will draw attention and appeal to people, but I think I'm going to have a hard time looking at some of these ads without instantly identifying how they're trying to manipulate me.

I know that taking an adversarial role in this is ultimately a flawed approach, but for the moment I can't help it. I think I can temper my paranoia and cynicism with logic. A good product is a good product, and they should use everything they can to sell it. Poor ad design is not necessarily a sign of an honest, good product. If anything, good products will have better advertising budgets, which should make for more effective ads.

What is definitely positive about the whole experience is that I'm thinking about design more. I believe I'll start thinking about it more moving forward, incorporating it into projects. I find I'm doing this a bit already. I'm more aware of fonts and find myself reformatting documents more than I otherwise would. I'm slowly starting to work on the intranet at work, make it a little more pleasing on the eye. The class definitely had a much larger impact on me than I originally thought it would. Who knows, if it weren't for my screwed up eyes, graphic design might have been something I would have pursued as a career.

Friday
Jun182010

The Joys of Horror

I was listening to Pseudopod the other day, and the host was doing the outro, and mentioned that this story evoked for him that crawling feeling that one experiences when reading good horror.  This story didn't do it for me, but I knew instantly what he was talking about. For him, the first time he experienced the feeling was as a teenager reading a horror comic where an inventor found a way to communicate with the dead, and one of them summed up death in one line.  It was the line that got him that first time. He didn't want to risk butchering it, so I don't know what it is, but I know how he felt.

For me, it was a Poe short story. I believe the title is The Facts in the Case of M. Voldemort or something similar. One of the things I love about Poe's stories is they often feature very analytical characters. From the killer in the Telltale Heart who KNEW he wasn't mad because he couldn't possibly think so clearly if he were, to the French detective of his occasional Sherlock Holmes-type stories, he usually had at least one character who valued logic and learning over mysticism. Voldemort had one of these characters as the lead. If I remember correctly, he was contacted to help conduct an experiment on the titular M. Voldemort. It turns out that Mr. Voldemort was terminally ill, with a disease that a very predictable course. They wanted to find out (possibly at the behest of Mr. Voldemort) what would happen if they hypnotized him at the time of his death.

I don't remember the specifics, but I know they succeeded, and he entered this weird state of undeath. The thing that stands out the most, and what made my skin crawl (and still does, thinking about it), was what happened to his tongue. In the story, it swells up to about the size of his mouth, and vibrates when he speaks. I know I'm not doing it justice. I don't know if it's the actual words he used, or the image it conjured, or the way the story read like a memoir, giving it an air of believability, but that image of what is for all intents and purposes a dead man with a giant tongue that vibrates to make him speak chilled me to the bone. It doesn't matter that I know it's not real. It's real and it resonates in a place I can't reason with.

Now that I'm thinking about it, I believe it's only Poe stories that can elicit this feeling from me. I remember the same feeling when Usher's house collapsed, and at the end of his novel-length story, where the sailors are in the antarctic, and are being drawn to something, and they suddenly see a giant white figure, and the story ends, leaving the group's fate up to the reader. I was really surprised when I read other people's impressions of the story that think the white figure is one of salvation. To me, their fate was as clear as if they found themselves falling off the end of the world into the maw of a dragon. But maybe that's just me.

There's something fascinating about that feeling. It's almost as if it's a peek behind the curtain, where you see how things really work, and you understand why there's a curtain to hide it. I think I'm starting to ramble, so I'll cut it off here, but it does remind me of something that I think is tangential to this topic. Maybe I'll talk about that next time.

Friday
Jun112010

Automated New PC Deployment, part 2

I'm new to this still, and don't know what's appropriate to share.  I originally planned to share actual snippets of the batch files, but I think it's so specific to the company that it wouldn't be useful. Also, and I realize this is far-fetched, but I don't think I should go sharing server names or specific configuration info over the internets. Also, I don't think the actual code is the important part of this whole ordeal. I think one of the important things I took away from this was a better understanding of computers and how to use them.

  I believe that coding might be in my future, although this future of mine seems to be aggressively hazy at times. I found the introductory programming class I took fascinating, and I'm focusing on software and web development in the coming quarter. However, I also see a potential future with Nerds on Site, doing computer support for people and small businesses in the area.  I also still find security pretty interesting, so something involved in that might be an option too. Or, some crazy fourth future which incorporates all of those things into one super-future!

 Sorry, I got just a bit off-track there. The point of that rambling was to say that programming definitely holds an appeal. To that end, I wanted to see if I could manage this little project as a software development project. To be fair, I don't know anything about real software development, but I know that the best way to approach a complex problem is to break it into manageable chunks.

  To that end, I split the commands into several smaller files that I can manually run, or call from another batch script. I realized some of the code could be useful elsewhere, so I wanted to modularize things as much as possible. I also needed a way to keep track of everything. My day to day is never scheduled, and issues might pop up that keep me away from my batch baby for a few days.  To that end, I started keeping a changelog.

  To be fair, I don't know if I'm using it correctly. I know some software uses a changelog for their changes between updates.  I elected to record everything I did while sewing this code together. I tried to think of how I would be most likely to use it, and it would be to check on what I had al ready done and what was missing. Looking at it now, it seems a bit excessive, but this is a learning process, right?

  So with a good idea of what I want to do and a way to keep track of it, I set about my work. The basic process was as follows:  Go down the list of tasks I do manually to set up a PC, then research how to do them automatically. What initially surprised me was that I really didn't run into any trouble finding solutions. Most tasks either had a command line program that could do what I wanted, or it relied on a registry change, which was easily modified from the command prompt. Everything from setting firewall settings to modifying file permissions.

  Once done, I gave it a test, and it didn't work, not completely.  I tested each component as I added it, but, perhaps unsurprisingly, putting it all together when the pieces were done caused problems. These were mostly pathing issues.  Forgetting the directory one part would end in when starting the next. The system has no idea I want a completely different file elsewhere in the structure, it just knows it can't find what I want, and voila: Epic fail.  Well, maybe not epic, but definitely fail. After much tweaking, and several test images later, I got it working!

  I understand that this is not a major accomplishment, but I can't overemphasize the feeling of pride and satisfaction I felt when this thing finally worked. There's something really special about seeing a project through from an abstract thought to a finished product.  It doesn't hurt that this collection of batch scripts will set up a new PC in less than a quarter of the time it would take me to do manually.

  So the question now is, what's next?  I always have little things to do, but as far as projects go, I still have the databases I want to make and maintain, and I think I can also make the batch files I just made better. Add logging features, have the scripts call each other instead of having me manually clicking them, adding scheduled tasks for the batches so that just logging in is enough to kick off the next batch in the sequence.

  All in all, I had a blast figuring all this out, and I think I really learned a lot. If any of the fine tuning is any good, I'll write it up

Sunday
Jun062010

Automated New PC Deployment

One of the first elective classes I took at community college was an odd class that combined A+ type hardware teaching, using the Windows command line tools, and peer to peer networking. The p2p networking stuff was interesting, but tedious enough that I haven't bothered to set it up at home.  The A+ stuff I already kknew for the most part, but the command line stuff, specifically batch files, really opened my eyes. Between the command line and the registry, you can do almost anything from a text interface.

  The idea to start using batch files to automate some of the new PC deployment tasks came to me after banging my head against imaging and deploying PCs across different hardware. See, the thing is, we're not big enough at work to have our own PC model that we order.  We tend to buy a few as we need them, then a few more. The result is we end up having many different hardware profiles. Loading a new PC from scratch is a tedious, boring process. Between applying all the updates, making all the security and configuration changes, cleaning up and defragging, it could easily take two days to get one up and running (less than 1 if it's my top priority).

  In an effort to make things more streamlined, we would get each PC to a basic starting point where everything was just the way we liked it, then we would make a duplicate image so we could just load that on new computers, thus saving many hours of tedious setup. Here's where the fun starts: Deploying an image on different hardware than the PC the image was made on was a total crapshoot. Sometimes it worked fine, sometimes it wouldn't even boot.

  Now, I thought that Microsoft's Sysprep tool was the solution to this. The idea is you get the PC set up just the way you like it, then run Sysprep, which will "reseal" the device. This regenerates the SIDs (I believe that stands for Security Identifiers, which all have to be unique on PCs in a domain), and makes you go through the set up process. You could even make an answer file to make the re-setup quick and painless. What's that you say? That sounds perfect? I thought so too! The problem is either user error or a flaw in Sysprep. I'm inclined to think it's a little bit of both.

  The problems I ran into Sysprep were twofold. One, it was still a crapshoot on whether the image would work on a PC with different hardware than the original. This one might be user error. There might be a way or place to specify that the image will be used on different hardware. I believe there is a place to add drivers, but I couldn't really figure out which drivers to add. The second problem is that Sysprep seems to have a weird anti-piracy feature built in, where it won't reset the grace period for activating Windows if you run sysprep several times on the image. The trouble I was running into was making last minute tweaks, then reimaging and re-sysprepping. After a few changes, I started getting a message saying that Sysprep wouldn't reset the grace period for activating windows. At the time, I didn't really understand what that meant and went on with my business. I found out a month later when I was trying to deploy the image to a machine and I couldn't log into Windows because it wasn't activated, and I couldn't activate it because I couldn't log in and load the network driver.

  To me, this is a flaw wit Sysprep. If anyone wanted to update their image more than five times, then Sysprep would stop reseting the grace period, meaning it'll turn PCs into brick in a month if you try to use it. I think this is partly error on my part for not being able to figure out the drivers, and a goof on Microsoft's part for making the tool counter-intuitive to use. The work around for the issue I described is basically to take an image, save it, then only run Sysprep on it when I'm about to deploy the PC. This works, and it's what I'm doing, but it feels like there should be a better tool for this type of thing.

  So that leads me back to why do I need a way to automate the setup of new PCs? I've decided that I have the best chance of successfully restoring an image to a new PC if I remove the hardware differences. So that means I need one image for each model of PC we get. If I had to set up each one of these by hand each time, it wouldn't take long for me to start looking around the office to see what I could slice my wrists with, or to try to figure out if a USB cord noose would support my weight.

  This is starting to look a little long. I think I'll end this now and save the actual trials and tribulations of my automation attempts for the next post.

Sunday
May302010

Haiku

I enjoy haiku,
My only problem is,
Counting sylables.