posts by tag

reflection (41)
Flickr Video

Several months ago I posted about Flickr Video. For the most part, I was in favor of neglecting it. My position hasn’t changed, really, but I feel compelled to give kudos on their implementation.

I’m relatively satisfied about the way Yahoo has introduced this (inevitable) feature. I personally like how they’re intertwined with the photos. I didn’t really expect that. One might not even know video is supported by Flickr until it’s time to upload. Even the URL for a video is of the form ”/photos/[user]/[id]”.

I think limiting the length of a video to a max of 90 seconds was a good move, too. I know that won’t last, but the initial 90 second limit may weed out those who were wanting to use Flickr as a YouTube clone.

Considering the impossible reality that Flickr would remain 100% based on photos, overall, I think video couldn’t have been introduced any better. That’s not to say I’ll ever upload a video, but it is what it is. And considering the millions and millions of Flickr users, all with different concerns about video, I think they’ve met both sides of the argument on common ground.

Looking back on 2007

The first thing I’ll mention is that I’m finally finished with college. Fall of 2007 was my final semester of graduate school, forever. No more tests, no more homework, no more projects, and last but not least, no more group crap work. I would say no more studying, but Amie often claims that most of the books I tend to read “are like textbooks.” And in a way, I agree. And that leads me into the next thing I want to mention.

This past year was a big year for me in terms of programming. Not necessarily in any particular language, but more from a high-level, “best practices” point-of-view. I no longer ignore (any) problems. That may have started in 2006, but now I try not to tolerate something that needs fixed or redone. Honestly, I get somewhat anxious if I know there’s smelly code lingering around. If I think I can do better, I will. Even if that means rewriting a module that’s only a month old. I work a lot harder to keep my code as clean as my abilities allow, and I only envision that desire strengthening.

In addition to that, my problem solving abilities seem to be sharper than ever. Naturally, as I gain more experience with Ruby, I’m realizing many more solutions and ways to approach things. And that doesn’t only apply to Ruby/Rails applications, which is even more rewarding.

So, no more school, I’m more of an “agile developer,” what else… oh yeah, I got married! And that, of course, was the highlight of my year. I didn’t think too much would change, but it’s like a new feeling of “togetherness” that I really enjoy. It’s now official: no matter what I do in life, I’ve always got Amie. It’s a good feeling.

As far as the list is concerned, I’m reading a lot more and I’m taking around 5 times as many pictures as the previous year. However, “consistently working out” and “learn a new programming language” have been carried over as goals for 2008. Wish me luck.

Finally, some REST

No, not the “why do you insist on no more than 5 hours of sleep” kind, but the resource representation kind. Here’s part of a post I read a few days ago:

If I had to choose the single most not-really-well-understood, mystified, unsuccessfully demystified, explained and still not-really-grasped topic in the Rails world (and beyond), my vote would definitely go to REST.

Maybe it’s not quite that bad, but there does seem to be a bit of clarity missing as to why it’s all the rage. I understand some of it, but I think I’m missing most of it. Although, I’ve yet to actually use it. I know it’s been around for quite a while now, but… well… I have no excuses; no real excuses. My shallow excuse would have to be laziness. I’ve been far too lazy the past few months (or year?) to convert a single existing application to REST. And to be honest, aside from laziness, I can’t say that I completely understand the point.

I’m aware of how nice it is for API development, but if there isn’t an exposed API involved, is it really worth it? Is it the clean(er) URLs? The true HTTP caching? A better convention? Nicer routes.rb file? More focused controllers? (Supposedly) better application designs? All of the above?

That stuff is all well and good, but is that really what’s driving this force of RESTful architectures? It just seems like there’s something [bigger] I’m missing.

Regardless, I’ve put it off long enough. Now that Rails 2.0 is on its way, it’s time for me to stop making excuses. I need to get on board so I can realize why it’s so wonderful. Since the core team felt that it was a good thing to integrate REST directly into Rails, I’m sure it is; I just need to learn more about it.

So from here on out, all of my new applications will be RESTful, but I still don’t know that it’s worth converting existing applications. Who knows, though, maybe that’s easy to do.

Social applications are anti-social

Lee mentioned how teachers can now use Facebook to stay in touch with students. I’m sort of torn on this idea, and I may be a little hypocritical in explaining why.

First of all, people (including myself) spend too much time on the computer. Pushing it even further by having teachers recommend their students use Facebook might not be a good thing. In Lee’s post, the part that struck me was…

If my high school teachers would have been willing to work with me through Facebook, I know I would have done better. There were so many times I wanted to ask questions and clarify assignments, but there was no way I was going to do it front of the whole class…

Now, everyone has been in that situation, but it’s bothersome to think of avoiding human interaction with the teacher as being a solution. It seems like that would harm social skills and the developing personalities of young minds. While I’m sure everyone has neglected a question due to fear of how other students might react, a habitual “always ask online” method may prove to be even worse.

And here’s where I flip the switch on this thought. I’m the first person to ask, “Why can’t this be online?” And I’m next to the first person who would rather send an email or text over going to office hours or using the phone. BUT. I don’t always see that as a good thing, I just think it’s how I’ve grown. And maybe that’s the problem. Social applications and other means to neglect human interaction weren’t inflicted upon me, and I ended up wanting the “online version” anyway. With high school students spending 3-6 hours on MySpace as it is, promoting even more of this stuff just may be a little too much.

I wonder if getting involved with all of these “social” applications can actually turn a person somewhat anti-social in the real world. Who knows, maybe we’re nearing a point where we have to decide which is more important.

Childish behavior

Today was a bad day. It was another one of those days where nothing seemed to go right. At work I’ve just been switched to a C# project, which pretty much sucks. But it wasn’t necessarily the code that bothered me. Sure, the syntax is ugly, but that simply wasn’t it. I don’t agree with a lot of the .NET methodologies, but again, it wasn’t .NET that ruined my day—it was my childish behavior.

All day I spent my time on simplistic things, yet managed not to complete a single task. I got so frustrated because I couldn’t do the things I knew were easy. It was one right after another. By lunch I was definitely ready to go home.

Unfortunately, there was a guy working with me who is relatively new to .NET and OO programming, and was trying to learn a thing or two. I say unfortunately because I was too frustrated with myself to teach/explain anything. Having someone watch the simpler things go badly aggravated me even more, since I’d normally have everything I tried today finished in 30 minutes.

Now I could complain write all day about how much I don’t like this and that, but I’d just be ignoring the real issue: my poor attitude. The truth is there are tons of people who write successful .NET applications and really do enjoy it, I’m just not one of them.

