blog.raydenuni.com

Philosophical Ranting of an Engineer

Mephisto Installed

August 25th, 2006

So this is running Mephisto a new blog/cms engine written by Rick Olson, technoweenie, and designed by Justin Palmer. It is meant to be a very light application for Rails hackers. After having trouble with Typo I decided to switch as I’ve used many plugins written by technoweenie and they are all excellent.

This is not on my main blog site yet because I want to make sure its stable, I’m sure it is, I want to look into changing the theme, and I need to figure out some configuration settings.

Stay posted.

OneFile

August 23rd, 2006

I made a small web-app last night that I am quite proud of. OneFile!

What?

OneFile is an application that allows for one file to be uploaded to it. At any time, anyone can upload a different file overwriting the old file.

Why?

I admit its trivial to code and doesn’t do a whole lot. But do you know how many times in the last month I’ve had to email or ftp a single file to someone?!

I must have this!

I know. You now all want your own copy of OneFile (it doesn’t really scale well). I have it available in an svn repository. Point yourself to http://svn.raydenuni.com/onefile/trunk. There is one small bug. It is unhappy if the first file you upload does not exist. It tries to find the create.rhtml template which of course does not exist. Nothing is truly broken though. Its just annoying. If I find out why I will fix it and let you guys know.

If anyone feels like making it look pretty, let me know.

Dashboard

August 5th, 2006

Retrospective

I just finished work on Dashboard, the content management system for musicians that I’ve been working on for the last month. It took a little bit longer than I had planned on, but overall the project went well. I learned a lot. This was my first real Ruby on Rails project that I worked on all by myself. Before this all I had done was work on the IRPA cms. Here is a list of things I learned as well as things that just went well.

Pat on the Back

CRUD: In my quest to learn how to set up a many-to-many relationship I came across David Heinemeier Hansson’s keynote from RailsConf, which I have already told you about, and I came to learn a new way of structuring code.

file_column, acts_as_paranoid, foreign_key_migrations, and artist_location are the plugins I used on this project that I had never used before. Some required a little more work to get working, but they are were all very helpful in building the features of the project.

Migrations are something I had never used before, simply keeping my schema in a single sql file, but now I would never build a Rails app without them. I’m not sure I used them the most efficiently, as I had some problems adding and dropping columns in later migrations and often refactored everything into the original. This was fine for development, but it would be unnaceptable for making changes on a production application.

Working with a client on a daily basis was a new, and exciting, experience. This really was an agile process as I would begin each day by working on a feature, by the time I had finished working on it, the client would be online and I could show it to him and get feedback on it while, or before, I worked on the next feature. Aside from a few design flaws, for which we were both responsible, everything went smoothly and quickly.

I ran my own SVN server and used this religiously, committing every little feature I added before working on another. With 76 revisions, it made it easy to save myself when things went awry. This also made it easy to install the latest version, and keep it updated, on the client’s server.

Room for Improvement

Not everything went perfectly though and there are things I plan on doing better next time.

Design flaws and misunderstanding were the cause of a few headaches. I spent two days refactoring code because I had written my routes incorrectly and then we changed how something was organized. If I hadn’t written the routes incorrectly the change would have taken 5 minutes, instead it took most the day. However, because of this refactoring, I fixed the routing problem.

It was greating using plugins and outside libraries to accomplish stuff, it saved countless hours, but not all of them are easy to install and use. Documentation on some of them is minimal or nonexistant, and none of them have “enough” documentation. However, the people in #rubyonrails, and especially technoweenie the author of several plugins, were very helpful. Installing RMagick and configuring it with file_column was a breeze on Windows. I was impressed and very surprised. Installing ffmpeg and all of its dependencies however was a nightmare. It certainly was not ever meant to be installed on windows and I spent most of the day trying to figure out what dependencies I was supposed to install, and where to install them (Program Files was a bad place due to the space). Then once all of this was installed I had to build ffmpeg. This wouldn’t surprise anyone installing it on Linux, but this is Windows. Even after I got it completely installed I still had problems with it and even now it doesn’t work perfectly.

