Monday, April 20, 2009

My Lightning Round Talk at Mt. West Ruby Conference

I attended the Mt. West Ruby Conference last month with good friend and fellow Rubyist/iPhone developer Sam Schroeder. We had a great time attending the conference and even got a little skiing in before the event began. I also had a chance to meet Jay Phillips from Adhearsion and an opportunity to do a quick lightning talk on Adhearsion at the end of the conference. The organizers were nice enough to give me 3 minutes and the very last slot, so that is why I'm speaking so fast! I did notice though, that I need to work on stopping the use of my crutch words like, "um..." during my presentations. I'll also be speaking at the Ruby User's of Minnesota on April 27th to show off the Adhearsion Sandbox and other software as a service telephony frameworks available to developers. Watch the video below to see a quick example of my lightning talk at the Mt. West Ruby Conference.



There were some excellent presenters and I'm definitely planning to attend next year. You can watch any of the other talks or lightning rounds here. Enjoy!

Saturday, February 28, 2009

Blog Post From The F1 Web Challenge

Keeping myself busy here on team Ruby.MN at the F1 Web Challenge. You can check out some photos of our group uploaded at: http://is.gd/leE3
I've been up for 20 hours and programming for the last 16. Only 8 hours left! Fear the Red Shirts! =o

Friday, February 27, 2009

F1 Web Challenge v2.0

Well, the F1 Web Challenge is back again this year! I'll be participating in the Team Ruby.MN. We just got word yesterday that our team t-shirts are done, we have met as a group a few times since the event to plan out the logistics and everyone is fired up to take on whatever non-profit is assigned to us. Yahoo!

What is the F1 Web Challenge You Ask?

It's a yearly competition put on by a local software consulting firm that brings non-profits together with programmers in a competitive setting to see who can build the best website in 24 hours. From being in the event last year, "24 Hours" is really a misnomer. That's the amount if time you'll be working, but not the amount of time you'll actually be awake and at the event. Last year I was at the event from around 7:00 am Saturday, until 4:00 pm Sunday and then by the time I got home and unwound, I didn't actually get to sleep until 7:00 pm on Sunday. I ended up being awake for 36 hours!

All of the that being said, the event was extremely fun and rewarding. I met some really great people, made some really good friends and had a chance to work with some of the brightest programmers in town. What more could I ask for? I should have been paying to get into this event!

I'll be trying to post photos and details on the event on the blog here as time permits. We won't know our non-profit that we are assigned to until we show up that morning. One thing they have changed this year was to increase the members on the team count, so we have two more bodies to help us get the work done. I'm excited to see what we create!

Details
F1 WEb Challenge Website:
http://www.f1webchallenge.com

Our Team (Ruby.MN) Website:
http://www.f1webchallenge.com/teams/27-Ruby-mn-2-2

Follow me on Twitter during the event!
http://twitter.com/justingrammens

Sunday, February 22, 2009

OGG track numbers iTunes - and Songbird Sings!

I'm a BIG fan of Linux and open source. I try and use open source software whenever I can and try to contribute projects with either monetary donations or helping in reporting bugs, testing or documentation. I have a Linux desktop and host all of my applications on Linux. However, there unfortunately are however some programs and clients that require me to have a MacBook. Alas, sometimes you have to pay the piper. But I am looking to eventually ween myself from Steve Jobs.

I'm also an equally big fan of open standards. One standard that I support is Vorbis and more precisely the OGG container. If you have heard about OGG, the definition from Wikipedia is as follows:

Ogg is a free, open standard container format maintained by the Xiph.Org Foundation. The Ogg format is unrestricted by software patents and is designed to provide for efficient streaming and manipulation of high quality digital multimedia.

The fact that a company could own the format that all of my music is in, goes against my beliefs of free and open standards. I therefore have tried everything that I can to try and keep all of my music in this format. It hasn't been easy, especially since most all music purchase download sites only offer MP3 or AAC. Not even a lossless version like FLAC seems to be available for download on most sites! Very annoying, but that's the subject of another post I guess.

Why am I writing all of this you ask?

Well, I've got close to 20 GB of OGG files and had been wanting to try and use iTunes to listen to them. The people at Xiph have created a quicktime extension that allows iTunes to recognize and play the OGG format! Details on that can be found here.

However, what you'll soon find out is that while it plays the songs, iTunes doesn't know the track numbers! It plays all of the songs from an album in alphabetical order. Bummer. This while not a deal breaker, is extremely annoying and when you have some albums where the songs are in particular order for a reason, it makes listening to album useless. This issues has been submitted to the people at Xiph, but has been deemed not important.

After some searching however, I found an amazing script by Dr. Lex, which allows you to run through your entire library and update the iTunes metadata with the track numbers from your OGG files. Woohoo! Now we are in business. You can get the script directly from Dr. Lex's site here. Very easy to install and it worked out of the box with my iTunes version 8. You'll notice the script also does some reply gain adjustments as well if you have that configured, but in my case I was just interested in getting the track numbers. Thank you Dr. Lex for creating and sharing this script. This is open source at it's best.

UPDATE:
Since I have solved my iTunes in OGG problem, I have actually found a better music player that support OGG right out of the box! It's called Songbird and has some really cool features along with a pluggable architecture. This allows in the same way that Firefox has taken off by people contributing to it, my hope is that Songbird will do the same. If you want to help an Open Source song player succeed I suggest you take a look at it. My next step is going to be getting a sync program going with Songbird so it will push songs to my Android powered G1 phone, but that's a subject for another post. Lots of fun pet projects in the works.

Happy audio listening with Songbird!

Sunday, December 7, 2008