I honestly am annoyed with the thought of being back at the beginning again; especially with a language I have no desire to learn. As a result of my annoyances, though, I ruined mine and the “paired programmer’s” day today. From now on, I hope to quit being so childish when I get stuck on things, and do my best to keep a positive attitude no matter what the situation.

Of course, talk is cheap, so we’ll see how it goes.

Curiosity

A natural inquisitive human behavior that lends itself to exploration and investigation.

I’m a very curious person in regard to a lot of things. I enjoy looking at someone else’s work, and sometimes comparing it to my own. I’d say many others are curious in the same way. When I posted about redesigning this site, for a couple of days, the traffic rose from (an average of) 60 visits per day to 110 or more. I’d say curiosity was the reason.

Golf Trac currently has 68 signups. I’m betting at least half of them aren’t by golfers, and I bet over half have no intentions of actually using it. They’re just curious. Plus, anonymity takes curiosity to a whole new level.

Fortunately, this site and Golf Trac serve a purpose above how many visitors/users I can attract. Honestly, I would do nothing different if I had 0 visits and 0 sign-ups. For me, being able to build anything I want is gratifying enough. But I do believe curiosity is one reason why it’s so important to keep software evolving. Change keeps those curious minds coming back. Plus, applications that neglect change often fall out of favor and become obsolete.

Dead software is about as attractive as dead batteries.

javascript can be refreshing

In addition to CSS, much of the UI work I do involves writing javascript. Lately, though, it feels like that’s all I’ve been doing. There was a time when I’d cringe at the thought of raw javascript, but with libraries such as prototype.js, jQuery, mootools, YUI, script.aculo.us, Dojo, Behaviour, and a few others, writing javascript these days isn’t so bad. In fact, anymore, I actually enjoy it.

Aside from work, I’m building an application that Amie needs to execute her thesis tests. It requires a fast, responsive front-end, and needs access to the server, too. Needless to say, it’s almost entirely ajaxified. I’m using prototype to back me up. So, between this and work, I’m knee-deep in javascript. (In retrospect, this may have been a nice opportunity to try out camping.)

One would think being forced to write code in languages other than my favorite(s) would be disappointing; but it’s all in the perspective. In a way, taking a break from the code I love to write (i.e. Ruby) is refreshing. Although, I often try to write javascript that resembles Ruby (prototype makes that easy to do), but that’s why it’s refreshing. I develop other ways of thinking and can appreciate Ruby/Rails even more along the way—it’s a double whammy. On a side note, I can see how writing a javascript framework could become very addicting… maybe that’s why there are nearly 250 of them.

Final semester of college

This coming Monday starts the beginning of the end of my college career. At this moment, I can’t think of a better feeling. The last three weeks before the end of this past summer semester were, to say the least, way too busy. Of course, it was my own fault for procrastinating, but I’m so tired of being busy outside of work, my fault or not.

College had its ups and downs. I loved the challenge and I like to learn, but I’m not necessarily doing what I spent 5-6 years studying (referring to undergrad, here). For my profession in doing what I love, I’ve essentially taught myself nearly everything. Grad school helped to fill in a few gaps, but even there I wasn’t overwhelmed with useful information. I’m sure I picked up a ton more than I realize, though—hopefully.

Despite my thoughts on college, I’ve only got four months left, forever. No more projects, finals, group work, or summer semesters that span the length of two summer sessions. It’s all coming to an end, and I couldn’t be more ready.

A little while later

At work, I was tasked with brushing up some .NET stuff I’d done about a year (or more) ago. I’ll spare the traditional “I can’t stand .NET” rant, just know that I can’t stand .NET.

The first thing I realized when looking back at my 12-18 month old code was that I didn’t write it; I couldn’t have. But denial only took me so far. Apparently, I had no conscience of good programming back then. The funny thing is, who’s to say I won’t feel exactly the same way 12-18 months from today?

Earlier this week, I wrote a small novel about a case where I was using method_missing. My rudimentary plan was skewed a bit, but for some reason, it didn’t deter me from using method_missing. I tweaked things in an uncomfortable way, as to fit the situation, when I really just needed an even simpler association method. From that little hiccup, I felt as though I had gained a whole new wave of knowledge. All of a sudden, I was thinking clearer than ever before. I had experienced another “What was I thinking?” moment.

Every time I look at code a little while after I’ve written it, I’m astounded by how much I’ve improved, despite the time gap. But the truth is, I’ll never be “done” becoming a good programmer; I’ll always learn and improve. Unsurprisingly, that’s a lot of why I love what I do. Learning to solve programming problems better, is like a fresh view of programming altogether.

The “What was I thinking?” moments will never cease; they’ll emerge every couple of months, forever. There are times when good code turns stale, and there’s always a better implementation. While I may have limitations as to what I’m capable of, with constant refactoring and attempts to improve, those limitations diminish more and more everyday. Sometimes, though, I don’t realize that until a little while later.

Personal Projects

Golf Trac is something I can’t wait to use. Originally, using it was all my motivation. Now, I’m remembering how fun it is to work on personal stuff, and that boosts my motivation to finish it even more—it’s a win-win. I have to say, though, I wouldn’t enjoy it nearly as much without Ruby/Rails. I’m still figuring out more and more, which is awesome. It’s that amazed, “Ah ha!” moment that constantly adds to the experience (for me, anyway).

Personal projects in general are fun to work on (especially when it’s not rpheath.com again). Nobody can tell me what to do or when to do it. If I want to spend a week on nothing but adjusting pixels, I can. There’s no worrying about this decision or that decision, I only have to please myself. And, believe it or not, sometimes I’m not in the mood to program. It’s nice to be able to set it aside for when I am in the mood.

I think Google employees get 20% of their work-week to work on personal projects. That’s what I need… one day per week to work on my own stuff, and get paid for it. Of course, a full week would be much better (lucky bums)1.

1 Yes, I realize it took hard work to get there. And they’re not really bums.

Getting ahead in life

What I’m quickly realizing about life is, no matter what you do right, it’s increasingly difficult to get ahead. Everyone goes through it, but I guess I’m (more or less) just starting out.

Marrying Amie was the best thing in my life. But a big part of being married, that I hadn’t considered before, is insurance. Yes, insurance. It drives me insane. Right now, our insurance expenses cover: life, car(s), ring(s), and since we’re still renting, we have renter’s insurance. On top of that, a recent quote for health insurance—just to add Amie (she’s still a full-time student)—came in at just under $500/month! “But it’s pre-taxed.” Oh OK, that makes everything just fine. And another thing about insurance, anytime you actually use it, the provider raises the cost. It’s absolutely absurd how much insurance costs, but at the same time, you’ve got to have it.