Project management should have been better. I used my wiki to write down design ideas, list required features, and keep track of bugs. Wikis really weren’t designed to do this and after using Trac, which is wonderful, it was unpleasant. I have recently installed ActiveCollab on my webserver and will be using it in the future.

I’m not sure what sort of documentation I needed to add to my code. Most rails code is fairly well self-documented. If you don’t know what the show() method in the ArtistController does, then you need to learn about Rails, not read the documentation. But I did have some unique methods in Application.rb and it might have been useful to document some other unique things I did.

I’m ashamed to admit this, but I didn’t do any formal testing. Rails comes with functionality for testing and it is supposedly very easy and it is something every programmer should do, but I didn’t. I was learning so many other things that it didn’t feel worthwhile for this project. I’m still not sure how useful it would have been. I guess we’ll see how bulletproof my code is over the next few weeks as the client plays with it. I plan on reading the testing chapter in my Agile Development book and using it in the next project.

Wrap Up

Overall, I enjoyed working on this project. I look forward to seeing what some artists do with the front end and seeing how popular it becomes. One of the most exciting things about it, is that a lot of the code is very similar to what I needed to write for ShowCase, so I will be copying a lot of that over. Look out for a ShowCase update soon.

Summer Update

June 28th, 2006

So I’ve been home for a while now and haven’t posted much here. After my blog broke and I was unable to post for so long, I got in the habit of not posting. So here is a post in my traditional style, half schizophrenic, half update, half philosophy, and half bad math.

Job

I still don’t have a job. After a week of relaxing and goofing off I began looking for remote Ruby on Rails work and despite receiving several responses telling me they were very impressed with my resume, and my well written cover-letter, I only had one company interested in me. Unfortunately the man I spoke to was supposed to get back to me a week ago and has not. I have been doing a little bit of part-time work at Haverly, the company I worked last summer. The application I developed needed a few upgrades, but I want to do something more substatial this summer. Looking for work is depressing. It is much more fun to learn about stuff and work on my own projects!

Subversion

During my time at Rose, I have used CVS and Subversion on various projects. Most prominently SVN was used on the CMS I wrote winter quarter. Now it seems stupid to work on any significant project without some sort of version control and SVN is what everyone is using these days. Dreamhost, my web host, recently installed SVN but I was busy with school and never got around to installing it, thinking it would be difficult to administrate. I finally decided to play with it, bought a book, and have been learning a lot. If things go well, I will be giving some employees at Haverly a demo of SVN and trying to convince them they need to jump on the version control bandwagon. Fun stuff.

ShowCase

After mentioning working on my own project, I can’t forget to mention it. I finally found a Ruby on Rails project that is both interesting, not too large, yet challenging. Well, I don’t know about challenging. Mostly I just want a project I can work on and finish and have to show people. And that is what this project is, a web application for displaying your work. You could say it is a portfolio app. I don’t have anything to show yet, but I’m working on it. Probably the most difficult part of it would be creating a nice layout, but I managed to find a decent theme off OSWD.

Game Development

I can’t remember if I had written on here about a game I wanted to start developing. Well, I started learning some DirectX at the end of winter quarter and did a little at the beginning of spring quarter, but PLC took over my programming life and I stopped. I did buy a book with a couple of tutorial projects and I’m partway through the first one. I haven’t forgotten about this; I really need to get on the ball and start making games. It drives me crazy that I haven’t, but I never end up getting started. Once I finish working on ShowCase I hope I will begin working on this again. I’ll keep you posted.

Guild Wars

Speaking of games, I’ve been playing a few with friends now that I’m back home. Last summer we played Guild Wars and beat it. Guild Wars: Factions came out around the same time this year and we decided to play it again. Unfortunately this means it came out about two weeks before I finished finals and came home, so again, every bought the game before me. That’s ok, I don’t hate you guys for doing that to me TWICE.

