Archive for August, 2007

New Layout

Saturday, August 11th, 2007

I finished a new layout/design for this site and uploaded all the images and style-sheet last night. It’s nothing too original, just like a banner image and left navigation images but the rest of the styling is done entirely in css. I wanted to make something a little more original, but I also wanted to change the older layout because it was pretty lame. I think this layout will change pretty soon, but it seems like a step up from the older layout.

I showed it to my dad this morning and he said that the fonts are hard to read. I think part of this is because I was designing on a mac, but it looks a little different on Windows. Well, let me know what you think. Does this layout make things hard to read? Is it a good layout?

Time Management

Friday, August 10th, 2007

When most people (at least many college students) think of time management, they think of procrastination, of wasted time, and of all the tasks that could have and should have finished. It’s not uncommon for people to put things off for tomorrow (i.e. put them off until the deadline) because there is some more pressing thing that needs to be taken care of (read: watching TV). For me, time management is a little different.

When I think about managing my time, I think not about putting things off, but about taking on too much. I think about how there’s absolutely no way I can finish all the things I wanted to do, regardless of how efficient I am. I think about how I push myself too hard for several days, and then all of a sudden I’ll need a couple of days of doing nothing just to recover. My problem isn’t that I waste too much time, it’s that I expect too much out of myself.

Early in the summer, my brother advised me to set my goals high, and then strive to meet them. This is pretty sound advice, except when you set your goals so high that you never meet them. It becomes really hard to keep doing this, because you never get the sense of accomplishment that comes with meeting your goals. I’m almost sure that I’ve set my goals too high, and that combined with having too many goals has really started to wear me out. I can meet each of the goals individually, but when I’m trying to work on all of them at once, it’s seemingly impossible.

My problem has always been that my interests are too diversified. It’s been that way for as long as I can remember, but now that I’m trying to excel in all of my interests, I’m having serious time management issues. In high school, I was juggling athletics, music, academics, and my social life. I’m still trying to juggle all of those things, just each one has become a lot more intense. Rather than just play soccer a couple times a week, I now want to be exercising a couple of times a day. Musically, I’ve added an instrument that I want to master in the guitar, but I still want to increase my proficiency on the clarinet. And academically, not only am I a full time student, but I also have all these side projects to work on. With all of these things taking high priority, it’s pretty obvious why I don’t have a lot of free time.

My mom commented yesterday that I’m always on the go, always doing something. I guess that means that I don’t waste a lot of time, and in that sense, I manage my time pretty well. I have a general plan for each day, and I try my best to go with that plan and do all the things I set out to do. Unfortunately, it’s really discouraging when you physically cannot do all the things you set out to do, and you never get the sense of accomplishment that comes with it. After awhile, things start to seem futile and it becomes harder to motivate myself each morning. Sooner or later, something, either my insatiable desire to push myself or my will power, is going to give.

Ultimately the solution is to cut back on my interests, focus on a couple of things and do those really well. The second option is to decrease the intensity of my goals, and strive for mediocrity over a wide range of interests. Certainly the first option seems better, but I’m not ready to give up on the things that I love. When I’ve been playing music for so many years, I’m very hesitant to throw away all of the time, money, and effort I’ve spent on it to focus on school or athletics. At the same time, I won’t be able to keep up this high intensity across all of my interests for very long. Hopefully when school starts, I’ll find a balance that I can maintain for the next year or so.

Clarinet

Wednesday, August 8th, 2007

I picked up my clarinet two days ago for the first time in about 5 months, and I was pleasantly surprised with my playing. It definitely wasn’t good, and I used to be a lot better, but after not playing for so long, I expected to really suck. I guess it’s like learning to ride a bike, you never really forget how to do it once you’ve learned. Granted, you’ll be a little rusty if you haven’t ridden for awhile, but you’ll never have to start over and learn again. Apparently it’s the same with music. I’ll probably never entirely forget how to play the clarinet. My playing ability will deteriorate (as it has this time), but it’ll never completely disappear.

So after high school, I pretty much stopped playing the clarinet. I wasn’t part of an ensemble anymore, I had stopped taking lessons, and I didn’t really see myself playing that much in the future. My mom would try to motivate me to practice, but I didn’t have anything to practice for, so I rarely did. I’ve been trying to get into the University Wind Ensemble at school, but rehearsal times always conflict with my classes, so I still don’t really have a strong motivation to practice. This semester, there was the slightest chance that I could squeeze rehearsal into my schedule, so I decided I should practice if I actually wanted to audition well. Just by practicing once, I rekindled some of my passion for music and now, even though there’s no way for me to be in the ensemble, I’ll keep practicing because I thoroughly enjoy it. I no longer need the motivation to practice, because I remembered how fun it was to just practice by myself and notice my own improvement. I’d still like to join the University ensemble, but I no longer need it to motivate me to practice.