I honestly feel like I’ve done just about everything right so far in life, and I still get smacked in the face with a few things. I’m learning first hand why it’s so very important to invest, invest, invest while you’re young. We don’t have kids or a dog, and it feels like it takes nearly everything we have just to make it. I’m so excited to get a house, but it’s no fun to realize the budget we thought we had is about 25% less.

A friend of a friend told me about a guy who got a raise that pushed him into the next tax bracket. After his raise, he ended up making less than he was before the raise. And all you can say is… that’s life!

All out of ideas

Since the end of January, I’ve designed between 7-10 sites from scratch, and I’m currently working on another one. It’s beginning to wear me out. I don’t mind working that much, but it’s the depressing realization that I’m all out of ideas that’s breaking me down. It’s hard to be creative and do something fresh and new over and over and over again. I think I’ve hit a wall, and I have a deadline coming up around mid-August for another new design.

Sometimes I wonder if I’m moving too fast; sometimes I wonder if I like this stuff as much as I say I do; and sometimes I wonder if I just need a break from it all. It can be frustrating… very, very frustrating. But in the end, bad days come and go. I’ll move on, and probably be happy with the design. For now, though, I feel like complaining.

Code abstraction and Rails

Sometimes I have a hard time abstracting code when developing in Rails. I mean, the act of abstraction itself isn’t the problem, it’s how far to go with it—or more accurately, when to stop.

When I first started doing web development, I wasn’t too concerned with abstraction. I barely even knew what it was. Like most beginners, if I got something to work, I was satisfied… until I wanted to update something. It was an obvious pain to modify and update code, since I had to remember (or search) for all instances to stay consistent. Then (in addition to object-orientation), I realized that anything I was duplicating I should extract out so I could reuse it—brilliant! (It’s weird to think I was at a point where I didn’t think like that.) So I began to abstract only to prevent duplication. Now, with Rails, I can’t help but abstract everything. Ruby is so readable by nature, it’s stupidly tempting to want to continue that.

I enjoy immediately knowing what’s going on in any of my methods, just by reading them. Typically, I set them up that way. Sometimes, though, it seems like I’m tracing through all of these abstracted methods, and I don’t know if that’s a good thing. As an example, here’s a method I wrote to publish content out to XML:

def publish_xml_for(root_id)
  content = Content.find(root_id)
  create_publish_directory_for(content)
  output_xml_for(content)
  flag_as_published(content)
end

Anyone can look at that and know what’s going on. I’m not necessarily reusing any of those methods (yet, anyway), I just like how readable it is. But altogether, the publish_xml_for method works as a compilation of 5 or 6 methods (the methods inside of it are also abstracted to be very readable—it never ends).

Also, I find myself writing private methods within the controller class—would it be better to add these to some sort of extension in the lib directory? I don’t do that very often, so I have yet to build up habits as to when that should happen. I’ve written some tag extensions for polymorphic tagging, but that’s about it.

Status of plans for 2007

It’s six months into 2007, and I’m sort of slacking on what I had proposed for the new year. So far, I’ve definitely read more books than I normally would; I’m using a calendar consistently (but not quite daily); I’m a lot more frugal than I’ve ever been before; and I’ve already taken 16 GB worth of pictures since purchasing the new camera. Areas I’m slacking: working out and learning a new programming language.

I’m annoyed with my level of effort toward going to they gym. I’m annoyed because I know I’d be happy and feel better after 6 months. It’s pretty much guaranteed, so why don’t I go? The absolute best time to go is in the morning before work, but that’s really hard to do without someone else going. I’m up too late at night, and like a child, refuse to go to bed earlier. Sleeping 8 hours a day means when I’m 60 years old, I’ll have slept 20 years of my life—that’s too depressing for me.

Concerning a new programming language, I’ve come as far as choosing one: Python. I’ve looked into it and read a little, but never attempted to write anything. I still love Ruby/Rails, so my motivation for something new is non-existent. Right off the bat, I don’t think I would like the open-ended blocks/methods in Python. Interpreting code based on spacing and indentation isn’t a bad thought, but I’m not sure it’s for me. I’m strict about that, but I enjoy the closure of explicitly ending a block or method. Anyway, I have a side project I started a few months ago (in Rails), but haven’t had time to work on it much. I don’t think I’ll be able to learn a new language until that’s wrapped up—hopefully it will be before 2008, though.

Google inconsistencies in design

In their defense, consistencies among different applications may not be a valid complaint (like why the new top bar doesn’t show up in reader… and where’s reader search?) But one thing that I don’t get is their usage of “tags.” Is it a tag? Is it a label? Is there a difference? Reader has two options for organizing: add tags and add to a folder. However, they both end up with the same result… folders in the sidebar. It’s somewhat misleading, I think. Docs & spreadsheets represent tags as folders as well, where gmail chooses “labels.”

When I think of tags, I think of a N:N relationship, which means I typically tag something with multiple tags at a time. That’s exactly what they let you do, but I don’t necessarily want my feeds and files to be strung out across multiple folders. To me, folders are more of a 1:N relationship. From all aspects of a folder, there’s not one thing that says N:N relationships exist. In a file system, do you keep your files in multiple folders? Probably not. But if you could tag your files, would you give them more than one tag? Most probably would. It’s all fine, I’m just making a point (and probably being too critical). It was obviously intentional, so I’m sure they have very logical reasoning behind it.

And on a side not, after seeing the new interface for docs & spreadsheets, I would much rather have folders than labels in gmail.

Another drab part of web development

Last week I read that Flickr has 525 million photos now (which is nuts) and 55% of Flickr users reside in non-US countries. That means ~289 million photos come from outside of the US. And that’s before they added any multi-lingual support just last week, which amazes me (I could never use an application that’s in another language, even if it’s image-based).

I’ve already mentioned what I think is the worst part of web development, but I’ve since thought of another candidate: internationalization and/or localization (I think they’re the same thing). The reason I can’t explicitly say this is ahead of or just under deployment is because I’ve never actually done it. I know there are plugins (for Rails, anyway) that assist in this issue, but even so. Easy or hard, I’m glad I don’t have to worry about it. I just think it’s a boring problem.

Stepping back for simplicity

I played basketball daily for years and years. Before making a pass, I would instinctively blur the entire scene. I’ve always thought it was a little odd, but ironically, it helped me to see the court better. I’ve since come to find out that this tactic is a desired approach when a simpler view is sought, and applies to much more than basketball.

At the end of the second law in The Laws of Simplicity, there was mention of something that stood out to me: a “blurred approach” to design.

Groups are good; too many groups are bad because they counteract the goal of grouping in the first place. Blurred groupings are powerful because they can appear even more simple, but at the cost of becoming more abstract, less concrete.

Working within the details can isolate decisions. Sometimes a decision is best made from a different perspective—a broad or abstract (even blurred) perspective. It’s often good to take a step back and determine if what you see as a whole feels right.

