Where You've Been

Posted by Evan at 9:51 pm on October 4th, 2009

Within the past week I've picked up a couple of new projects to work on; while both are websites, one is more of a website in the traditional sense and the other is more of a web app. Aside from being excited to be able to put to use some of the skills I've learned (both in and out of the classroom) in a way that helps others, I've found a lot of joy in realizing that I'm no longer stumbling around in the dark as much as I used to: when I come across a problem or need to be able to do something, I might have actually already had to deal with that issue before! Cool! :)

Whether it's putting together a site design in Photoshop or working my way through a PHP MVC framework, I'm amazed at how much more I know now (and even how much more there is yet to learn) than how much I knew a year ago. I haven't mastered either of the cases given above, not by any means, but I've noticed that I'm no longer merely muddling through to try and solve a problem. I have prior experience on my side as well as a better understanding of what the difficulty is and where the solution might be, and these details can enable me to accomplish tasks faster and more intelligently.

Looking back and seeing how far you've come is both exciting and encouraging! I try to make sure I'm always striving forward, entering new opportunities for growth and learning, but every so often I think it's important to remember the history that brought you to where you are. After all, a great way to tell where you are and where you're going is to look at where you've been.




You're Doing It Wrong

Posted by Evan at 10:21 pm on September 27th, 2009

I think one of the great joys of learning is realizing how bad you are at doing something. Truly, "The more you learn the less you know." This happened to me recently, several times actually, and each time it was one of those "A-ha!" moments where I finally saw the error I had originally made; though now as I work on fixing my mistakes I can't help but wonder how far off the mark I still am. :)

Making mistakes isn't bad: it's an important part of the learning process, just like losing a game is a great way to help you become a better player the next time around. What is important is being able to identify the errors and then develop a way to fix them or even avoid them in the future.

One of the places I've noticed this recently was in the database design for unguku.com I had created back in the Summer of 2008. Knowing next-to-nothing about how to properly design a database, I had simply thrown some ideas together and then hacked the code to make it work. Sure, the system has done the job for over a year, but it isn't pretty.

What really brought this to light for me is the Database Management course I'm currently taking. While we've only been meeting for five weeks, I've learned enough that when I look at the database I designed that Summer I cringe. Thankfully, now that I can see the issues, I can work on fixing them.




Army Men

Posted by Evan at 10:50 pm on September 20th, 2009