After playing for so many years, and spending so much time, effort and money, I don’t just want to drop the clarinet. When I’m older, I’d like to be able to play in a community band or something recreational, and I need to keep practicing if I actually want to pursue that. It has definitely become harder to practice since I started playing the guitar, because I now have to divide my limited time between two instruments. Being in an ensemble really helps, but until I can actually join the group, I need some motivation to practice. I found that motivation on Monday, when I remembered how much I enjoy playing.

File-Renaming Script

Wednesday, August 8th, 2007

Let me preface this by saying that I’m really uptight about my files (especially my media), how they’re named, and where they’re stored. All my music is organized by artist, then by album, and all files are in the form title – artist.mp3. It gets to be a bit of chore to rename any new songs that I obtain, but I’ve been doing for so many years I never thought about having something rename them for me. If you can’t tell from the title of this post, I wrote something to do just that.

A brief outline of the idea: I wanted something that would rename any songs that I downloaded to fit a certain template of my specification (It’s not a very commonly used template). I usually download albums, where all the songs are in the same original template, so rather than rename all the files by hand, I wanted something that would rename all the files with just one command. What I have right now, is a perl script that you call from the directory that holds all the song names, and it asks you some questions about how the files are currently named and how you want them to be named, then it changes all the file names for you. The interface right now is pretty basic, but I just wanted to get the project functional at first. I’ll probably be making a nicer web interface for this in the next couple of days.

I started coding something to do this yesterday, and I’ve got a decently working template. Unfortunately it relies on a Unix-based OS (it’s running on my mac) , so it won’t be compatible with Windows. It takes advantage of perl’s very straightforward interaction with the shell and uses the shell’s mv command to actually rename the files. The harder part was actually coming up with the new name for the file based on some pretty generic user inputs. The script currently asks for: the ordering of the naming elements in the file, how those elements are delimited, how spaces are delimited, and the file extension. Then it asks how you want the elements to be ordered (and which elements you want in the name) and how you want them to be delimited.

From all the input data, I use shell’s ‘ls’ command to get all the file names, then I split them by the element delimiter (one of the arguments). A simple regex converts all the space delimiters to regular spaces, and then I map the ordering of the original file to the desired ordering of the new file. From there, I just join this with the desired delimiter, and add the file extension back on. Then I can just mv from the old file name to the newly build file name and that changes the filename. It’s that simple.

Of course, it won’t end up being that simple. I need to add in a lot of error checking and input validation even before I start improving the interface. I also want it so that you just need to pass in 2 arguments for initial format and desired format and the script figures the rest of it out. Unfortunately I’m not exactly sure how I’d go about doing this. In terms of error checking, I don’t want to rename any files if one of the files fails, so I have to figure out how I can go about this (I haven’t really thought about it and I don’t know off the top of my head). I also want to make the outputs look a lot nice, and as usual I need to document the code a lot better. Then I can get started on that web interface.

This is a pretty quick project that I don’t intend to spend much more time on, but it’s gotten me more familiar with the shell, with using perl for scripting (rather than for web stuff), and also with regex’s and string manipulation. Aside from me learning more, the real motivation is that it’s a script I would use a lot, as I do download a lot of music and I want to have it all named properly. Assuming that I make the interface to the script a lot nicer, it’s a script that I and hopefully some other people would actually use.

Web Design: 7 Lessons I Learned from WeNote

Saturday, August 4th, 2007

Since January, I’ve been working on and off on website/application called WeNote that I hope to release for the last time in December of this year. Now that I’m pretty much done with the structure of this blog, I’ll be talking about that project a lot mere in here. Anyway, This was my first time making a production quality application so naturally I made a lot of mistakes. I’ve learned a lot from these mistakes and now feel a lot more capable of making something that users will actually go to and be interested in. I’ve already released two versions of the website, both of which have been met with brutal critiques from my friends and very little site traffic, so I shut the site down and am rebuilding it from scratch. Although there were also a lot of back-end mistakes that I may, here are 7 of the Web Design-related mistakes that most web designers will have to learn at some point.

Version one of WeNote was absolutely terrible. The layouts of pages were not thought out at all and inconsistent across pages, the color scheme was terrible, content on pages was poorly written, and the site just didn’t look appealing. In my defense, I didn’t spend much time working on the user experience because I was just learning PHP. I focused a lot on the back-end, which even still didn’t turn out that well. Version two was a significant improvement from version one in terms of functionality, but visually it was still pretty bad. When I released this one, I told all of my friends to use it, and they all made accounts, but I was getting no traffic. I attribute most of this failure to lack of a good user experience, because the back-end was pretty functional. With that introduction, here’s the list.