The best designers in the world all squint when they look at something. They squint to see the forest from the trees—to find the right balance. Squint at the world. You will see more, by seeing less.

I was seeing the forest from the trees; that’s why I would blur the basketball court. And that’s why I often get a better view of a design from standing at the doorway of my room. Sometimes, it’s the simple view that helps the most. “It [simplicity] feeds the mind’s natural hunger to solve puzzles and to find the right gestalt.”—John Maeda

The worst part of web development

I started a post on this a couple of days ago, but haven’t had a chance to finish it. After reading Chris’ Deployment woes on the slate blog, I figured I’d go ahead and post a few of my thoughts on deployment.

I’ve spent the last couple of years working in web development and I’ve loved (nearly) every bit of it. But there is a part of this field that I don’t like very much: moving an application into production. Typically, I end up in one of these three scenarios:

  1. successful deployment on the first attempt—in fantasy land, maybe
  2. unsuccessful deployment and knowing what the problem is—this is usually where I end up, where I’ve forgotten to do something, or incompatible versions exist, or whatever
  3. unsuccessful deployment and not knowing what the problem is—this is what I fear and despise, and is the very reason for my pessimistic outlook on deployment

In the first case, life isn’t too bad. Still, whether it’s 10 seconds or 10 minutes, it’s always stressful waiting to see if the application is still alive after deployment. What a relief when everything goes smoothly.

In the second case, it’s somewhat comforting to have an immediate idea as to what the problem might be; but at that point I’m working in light speed trying to fix whatever is wrong. Annoyingly, I always make quick decisions which usually have consequences. But nonetheless, this case is just a matter of time until you crank through the things you’ve realized were wrong.

The third case is flat out sickening. I love problem solving, but that’s different. I get chills just thinking about number three. I’ve been in that situation more than I’d like, even with my own site. That type of troubleshooting is terrible. As soon as I resort to Google, I’m in a state of desperation. And of course, a lot of what works for other people never seems to work for me.

The other day I had about 2 hours worth of troubleshooting a live application after deploying (it could have been worse, I guess). Looking back, I don’t know why it took me that long to fix. Maybe it relates to how disoriented and frantic I get when trying to fix something in production. Unfortunately for me, I’ve yet to come up with a consistently smooth method of deployment. Capistrano looks ideal, but when I tried it the second time a few months ago, I couldn’t get everything working properly, so quit on it. The bottom line: deployment is by far the worst part of web development.

Borderless designs

I used to be obsessive about borders in a design. Obsessive in the sense that I had a hard time leaving them out. I felt as though they were necessary to crisply distinguish sections of a site. I believe I’m growing out of that, now. I’ve intentionally left the borders off of my site this time1, since I was confident contrasting colors would be just as effective. While borders are nice in a lot of instances, I’m digging sites without borders more and more.

  • Example 1—slight use of borders, but overall it’s the colors that separate the content
  • Example 2—borderless for the most part
  • Example 3—very clean design (I like this version more than the redo)

1 I realize there are a few borders here and there (code snippets, the comment form, etc), but I’m mainly referring to the content containing area, and major focal points: the site header, post headings, comments, and so on.

1,500 pictures in a month

My new camera arrived on April 18, 2007. Sadly, the last picture I took with it dates to May 20, 2007. Over that span of 30 days, I took 1,500 pictures. The professionals say to take pictures everyday, as that’s the best way to get to know your camera. I agree. I learned so much over the last month. Honestly, I’d like to take 3,000/month, which I plan to do. I’m going to focus on one specific thing each day (aperture, exposure, shutter speed, etc), or until I feel comfortable moving on. And then I’ll cycle back through to the beginning. Lately, however, I’ve been occupied with other things; but I’m dying to get back in the rhythm of daily pictures.

Is it important to be a well-round programmer?

Back in January, I posted about my plans for the new year. Number five on the list was to learn a new programming language. I thought it would be good for me to grasp how other languages handle the things I’ve come to learn in Ruby/Rails. I still agree with that, but I’m having a terribly difficult time prying myself away from Ruby. I’m so infatuated with it. For Christmas, I got a Python book. I’ve yet to read one single page, but since January, I’ve somehow managed to read three more Ruby/Rails books.

I know I’ve mentioned this numerous times, but Ruby is my first real attempt at a lot of things (OOP, Extraction, DRY code, MVC, etc). I did a little VB.NET and C#, but never had the desire to go home and read books about those technologies. So, being part of projects that involved those languages, mixed with the design aspects that I was more-so responsible for, I didn’t get too much out of it. I do remember having to explicitly write out the “getters” and “setters” for each attribute in .NET (which is ridiculous when compared to attr_accessor). And I can’t even begin to tell you how sloppy my PHP code was, as that was my first attempt at something on my own. I just made it work, so I don’t really know what PHP is capable of. I do know I’m not crazy about the syntax (I knew that back then, though).

I keep coming back to the thought of learning a new language. And now I’m considering Erlang (examples: 1 and 2). I read something on it (or watched a video) over a year ago. But when my time is limited, I’d rather reinforce and learn a language I know I love, rather than start over with something new. What’s your take on being a well-rounded programmer? Can that help you learn the language(s) you know you love? If so, is it worth it?

It was only a matter of time

I’m growing terribly sick of this site. To me, the design is very ugly and bland. It all started to go downhill when I began to realize (and despise) the faded/foggy look from the blend of color choices I’ve chosen. I’ve made an attempt to sharpen things up a bit, and it worked, but was nowhere near enough to bring me back as a fan of my own site.

I no longer like showing a little bit of the “Latest Post.” Really, that doesn’t do anybody any good. It’s a hassle for me, because if the post contains an ul or blockquote or h2 or whatever, I have to worry about the word count ending before the closing tag, which would throw the entire page layout off the rocker. As a fix, I just strip out all of that stuff from the main page (and the bits, as well). It’s a lame solution to something that has no benefit to begin with. There are a few other things like that, but I’ll spare you the details.

My first post on this site was sometime in August of 2006. It’s amazing how much I’ve learned since then. Compared to now, the code here is a mess. But I guess that comes with learning—old code always seems like a mess. In a way, I want to start over again on a clean slate, but as always, time is against me.

I have an idea for something simple, and now, I could probably throw it together rather quickly. I just don’t know if it’s worth it. I thought about Mephisto or a similar solution, but I like to get more experience something out of it. Plus, I enjoy going custom with my own site. I guess I’ll figure something out, and hopefully sooner than later.

Tiger Woods and Rails