I played with army men as a kid (and I've even played with them as an adult) but they were always "modern" in appearance, with the looks of soldiers ranging from World War II to the Vietnam war. So when I discovered that there are places offering army men from other time periods I was pretty excited! And then there are places like the Michigan Toy Soldier Co. which offer all kinds of army in many different sizes and styles. I've lost hours browsing the collections...so I thought I'd share. :)




Google is Messing with My Searches

Posted by Evan at 8:51 pm on September 13th, 2009

Some time ago Google rolled out a "feature" whereby your searches would be personalized based on your web history (as tracked by Google, if you authorized them to collect such data). At this point in my life I don't care if Google keeps information like this about my searches (after all, nothing on the internet is private) and the statistics this archive of searches provides are quite interesting: I can see how many searches I've performed each day for the past month, which pages I visited as a result of a given search, in which hour of the day I perform the most searches, and even which day is the most popular search day for me (Tuesday is currently the record holder: over time I have performed over 200 more searches on Tuesdays than any other day - I'm not sure why that is, but now I'm very curious :).

In a nutshell: I want to keep this web history around. Unfortunately Google doesn't provide an option to have the web history and yet still get "natural" search results. So you can either have the web history and let Google mess with the ordering of the results or you can abandon the history and get pristine results.

Google, why do you force me to pick!?!

I don't want my search results to be different than someone else's just because we have different web histories. Keeping the search results the same helps people share links and searches, and surely that's a good thing! Also, I have only noticed worse results following Google's personalization modifications.




Cheat Sheets!

Posted by Evan at 9:10 pm on September 6th, 2009

I recently stumbled upon (not through the service of the same name, merely by browsing :) a site which collects and organizes cheat sheets for a multitude of programming languages, software programs, internet protocols, search engines, and more. In short: it's really cool!

One of their hosted cheat sheets which caught my eye in particular was this one on software design patterns (as put forth by the Gang of Four). Having just recently studied software design patterns as a part of the Software Systems course I took this past Spring, I think this cheat sheet is pretty nifty!




Software Engineering Mistakes in The Incredibles

Posted by Evan at 9:34 pm on August 30th, 2009

As my college career progresses and I learn more about the software engineering process, I find it interesting how my outlook on the software around me changes as well. For example, earlier today my roommate Spenser and I were rewatching The Incredibles. (Spoiler alert for the rest of this post. :)

The falling action of the plot involves the villain Syndrome "defending" a metropolis against a rampaging robot (the robot was actually released by Syndrome in order to provide the opportunity for him to be a super hero); Syndrome's trick is that he has a cuff-remote which is able to control the robot, to an extent. For example, Syndrome can push a button on the remote, lightly punch one of the robot's appendages, and then the appendage will fall off.

But after this happens a couple of times the robot, which was described as a "learning robot" previously in the film, targets Syndrome's cuff-remote - correctly recognizing it as the threat - and knocks it off Syndrome's arm. Without his cuff-remote Syndrome stands no chance against the robot and is quickly knocked unconscious.

Unlike previous occasions where we merely enjoyed the movie, this time as Spenser and I watched this segment of the film we started joking about how there was a failure on the part of the software developers to properly follow the software engineering process. Either the requirements analysis was not done properly (and surely having the robot not be able to turn against the master would have been a high priority! :) or the requirement was there but it was not fully tested.




Reformations: A Day of Rest

Posted by Evan at 12:02 pm on August 23rd, 2009

Apparently the Spring is a time for modifying my habits, as this past spring (much like the one before it) I experimented with how I prioritized my time. I continued my tradition of rising early (and again reaped the benefits from that practice) but I also began to take one day each week "off" from school. On that day, no matter what was happening with school assignments, I wouldn't do homework or work on school projects. Anything else was perfectly acceptable: sleep, watch movies, design a website, or even (gasp!) socialize.

The origin of this experiment was in a discussion about the Sabbath and why, as students, we never seemed to follow the principle of not "working" on the seventh day. Employees typically only work five days a week, and often get their "day of rest" on the weekend, but for students the weekend is as much a time to tackle school assignments as the workweek is. In fact many professors are known to give extra homework prior to a weekend (and even vacations!), thus necessitating that students spend their "day of rest" on school work. And with their workweek filled with classes, many students are thus prevented from being able to step away from academics in order to deal with life.

After the discussion, I wondered what would happen if I actually tried to fit a Sabbath into my week. Would I run out of time for completing homework? Would my grades suffer? Would I come to relish the day of rest? Would I actually have a life outside of academics?! I decided to try it and appointed Sunday my personal day of rest. (Note that while the context of the discussion referenced above was religious, after trying it I firmly believe that the principle is applicable even outside religious circles: gaining perspective by stepping out of the immersion from time to time can be immensely valuable.)




Using WordPress

Posted by Evan at 10:16 am on August 16th, 2009

Among other things, this summer I have been helping to design and develop a couple of websites (neither of which are live yet, otherwise I'd link to them :). Both sites eventually settled on using WordPress as their content management system and this gave me an opportunity to use, learn about, and develop for WordPress.

While I hadn't used WordPress at all at the time, way back when I was first thinking about developing my own CMS I envisioned it as my own "WordPress." Not in that my version would achieve the same success or that my version would even compete with the original, but rather in that my CMS (which would eventually become PurpleCMS) was the WordPress I wanted to use: it would be customized to suit my needs and would support the features and workflow I wanted.

Developing PurpleCMS has been a great adventure, and I wouldn't trade the time I spent on it for any other project, but unless you have a pressing need to roll your own CMS (or if you're in it for the learning) I would heartily recommend taking a look at WordPress. It's no longer just a blogging platform: the many built-in features (and the fantastic array of plugins) make it fully capable of hosting any "normal" site. And now that I've actually used WordPress, and have even been working on themes for the two sites I mentioned earlier, I can safely say that I think it deserves its reputation as a good all-around platform for managing website content.