Factions is very different from Prophecies, the name that everyone is calling the original. The campaign itself is shorter, by about half I think, and you level much faster. By the time I did the third mission I was level 20, the cap. At first we all thought this was a lot better than prophecies where you don’t usually hit level 20 until you reach the area where you ascend. But as we played I think we began to realize that the plot is pretty stupid. I don’t like it as much as the first one. And without the incentive to level up, we have began losing interest. From what I hear there are a bunch of new PvP options, including a 16v16 Alliance vs Alliance mode. This sounds like a LOT of fun, but you can’t ally with anyone until you’ve beaten the campaign I believe. Also, the campaign is very difficult. The last couple missions, as in the 3rd and 4th, have taken us several attempts to beat. Where has the magic gone? The missions in Factions are much more linear. You can’t get past certain places until you’ve complete your primary quests or beaten the next mission. This means that you can’t jump again and grab the elite skill you want and elite skills seem to be the only reason to complete the campaign I think. Like I said, the plot is boring, the cutscenes are terrible, and there is little reason to care about it.

I still feel that Guild Wars is a great game. I love the variety of skills available to you. Choosing skills from both professions and trying to come up with an effective build is a lot of fun. Doing everything as a party of 8 is great. The interaction between players is good. Factions just doesn’t seem to present well, in my opinion.

Hockey

I’m playing hockey again! Woot! Unfortunately its at an outdoor rink on unfinished cement. The floor is more slippery than… um… (insert imagined slippery object here). I can barely accelerate hard without losing grip and a hockey-stop is out of the question. This is really frustrating because the whole game slows down as people don’t bother to skate a little harder and grab the puck that is behind them. Instead they circle around and let someone else grab it. It is still a lot of fun to play though, even if I was terribly out of shape when I began to play. I’m doing better now after 5 weeks. I scored last game! Playing once a week is not enough though. I won’t say that I had forgotten how much I enjoy the game, but now that I’m playing again I am throughly enjoying myself and wish I could be playing more. There need to be more rinks close by.

Camping

I went hiking and camping with Todd, Lem, and Daniel up at the Punch Bowls last week for two days. It was a lot of fun. It was hot, sunny, there were bugs, and we were all very tired. But we had fun hiking and swiming in the pools. We followed the river all the way up climbing over rocks most of the way, and then climbing UP rocks at the very end. On the way back, we followed the trail the whole way and it took us less than 3 hours instead of the 7 we took going up. Understand that we had a long lunch and took a lot more breaks going up, but it was still impressive. It took us two hours to climb the last stretch going over large rocks and it took us 15 minutes to get back on the trail.

Pandora

Just this last week I began listening to Pandora. My roommate introduced me to it while at school but I never really listened to it. It is a web radio station built on top of the Music Genome Project. Some experts tag songs with certain attributes. When you create a station you pick some songs, or artists, and Pandora tries to pick songs with similar attributes. This is different than other web radio stations that try to pair what other people like to what you have said you like. Pandora shows no preference for more popular bands, it is simply based on what songs sound like. It is really quite excellent and its free to listen to. Supposedly by subscribing you can get rid of advertisements, but I haven’t seen or heard any ads yet. Go check it out.

Conclusion

That’s about all I have to say right now. Todd and Daniel are in South America on a mission trip so its a little lonely here right now. They will be gone for another two and a half weeks. This will give me time to work on my projects though.

P.S. I left my razor in Indiana so I haven’t really shaved since I got back. I think I must look pretty wild, but I keep getting positive comments about my beard. Odd.

SQL on Rails

April 1st, 2006

This is really awesome.

7 Goals

January 26th, 2006

... I have for my future.

Today I was thinking about things I want to do in the future. These are perhaps things I cannot accomplish here at school due to the location, the circumstance, or the time. This is a short list of a few of those things.

Read the rest of this entry

llor.nu

January 12th, 2006

llor.nu is a giant game of Monopoly. The author does not come out and say this on the about page, probably for legal reasons, but the concept is pretty much the same, except it is done on a much larger scale (around the world) and you play one turn a day.