A while back, I read a post where someone was listing a few Rails performance tips. Come to find out, half of them were things like “bypass ActiveRecord” and “beware of finders” and “use HTML instead of view helpers” and so on. That’s actually a lot of why I choose to use Rails in the first place; the last thing I want to do is rid myself of convenient ways to avoid tedious programming. If you want to write explicit SQL statements or standard HTML, maybe Rails isn’t the right framework. I’m pretty sure any of the Microsoft options don’t have a problem with explicit SQL, but beware, .NET does like to make up it’s own HTML at times.

I don’t have much experience with other web frameworks (except .NET… blah). I was just about to try out Cake for PHP when I was introduced to Rails. Having said that, Rails is what I know best. I think Rails sometimes catches some flack for things because it does so much already, it’s expected to do more—somewhat similar to Tiger Woods.

Let me explain. Tiger Woods is legitimately said to be the world’s greatest golfer. He has set a number of records, and truly is amazing to watch. But what happens when the world’s greatest golfer gets a bogey? Or heaven forbid, a double bogey? Extreme shock, disappointment, and disgust. That’s hardly a fair attitude considering all that he has accomplished. Since he’s currently the best, the expectations of him have far surpassed those of any other golfer—it’s almost surreal.

Rails’ expectations are as high as they are because of how astonished people were in the beginning. It was so easy to work with, but at the same time, everything is relative. It was so easy relative to writing an extra 20 lines of tedious, unnecessary code. Convention over configuration allowed stuff to just “happen.” Now, it’s like Rails gets compared to itself, and it’s supposed to go above and beyond that, which is an endless cycle. I guess it goes back to the old proverb, “the more you get, the more you want.” But don’t forget how painful things used to be, and appreciate how things are, today. After all, it can only get better.

I personally blame Rails to be the culprit for my web programming passion (and yes, it’s Ruby’s fault, too). I don’t know if I would love this stuff near as much if I were stuck in a static environment where my own customizations and ideas couldn’t be put to work. While I rarely do this, I love having the option to dive right into the framework itself and change/add things specific to my needs. Not to mention the sheer beauty of its organization, configuration, and presentation. And being built on top of Ruby makes it that much better. Clean code gives any mindful programmer motivation; and with (Ruby on) Rails, I’ve written some of the cleanest code of my life. Rails is much more than I could ever expect from a framework.

If you’re upset with Tiger Woods not shooting 20 under, or having a “par” day, simply don’t watch him. But I bet you won’t get near the excitement watching someone else.

Mandatory customer service

Or, in other words, customer service via mandatory services. I’ve been struggling with Direct Loans in order to get a recent payment to apply to a specific loan (which I was told I could do, by Direct Loans). I won’t go into the details, but basically an unsubsidized loan found its way into my balance (they accrue interest from the moment you get them, rather than starting 6 months after graduation). I decline every single one, but nonetheless, I have one. So I made a payment to get rid of it, as well as the interest it had gained. That payment was made on January 23, 2007. Guess what? I still have that unsub loan balance, along with more interest. Anyway, it’s been 5 phone calls and 6 emails later, and it’s still there.

Somewhere along the “submit a payment to a specific loan” path, there is a flaw. And while they act like they care, they don’t. Because they know I don’t have a choice in the matter; it’s officially out of my hands. All I can do is keep emailing and calling, only to hear “we will re-submit the request” each and every time. It’s no different than any other service that ultimately leaves you with no choice but to suck it up. Take the Post Office, for instance. They can be as rude as they want to be, but you still have to stand in the line extending 100 feet because they are the only one’s who can mail your package. Sure, you could leave, but where does that get you? Irritated with a package that didn’t get sent.

These attitudes and inefficiencies may not always be intentional, but there’s definitely no effort (or incentive, really) to fix them. Either way, I still have to pay my loans back plus interest, and I’m sure I’ll be standing in that Post Office line again. Oh well, I suppose—there will forever and always be annoyances with customer service.

Programming in Ruby is like writing

Mark Twain once received a telegram from a publisher that read:

NEED 2-PAGE SHORT STORY 2 DAYS.

Twain replied:

NO CAN DO 2 PAGES 2 DAYS. CAN DO 30 PAGES 2 DAYS. NEED 30 DAYS TO DO 2 PAGES.

As his reply implicitly states, there are difficulties associated with short and concise writing—it’s not easy. I agree wholeheartedly. I think this same type of reality exists while programming in Ruby. I can get something working really fast, but (for me at least), it seems like I keep wanting to extract and refactor until the method is as small as it can possibly be. I could probably spend days trying to out-do my current code and get just as much satisfaction as if I were developing something new. I love how much you can do with one single line in Ruby. It’s motivational.

And for the record, I don’t apply the short and concise writing methodology here (obviously). This site just isn’t that sophisticated. But I can see the challenges and fun in that, too.

Feeling good about less lines of code

At the Rails Edge conference, one of the speakers mentioned how, as a young programmer, there was no better feeling than to write a program with an enormous LOC count. It made him proud. And I tend to agree. I remember first learning C/C++ and how good it felt to have a rather large program compile successfully. “The more the better,” I thought. Well, that’s hardly the case. Software development entails writing less and less LOC, intentionally. The creator(s) of Rails have made some logical assumptions that have allowed them to extract a lot of the annoying and incessant work, which provides a more focused development process.

As an example, here’s the controller portion for an edit method using the well-known MVC Java framework, Jakarta Struts:

public ActionForward edit(ActionMapping mapping,
                          ActionForm form,
                          HttpServletRequest request,
                          HttpServletResponse response)
  throws Exception {
  PersonForm personForm = (PersonForm) form;
  if (personForm.getId() != null) {
    PersonManager mgr = (PersonManager) getBean("personManager");
    Person person = mgr.getPerson(personForm.getId());
    personForm = (PersonForm) convert(person);
    updateFormBean(mapping, request, personForm);
  }
  return mapping.findForward("edit");
}

And here’s the cleaner, simpler Rails version:

def edit
  @person = Person.find(params[:id])
end

Rails takes care of the tedious, repetitive, grunt work—much more than I realize am making note of, here. From this example, to cut the Struts method down to one line, a few assumptions had to be made:

  1. Most methods are usually public
  2. Put regularly used objects in scope
  3. No need for a “manager” (which caused two objects to represent person, plus conversion code)
  4. No mapping
  5. It’s a web application, so stuff will fail (remove the explicit throws Exception)

That makes sense to me. While working with Ruby and Rails, I’ve enforced my desire to do more with less. It’s often more of a challenge to write less code to achieve the same results, but it’s much more fun.

The final day at Rails Edge

Yesterday was the last day at the Rails Edge conference. I learned a good bit of Rails tricks, as well as some advanced topics on rake (and many other things that I’ll save for later). Assuming I can find the time, I’m planning on a few intermittent posts about the conference, if for no other reason than to better document what was covered over the all valuable, 21 sessions. Based on the level of trickery mixed in, they’ve made a colossal assumption that you’re more than familiar with the Ruby language and Rails—but that’s why I liked it.