1. User Experience is really important: This one seems obvious, but it still needs to be stressed. Without an amazing user experience, users will not come to your site, regardless of how functional it is. This is a big problem for me, because I’m less interested in layout design and graphic design and more interested in the back-end code for the site. I think a lot of hackers prefer to work on interesting code (i.e. back-end) than on the stylistic needs of the site, but both aspects are essential to any good website. Every time I showed off WeNote to one my friends, he always said something like, “The UI sucks.” I really should have listened to him and spent some time on the UI, but it was really easy for me to procrastinate. As a result, for the third release of WeNote, I’m actually building an HTML mock-up of the site before I even start on the back-end, so that the site has a decent user experience.

2. Attention to Detail: This one I actually learned from building a different website, but it’s incredibly important. When styling a website, every single detail matters. My friend and I co-operated on a website called uclinked a couple of months ago. We didn’t spend much time on the site (it was a pretty simple idea), but everyone who I showed the site to noticed a smudge in our banner image. It really took away from the sight because that was the first thing everyone noticed, and it immediately gave them the impression that the site was poorly made. From this experience, I learned that every single detail matters. On my mock-ups for Version 3 of WeNote, I’ve spent a lot of time making sure that colors blend will, that images and borders line up and are consistent, and that every element is exactly where I want it and looks exactly how I want it to. It’s time consuming and tedious, but it’s essential to building a successful site.

3. Navigation: This is actually related to functionality of the site, but it contributes a lot to the user experience. When a user visits your site, you want them to be able to find what they want easily, so you need to have a very clear, simple navigation system. Navigation areas aren’t the places to show off your creativity. These guys have to be easy to find and easy to use, otherwise people will get frustrated with your site, and they’ll never come back. Don’t try new navigation techniques on your sites. People expect to find navigation elements in certain places, usually right below the banner, or on the left side of the page, and if they don’t find them where they expect, you have a problem. You can be creative with your buttons and any animation you want in your nav bars, but make sure people can find them and use them very easily.

4. CSS can’t do it all: It’s time to face the facts, you’re going to have to use some images to spice up your site. As amazing as CSS is, it’s not going to make you’re site look good on it’s own. You’ll need some Photoshop-ped or GIMP-ed images around your pages to complete the user interface. The problem here is that it takes a long time to learn how to use good image processing software, and a lot of hackers would rather be coding that messing around with GIMP. Unfortunately, it’s something that has to be done, and it really makes your site look better. With plain CSS, you can make your site functional and usable, but it definitely won’t be very cool looking.

5. Textual Content: If you have a lot of text on your web pages, it’s important that every word is carefully selected. You don’t want too much text (unless your writing articles), but your text must convey your message to the users. For WeNote, I had text on my home page that explained what WeNote was and why someone would want to use it, but it was pretty wordy, and not even very explicit. It might be a good idea to get someone who writes really well to come up with blurbs for you if you’re not very good at it (like me). It’s also important to place text in places that people expect it, and also make sure that the font is well sized and easily readable.

6. Design for your audience: When styling a page, take some time to think about what the page is supposed to be, and what your users will expect. For example, there’s a pretty standard template for online newspapers with Old-English-y font for the header, a navigation bar for the sections of the paper, and recent stories on the front page. You can also think about what your users like, and theme some of your images, fonts, colors, etc. around what they like. If your page is more artsy, you may want your header, and buttons to reflect that blurring into the other elements. Maybe you could use some really nice nature picture as part of your banner. At the same time, don’t be too cheesy or too exclusive. You don’t want to intimidate possible users with your design, so keep your theme a little general. This is something I haven’t exactly figured out yet, but I’m working on it.

7. Design for all browsers: Internet Explorer, Mozilla Firefox, Apple Safari all behave slightly differently when it comes to CSS and images. It’s terrible that things aren’t standardized, but as a website designer, you need to be sure that regardless of browser, your users have a great experience on your page. Test your site on all browser to make sure that it works properly and that it looks good. Have separate style sheets to load based on what browser is being used (Javascript can detect browser and load the appropriate style sheet). One of my friends made me a banner for WeNote in photoshop, and it looks great in Firefox on my Macbook Pro, but in Safari, the colors are purple, rather than blue, and the banner doesn’t fit with the rest of the page. As a result, I’m going to have to change my banner image, even though what my friend made was really cool. Compatibility with different browsers is essentially to attracting a wide user base.

So that’s some of the things I learned in the last 8 months of web design. I’m still consider myself a novice at it, so I’ll be learning a lot in the future and I’ll write about some of that too. I hope this is useful to anyone interested in designing a website.