Getting Up and Running With Adhearsion

As many of you know, I'm extremely interested in developing applications that use the open source telephony project called Asterisk. You also might know that I'm a HUGE fan of the open source project started by Jay Phillips called Adhearsion. It aims to make developing VoIP applications in Asterisk, object oriented, easier to maintain, integrates with Rails and makes the process of developing VoIP applicatons FUN once again.

In this screencast, I show how you can get up and running with Adhearsion in a just a 10 minutes. Sit back and I hope you enjoy the presentation. Please let me know if there are other screencasts in the area of new technology that you might be interested in learning more about. I have a lot f fun doing these (when I have the time) and have a few sample applications (one of the them is a click-to-call service), which I'm planning to do screencast on this the coming weeks. Enjoy!

Sunday, September 28, 2008

Asterisk Screencast

I've been learning and working with Asterisk for approximately the last 10 months. It's quite an amazing piece of software and I truly believe that it will change the way telecommuncations is done in the future. Along with Asterisk, I have been playing around with two very cool projects that interface with Asterisk - Adhearsion and Asterisk-Java. Both of the projects are aiming to solve similar, but yet very different problems in the VoIP space.

I submitted a screencast to the Adhearsion project showing how you configure and install Asterisk. If you are interested in learning more about Asterisk, you can watch my screencast! I had a lot of fun doing it and know that I'll be doing more in the near future.



If you are curious, I used screencasting software called ScreenFlow. It's hands-down one of the most fun pieces of software to use when doing screencasts. Look for more screencasts coming in the next few months on whole range of technology topics!

Thursday, May 22, 2008

Little Brothers Website Launches

As I blogged about a few months ago, I was a part of a local development competition called the F1 Web Challenge. The competition was held back in March and was a 24 hour competition where 10 teams of 8 technologists worked together to build a website for a different non-profit. Our team was Ruby.MN and our non-profit was Little Brother's Friends of the Elderly.

After the 24 hours was completed, we did have a "functioning website". However, there were still some things that had yet to be completed in terms of bugs, a few minor features and the "D" word.. deployment. I ended up taking on this task of working with Kathleen from Little Brother's.

Tasks

1. Setup and configure the website on a place that would host if for them.
2. Work on fixing any bugs that we outstanding in the code.
3. Working with other developers on the team to complete the implementation of some of the features.
4. Keep a central point of communication for people at the non-profit to deal with the changes on the website until we went live.

Well, I'm safe to say that we've finally made it!

http://www.littlebrothersmn.org


Over the past 2+ months, it's been a little slow going as I've been the main person taking on the responsibility along with running my software business. As it's been for a non-profit, this has all been work that doesn't pay me anything. I do wish to say that I tremendously appreciate the help that I have gotten since the competition from a few of the members of our team. Even though I took on most of the work, launching the site myself, there is no way I would have been able to get it completed without help from a few key people. Thank you.

Configuration/Deployment

A few things I wanted to note in my configuration and deployment.

Setting up the hosting was not a trivial as one would think. First, LBFE had an existing website that we could not take down as it's accepting online donations. It was hosted on GoDaddy and actually involved an SSL certificate, so the new site had to support SSL for online donations. GoDaddy likes to say that they support Ruby on Rails, but at last check that support Rails 1.1. That was not going to work for us.

VISI.com offered to host the site for 1 year for free as being part of the competition. After communicating with their support staff however, I got the feeling that they had never hosted a Ruby on Rails application. Hosting Rails is actually very easy, but we decided maybe we shouldn't be the guinea pig for VISI. Also, we had no information as to how expensive the costs might be next year. I think VISI is a great company for large companies, hosting large applications. They do good work, but they are not cheap. Thus, I would assume they would be out of the price range for your typical non-profit.

I have used RailsPlayground before in development and it was suggested by another person on the team that we look at using them. For ease of use and expertise on running Rails, we decided to go with RailsPlayground. I setup a "test" subdomain for us to use to test, since their "www" site should not be disturbed, get a new SSL certificate created at RailsPlayground (you can't transfer SSL certificates), and configure their DNS to make this all work, while not upsetting their email and existing website. Pretty basic stuff that I have done in my business, so it wasn't technically difficult, just time consuming.

Hosting Specifics

1. RailsPlayground supports using Mongrel, so we setup Mongrel to serve the site through Apache proxy.
2. RailsPlayground offers shell access, so I setup capistrano for the deployments.
3. Setup TRAC if needed for the bug repository and WIKI if in the future LBFE needs to submit bugs or create documentation.
4. I setup Subversion to manage all of our source code.
5. Created a nightly cron job to dump the database and backup all of the binary resources for the site.
6. Using Montastic to monitor the uptime of the website.
7. Made all of the DNS changes and worked with support to get the SSL certificate installed and working properly.

Just one note on RailsPlayground: I was a little weary of using them since I have actually used their services for a few years now for quick development applications on public facing sites that I didn't want to setup on my own Linux Virtual Server. To be honest, from my past experience I would not host a large scale production application with them. Their servers seem bogged down and run slow (even using mongrel and a few users) and I have had issues with major outages in the past. However, as it is with all virtual hosts, it depends on the machine you site is on. or more importantly who is bogging down the server. I can say though I have been pleasantly surprised running the LBFE site through them. In the past few months, the site has responded well and I been very happy with their lack of downtime.

Overall, this has been a great experience I think for everyone involved and I'm very happy with the outcome. I think it's a win/win for everyone. I've made some new friends through the process, learned more about Ruby on Rails development while working with some very bright teammates and a non-profit got a great looking new website out of the deal. Not a bad deal!