After watching the Rails core developers work for a few days, I’ve found new inspiration to write better code. I know you aren’t supposed to repeat yourself, but for me, it happens. The Rails core doesn’t repeat anything. Not one single line-of-code. They simply don’t (and maybe can’t) tolerate it. And while that might seem obvious, there was something I can’t explain about their style. You’d just have to watch them write code. It’s amazing to witness the abuse and/or utilization of the Ruby language to make already perfect code above and beyond what anyone could fathom. I believe I heard one of them claim that Basecamp has no more than 3-5 LOC per action. And the way they’ve been able to extract the ugliness out of the view is amazing. In general, it was a level of cleverness far beyond explanation.

Of all the things I’ve seen and learned these last few days, the one thing I’ll always remember is this: question everything. If something seems a little off, and you get this feeling like there is a better way, I can guarantee you there is. Stop what you’re doing, figure out the better way, and fix it. And treat the duplication of an entire view the same as the duplication of one line: they’re both equally wrong.

The second day at Rails Edge

The second day seemed to go a lot faster than the first. Rather than going from 8:00-8:30 PM (like yesterday), we finished up at 6:00 PM today. And the sessions were great: Creating Rails Plugins, The Presenter Pattern, The Deployment Golden Path, Reusing RJS, Red-Green-Refactor, Testing Rails Apps, and Building View Frameworks. These are all things that benefit me, with the exception of The Presenter Pattern, which is nothing more than a concept that has potential to end up in Rails. I took a few pictures, but if you’ve seen one, you’ve seen them all. However, you’ve yet to see one. So here’s the conference:

We’re sitting about two tables back from the front, and off to the right-hand side just a bit. There are about nine people per table, and in between sessions, each table is just a ring of silver Macbook Pros with shiny, glowing apples. At least I didn’t have to worry about my PC getting stolen. These sessions are far from beginner level, which I’m really glad about. Some of the things they talk about and demo are far over my head right now, but I find so much motivation in that. Watching professional Rails developers write code is very inspirational, as their techniques heavily take advantage of object-orientated concepts and Ruby itself. They absolutely refuse to repeat anything anywhere in the code. I do my best to stay DRY, but there are definitely times when I let it slip.

Tomorrow’s Sessions

  1. Buried Treasure: Hidden Rails Tips (as if I didn’t learn enough already)
  2. The Streamlined Framework
  3. Rinda and DRB
  4. Amazon’s S3 Web Services
  5. Rake: Building up Ruby
  6. Rails Production Tips & Tricks

I think they’re taking it somewhat easy tomorrow, but I know they’ll cover a lot of things I won’t know, which is again, great. Once I sort out some of my notes and such, I’ll probably post specifics about some of the talks.

The first day at Rails Edge

I don’t know that I can say “it was what I expected,” but at the same time, I don’t know why I can’t say that. It’s a completely different setting from anything I’ve been to before, so maybe that’s what throws me off. There are a lot of really smart people here, but that was expected. I think I’ve reinforced my lack of desire to associate with the attendees, which unfortunately, my boss probably doesn’t want to hear. In a way, I’m almost intimidated because I feel like everyone around me knows more than I do, and I wouldn’t be able to keep up with the conversation. Whether or not that’s true, that’s how I feel. And despite what people say, that’s a hard thing to overcome. Nobody likes feeling dumb. It could just be my lack of “conference experience.” Maybe if I understood the reasoning of the people that generally attend (self, training for work, mandatory, etc.), I might be able to assess a better hunch about the audience. The conference just seems to be somewhat advanced to be “Rails training,” but that, in no way, means beginners aren’t here trying to learn.

In addition to all that I’ve learned technically, I’ve realized that 12 hours at a conference is a long day no matter what you’re listening to. I’m completely interested in every topic proposed in the schedule, but after awhile, my head started to hurt and my tail bone began to not like the chairs we were sitting in. Aside from that little bit of discomfort, I have no objections to how the first day at RailsEdge has gone, and I’m looking forward to the sessions for tomorrow.

Subversion for my entire hard drive

Being a programmer, I’m exposed to a lot of things that make my life easier. At least, things that can make my life easier. It seems like the programming world has a never-ending goal to seize the pains of managing and maintaining code. Version control, object-orientation, frameworks, abstraction/extraction, etc, all have the common goal to make life easier and more efficient for programmers. This effort shouldn’t stop with programmers.

I don’t know how many people own multiple computers, versus how many try to sync multiple computers. But there’s a big difference. Just because you have multiple computers, doesn’t mean you try and sync them. I’m definitely a sync-er. I like to have everything the same, on all computers I use (even work). The only environment shift I want to experience is relative to hardware (bigger monitor, faster processor, etc.) So many times I’ve wanted to check random things into a version repository, just so I’d have access to the most recent copy across all three computers. For instance, a configuration file for the Rails editor I’m currently using. I don’t want my editor to be different at all. And depending on my ability to fine-tune it exactly the same on each computer (and having to change all three if I change one) doesn’t seem to fit with me. I could always email it to myself, then save it over the original, but you know how that is. Wouldn’t it be nice to have your entire hard drive under version control? So if I randomly delete/add folders and/or files, restructure my folder tree, or whatever, it’s no problem; I’d just run “hd update” on my other hard drive(s) to reflect all of the changes. There are certain pieces to this puzzle (such as Google Browser Sync), but I’m not buying the online file storage to have multiple access points for my files. I still want them to be on my local computer, I just want an easier way to update them. And tagging content on the web helps to define and categorize that content, why can’t I have the ability to tag my files among my computer(s)? Would that not make sense for the very same reasons? Maybe I’m being too irrational, but it seems like there are a lot of options that simply aren’t considered in places where it almost makes the most sense. And yes, I’d complain about something else if that were ever to become a reality.

Welcoming 2007

It’s hard to believe it’s 2007. My sister is exceeding in her second year of college, and that in itself is crazy. Overall, it was a good year. I graduated from WVU and started graduate school in something I enjoy: software engineering. I also started working full-time as a software engineer with IRC, thankfully giving up my old job at Coca-Cola (which consisted of 10-14 hour days on weekends and holidays only). But I’ll have to admit, the most gratifying news of the year was my engagement to Amie. Like I said, it was a good year. While I’m not really the type to set a new years resolution, this year there are a few things I’d like to change and/or do.

  1. Read more books. I got a few for Christmas, so we’ll see how it goes.
  2. Use a calendar on a daily basis. I’ve come to learn that my life is getting a little busier than I’ll admit, and a calendar would help me out tremendously. I like Google’s calendar, but it’s the only one I’ve used. Any other recommendations?
  3. Keep a consistent workout schedule (yes, with cardio).
  4. Increase my frugal ways and live on a reasonable budget. I’d like to learn more about investing, too, and do the most with my money at a young age. As expensive as life seems to be, I have a feeling I’ll need it.
  5. Learn a new programming language. This will be extremely tough, as there’s little motivation to do it. I just think it would be good for me if I’m honestly going to pursue this field.
  6. Take more pictures.