I don’t think the gameplay will be very interesting, I don’t even know if you make any decisions, but the concept of making games like this that are web based intruige me. I played AstroWars for a few months and thoroughly enjoyed it. You log on a few times a day, spend 5 minutes choosing what to spend your accumulated resources on, what to research, and where to send your ships. That’s all! It is imposssible to spend more than 5 minutes at a time, unless you analyze everything. It is the perfect game to get addicted to, because it can’t suck hours out at a time! The real joy comes when you finally build up a fleet large enough to squash your neighbor. This also happens at its own pace as it literally takes days for your ships to travel to another planet. Alliances quickly form and those left alone are soon destroyed. The game resets every other month or so, once someone reaches X amount of points, or an alliance reaches X amount of average points.

I am on the lookout for simpler ideas to implement. Combining my long time desire to design games, and my current passion for web development would be awesome. Who knows, maybe it could implement some sort of swarm intelligence?

Google & AOL

January 5th, 2006

So Google bought a 5% share in AOL, or something along those lines. This sounds kind of scary, but Google promises this won’t endanger the integrity of their search engine. One good thing to come out of this is that

AOL’s Internet-leading instant messaging service will become compatible with Google’s 4-month-old service next year, but Google’s users will have to register with AOL to gain access to the expanded network, according to Friday’s filing.

Hopefully this means that Google is going to make AIM using Jabber. If so, it will be a great victory in the battle of standards.

Ruby on Rails 3 Day Workshop

December 15th, 2005

The man behind Nuby on Rails is teaching a 3 day workshop on Ruby on Rails in Seattle and Los Angeles! I desperately want to go. At most I would miss three classes and I think what I would learn in that three days would offset the three days of class missed. The downside is it costs almost $800 for the Seattle one and $1000 for the LA one.

If you want to donate to the Send Matthew to the Ruby on Rails Workshop fund, let me know and I will give you my Paypal info.

Rails 1.0

December 13th, 2005

Rails 1.0 has finally been released. With a quick gem install rails --include-dependencies I updated it on my laptop! Apparently 1.0 is focused more on stability than new features. So do not hope for anything fancy. It hopefully means it will be more widely accepted by webhosts though.

VoIP and IM

December 7th, 2005

I have decided to download Gizmo and try it instead of Skype. It uses SIP which means you can communicate with people using GoogleTalk or GAIM. Woot!

Once I got thinking about standards I began feeling bad because I do not have GoogleTalk anymore. The free version of Trillian does not support Jabber and I did not like having to deal with having two chat clients. I might have to try GAIM again. When I got back to school this year I tried it, but found a few things that bugged me and have not looked at it since.

In my search for a better client I found Meebo. Meebo is an Ajax based browser client! You can connect to AIM, MSN, Yahoo!, and Jabber! It is very nifty and I recommend it to anyone who wants to chat with their friends on another computer without having to install a client.

If you know of any other clients I should look at please let me know.

Article Templates

December 7th, 2005

After a little discussion of CMS and template design with Fam, this idea came up:

What if there were multiple templates for each blog post?

For example, if you wanted to post on a movie or a music album, you probably want to display a medium/large square image.

If you want to write on an article and plan to include some text, you would want to display a significant portion of the text as a block quote.

If you went on a trip and want to display some pictures, you might want to display nine thumbnails in the post as well as a link to the album.

What if you had a template for each of these posts? That way, when you go to create a new post, you signify what type of post it is, this brings up the appropriate template form, and will then correctly display the special information!

Try Ruby!

December 6th, 2005

Try Ruby!

why the lucky stiff, famous for his Why’s (Poignant) Guide to Ruby (think Chunky Bacon) has produced an excellent little web-based Ruby prompt that takes you through a short tutorial. It introduces some of the more interesting aspects of the language and I recommend it to anyone who has programmed, even if you never plan on using Ruby.

Font Survey

December 6th, 2005

For all you developers out there who want to use a “unique” font but don’t know what your audience will have?

Check this survey out.

You should also fill out their survey. I did!

Radiohead: Creep (acoustic) unofficial music video.

That is some of the most amazing Flash animation I have ever seen. It is not terribly new, but if you have never seen it, go watch now.