I guess that about sums it up. I’m sure there are other things I’d like to accomplish this year, but honestly, I’ll be lucky to get through 20% of what I’ve just listed. But that’s the idea behind resolution’s, right? Spend some time the last week of December and the first week of January deciding how you want to be introduced to the new year, and once you’re acquainted, you can give up. Well, that’s how I do it, anyway.

Good reasons to write daily

While I’m not that good at it, I’ve come to love writing. Over the last year or so, I think I’ve learned a lot from writing. The fact that I publish some of the things I write, helps me to evaluate and think a little more about what I’m saying. Not only for contextual purposes, but also for presentation. And I think that’s a good thing. Writing helps to refine the way I think. And maybe more.

Each time we write our voice becomes clearer, more focused, and stronger, until our writing is inseparable from our voice. Everything we write is written about us. —Liz Strauss

I think that’s a good quote. This article explains a lot of the things I think I feel related to writing. It lists ten reasons to write and publish those writings on a daily basis. I think it’s interesting, and for me, somewhat captures why I post. And just because it seems to fit here, I think Seth Godin is one of the best and most inspiring writers I’ve come across.

Programming experience

I’m half-way through the second edition of the Agile Web Development with Rails book. I just can’t believe all that Rails does and can do. I’ve been a bad developer so far, in the sense that I haven’t been testing my code using the built-in Rails tests. This is one of the things I didn’t quite get when reading the first edition. To me, it was just more code to write, and I thought the tests were going to be only as good as what I could think of, and if I could think of it I could just test it manually. But that’s a pretty ignorant approach. I think its importance finally hit me when I read about the “story telling” tests. You can take a general statement from the requirements, and implement that as an integration test. It will even follow your redirects. It’s amazing to me. I’m going to mention a couple of things that fascinate me about assert_select Rails testing in another post (or two), so I’ll save that jibberish for then.

Anyway, I’ve been developing for a couple-few years now, and I’m just now learning about testing (or TDD). The point is, I feel like I read a lot about this stuff (programming and web development), as well as maintain my own little projects, and I don’t know half of what it takes to be great. I read about the creator of Ruby on Rails not being a programmer originally, and I just can’t believe he learned to incorporate all of this stuff into a framework, and drive it to work as well as it does. I understand that he’s been in the field for a few years now, but still. I can’t imagine if I were to attempt such a task. I might get as far as abstracting the database, and calling it a day. But it would be leaps and bounds away from how great ActiveRecord is. And that’s not even considering the other things Rails can do. I don’t know, I guess I’m just giving praise. Some people just get it, and they get it quickly. And to be honest, I’m glad they do.

Five things you don't know about me

I very rarely participate in these type of things, but there’s really no reason not to. I’ve been tagged by Lee Kraus, so here are five things you probably don’t know about me:

  1. I hate all instant messenger applications, with the exception of Google Talk. If I had it my way, it’s the only one I would use. But other requirements (i.e., work) don’t allow me to do so. Instead, every morning I startup 3 IM services (one of them being MSN Messenger—puke). Google Talk is smart, simple, and unobtrusive.
  2. I’ve never been on a plane. That’s not to say I haven’t traveled, I’ve just never been on a plane. I’m willing, but believe it or not, the opportunity never really presented itself.
  3. I’ve been hit in the face with a baseball more than five times. And not because I’m uncoordinated. I’ve played so much baseball in my life, those things just happen. For the record, a baseball isn’t as easy to see when the sun goes down.
  4. I don’t like talking on the phone. In fact, I despise it. I think I’m too impatient or something. I get irritated quickly. For example, if I’m on my cell phone and I lose signal, I’m done. I close my phone and put it my pocket. Phones are just annoying to me. Maybe that spawns from my anti-social side.
  5. I’m engaged to a wonderful girl named Amie, and our wedding is planned for May 12th, 2007. And she’s my best friend.

So there you have it. I think I’m supposed to tag 5 other people, but I probably won’t. I don’t know who it would be, anyway. Oh, and I still hate the word meme.

It's all insignificant

I often reach a point of intense focus while working. Whether good or bad, I have the ability to tune out other things around me, and focus solely on the task at hand. A small part of me realizes that can be bad, since that mentality steers toward an obsession. But the majority of me realizes that simply means I like what I do and I work hard to do the best I can. And this doesn’t only apply to web development; I can usually find this level of intensity on problem solving in general.

Does this mean that’s what I care about the most? Hardly so. Family and friends are among my top priorities. Particularly, Amie. I’m not saying Amie takes precedence over my family per se, but there will come a time when we’re ready to start our own family, and that does indeed bump her up in the rankings. So in that regard she’s my life, my future, and I love her more than anything.

What am I trying to say, exactly? I’m just saying that life is much more than work and how focused you can be on a project. If things are disturbed with any of my life-long priorities, that’s a barrier my “intense focus” cannot breach. In fact, I rarely think about anything else until those things are corrected. Take away web development, I’d move on. Take away my wife-to-be and my family, I’d be devastated to a point of no return. Compared to that, everything else is insignificant.

Note: I’ve purposely left religious context out of this post. But for the record I’m well aware that God plays a paramount role in blessing me with the things I care about most and I have Him to thank, first and foremost.

A mini-project every month

Once you’ve accomplish something, you feel comfortable doing it again. And why shouldn’t you? After all, you’ve already done it. And that’s exactly my problem. When it comes to programming I often feel so comfortable with something I’ve done already, I’ll do it again. And again. I’m not the best at exploring new alternatives; it can be hard to do something away from what you know already works. But the last thing I want to become is a developer who relies on the specifics of past experiences.

I think it’s safe to say my favorite language/framework (at this point) for the web is Ruby/Rails. So I naturally want to learn more about it, and how to master “the Rails way.” In an ideal state, along with the fact that I would have to be someone other than me, here’s what I would propose: develop a new mini-webapp every month. And if I were indeed someone other than myself, here are the requirements I would have:

  1. It can’t be anything done previously (unless it’s a reasonable expansion, such as adding an API)
  2. Each application would only contain one controller (hence, the mini).
  3. The interface would remain simple, but fully styled to keep me sharp on my CSS
  4. The level of difficulty would be such that I could not complete it in one week
  5. The wonderful Rails scaffolding would not be allowed
  6. Each application would have a due date of the last day of the month
  7. No direct help from anyone else (with the exception of forums)

Now, all I have to do is figure out how to become someone other than me, so I could actually do something like this. Really, I probably would do it if I had more time. And just in case I do, any suggestions for the first one?

There's not enough time in the day

I get up too early and go to bed too late. I know, it sounds like I’m complaining. And maybe I am. But it’s not about a lack of sleep, it’s more on the thought of daily accomplishments. I have a lot going on right now, which means I need productivity to get everything done. At a glance, it doesn’t seem like my life is any more hectic than it was during my undergrad; but each day goes by, and I feel like I’ve accomplished nothing. In order to go to the gym I’ve decided to get up at 5:30 AM every morning and lift before work. I’ve been doing this for around 3 months and it seems to work out great (the only downfall is getting up at 5:30 AM). You would think that would free up my evenings, but it doesn’t. By the time I have class, eat dinner, do anything else, it starts to get late. And just because it gets late doesn’t mean I’ll go to bed, so I often lay down between 12:30-2:00 AM.

Lately, I’ve been feeling stressed (which is somewhat abnormal for me) because there simply isn’t enough time in my day to accomplish everything. Sometimes I neglect my priorities because I have other, personal things I want (and like) to do. That makes it more difficult. Should I sacrifice my time and spend the entire day on a strict schedule? I don’t think I could do it if I wanted to. All I need is an extra 8 hours. But until I figure out how to stretch time, I’ll be stuck on this merry-go-round of things to do.

Mixing in some additional fun

I don’t know Ruby extremely well, but I get it. It’s really fun to learn, and I often find additional pleasure from trying to “out do” my previous code. Ruby gives you that luxury. There are so many ways to do the same thing. I know I don’t use the best methods, and so I like figuring out new, more efficient one’s.

For instance, when collecting my del.icio.us bookmarks I used to do an overzealous loop, authenticating and parsing xml using REXML (even keeping track of indexes for the arrays!). I knew this wasn’t the best way to do it, but I was learning and it worked. Now, I collect the bookmarks via one line:

bookmarks = r.recent('tag-name',per_page).sort_by {|post| post['time']}

Then I do a .reverse loop to get the list in reverse chronological order. The first method required 25 lines. The second method required 7 lines. Anyway, there’s still so much to learn. That is definitely a language I enjoy playing around with.

Oh, yeah. At work I’m doing C# until January. Here is one more example/reason why I can’t wait to get back to RoR: Ruby vs. C#. Which would you rather do? It’s things like this that make it hard to switch and try out something else.

A sad but inspiring day

Yesterday a co-worker invited me to a luncheon at the Rescue Mission in Fairmont. He’s the treasurer there, and I built them a quick website. I have to say, it was a nice visit, but somewhat depressing. I felt so guilty for owning some of the things I own, and wanting some of the things I want. Granted I’ve worked for (nearly) everything I have, it still doesn’t seem fair that there are people who don’t even have a place to live or family to count on. Well, it isn’t fair. It’s sad. Really sad.

Imagine, a family of 8 (children from 1 1/2 to 13 years old) living in one bedroom with one bath, and they’re still happy! It’s amazing to see the environment they call home. The simple fact that they love one another and look to God to get them through each day is a kind of inspiration that’s on a different level from anything I’ve felt before. I keep thinking about my visit. It makes me want to change, but I’m afraid I’ll move on in a couple of days and get caught back up in this fast-paced, needy lifestyle we’re all used to. I’d like to think I don’t take anything for granted and appreciate everything God has blessed me with, but after seeing what I saw yesterday, it makes me think twice.

The correct way to use snooze

I don’t take advantage of the true purpose of the snooze button. The way I understand it, the snooze is for those who need that extra 9 or so minutes to lay there and prepare to step out of bed (me). That makes sense. But what do I do? I completely go back to sleep. I even set my alarm early, knowing I’m going to hit the snooze button and go back to sleep. Often, when I finally do wake up, I’m more tired than I was in the first place.

I leave for work at 7:25 AM. In my usual routine, I get up at 5:30-ish AM and go to the gym. However, lately I’ve been up until after 2:00 AM doing homework and such, and have been unable to make it. Despite all that, let’s say I plan to be at the gym by 6:00 AM. I will intentionally set my clock about 10-13 minutes fast (even though this has never once fooled me that I’m running late), and intentionally set my alarm so I’m able to hit snooze about 3 times before I have to get up. So for a 6:00 AM arrival at the gym, my alarm would probably go off at 5:31 AM (which is really like 5:19 AM). Then I hit snooze 3 or so times before getting up. It’s ridiculous. Honestly, I think I’d like to set it for 5:47 AM (real time), brush my teeth and leave—but I can’t do it. It’s like an addiction. I used to be one of those people who would debate setting an alarm on a day off, just so I can turn it off and not get up. I value sleep, but I don’t sleep as much as I value it. It’s my fault, but I need baby steps. Maybe if I could settle for one snooze and use it correctly, that extra 20-30 minutes each morning where I’m intermittently waking up would make me feel better throughout the day. I just need to learn how to use snooze correctly.

Giving advice about college

My sister is starting her second year of college, and she isn’t completely sure what she wants to do, yet. I undersand how that can make things inconvenient and a little stressful, but I’m at a loss when it comes to good advice for her. I’m positive, eventually she’ll figure out what she wants to do and everything will be fine. Those measely 4-6 years, when compared to your whole life, mean nothing. There’s no reason to rush into things. I’ve tried to explain to her how insignificant the specifics of the degree really are. My first real job out of college was for something that had nothing to do with my degree(s). I stop myself, though, because I think this may be something that you have to realize for yourself after you graduate and get into the job market. I’m not sure if I should be mentioning things of that nature while she’s still making key decisions toward her college career. The last thing I want is for her to get the slightest idea that these decisions don’t matter and she can take a disinterested approach to making them.

I always remind her to do good and to get good grades, but ultimately grades have done nothing for me. Well, that’s not true; I guess scholarship picks were influenced by grades. Even so—that’s not the reason I tell her that. If her college experience was covered and she had an extra $10,000 per semester, I would still tell her to get good grades. I guess it’s the “big brother” in me to remind her to strive for the best. Overall, I only care about her success and happiness. I’m realizing, now that I’m done with college (undergrad), I have a hard time giving her good advice based on my experience. I’m glad I went through an “engineering” program, but I’m not necessarily glad it was computer/electrical engineering. But we make decisions and move on. In the end, life tends to work itself out. It did with me, and I’m sure it will with her.

2008 by Ryan Heath | Get In Touch

flickr

DesolateInfinityLooking upDazedBlurred