Posts Tagged ‘Development’

Giving Thanks

Friday, September 25th, 2009

How do you thank you to a community? Well, blog it of course! Now that we have gotten over the initial excitement of being approved by Apple, we want to give recognition to all those who helped us get here. This is a daunting task due to the many folks who have been involved so please bear with us as we give it a try.

We can honestly say that without The Community Foundation’s support, we would not have gotten very far. Your support has allowed us to focus on the project while you took care of our nonprofit administration. We brought you an idea for a nonprofit startup that we developed during a sushi eating contest and you provided the nonprofit umbrella for us to make it happen which was an amazing feat. Thank you so much – we love you!

We gotta give a huge shout out to the Van Heyst Group who have provided our workspace. Our productivity is directly linked to these fine facilities and for that we are forever grateful. Thank you so much for everything. Looking for office space to rent? They have some available and it is awesome.

Both Rally Software and Amazon have provided key infrastructure components for us to develop and deliver these applications. You have made our process so much easier which is key for a large group of volunteers who are writing and testing code (you know exactly what I mean).

The Boulder Denver New Tech Meetup has been a home base for us and we can’t tell you how much the love has powered us forward. We have pitched our ideas, read your tweets (be nice!), and appreciated all of the feedback and support. Remember, we are just getting started and have much more to do so we hope you will continue to provide this tremendous lifeline to this project.

To our web and logo designers, Christopher Ritter and Chris Freitag, we don’t know how to thank you. You have developed the face of SnapImpact and we are honored to work with you. YOU ROCK!

Our volunteers. So many people. There were so many who helped us to get started and who have supported us over the time taken to get to this point, check out Andrew Hyde’s and Stepan Mazurov’s fabulous photos. Thanks for helping us get this off the ground. We could not have persevered without ya!

Most recently, we have had a kick ass software development crew – Ryan Schneider, Hassan Abdel-Rahman, Neil Simon, Tony Kay, Dave Angulo, Orn Kristjansson, Mark Chance, Eric Telingator, and Sue Uyetake.  They have worked hard slinging code with only mediocre pizza and good beer to sustain them while keeping full time jobs and family happy. You are heroes.

The current rock star business development team includes Nicole Glaros, Josh Clauss, Katrina Florence, Rick Saltzman, Rich Grote, Brett Greene, Dan Hellman, Mark Haeg, Luke Tilsley, Kevin Cloughley, and Phong Le. You slaved away to develop the feature set, build out a PR and marketing plan, and continue to push our project forward (over a few bottles of excellent tequila). Thanks for doing this while keeping bosses and families happy along the way.

Finally, our data partners HandsOn Network and All For Good, are truly the engine of SnapImpact. They provide the data that fuels the volunteering process and we are proud to call them partners.

We are the luckiest startup nonprofit in the world. Thanks to everyone!

iPhone Development for fun and non-profit

Thursday, February 26th, 2009

As a transplant living in Lafayette, telecommuting to Oregeon, I’m hardly dialed in to the Boulder tech scene. Last year, I was lucky enough to stumble upon the Boulder New Tech Meetup, and attended a couple meetings. Then, real life and tight deadlines joined up to keep me heads down in my basement office for most of 2008. Once 2009 rolled around, I came up for air and was lucky enough to attend the February BDNT meetup.

It was standing room only, and I was squeezed way in the back when announcement time came around. Some guy named Dave stood up and said that he was looking for iPhone developers for a volunteering application. A couple books and a crash course on Cocoa hardly makes me an iPhone dev, but I’d been wanting to learn for some time, so I tracked him down after the meetup. And the rest is history. Recent history. Still in the making, actually, since we’re still plugging away.

Which brings me to my point: iPhone development is capital F-U-N fun. I’ve done most of the major languages, but Obj-C is the first one I’ve picked up in a matter of hours vs. days or weeks. Think about it: on Febuary 1st, I had a vague idea that the iPhone used something called Cocoa, and that Objective C “was sort of like C++, but not”. Yesterday I got my first data-bound UI up and running. And this isn’t full time by any means, just an hour here and there where possible, and a couple stints on the weekend.

But the real reason I piqued up at the iVolunteer opprotunity was that, as a telecommuter, I’ve gotten kind of bored with discussing application design and implementation with myself. So, why not share the fun? You really don’t need to know the first thing about iPhone development, just a general computer programming background is more than enough to get started. You don’t even need an iPhone, just a Mac, some curiosity, and patience while the SDK downloads.

We’ve got our data model foundation pretty well worked out, so now it’s the fun stuff: a slick UI, tight look and feel, and all the cool little bells and whistles that make an app really shine. Even if you don’t want to touch a line of code, a keen eye for design is also very welcome. So if you want a chance to learn a new technology while contributing to a really good cause, drop us a line. Or look for us at next week’s BDNT Meetup in Boulder.

The Server Foundation

Wednesday, January 21st, 2009

CAUTION: There are some posts we’re writing which talk about the lofty goals of the iVolunteer project, how we’re hoping to change the game with regards to how people volunteer, and how the amazing Boulder community is coming together to make it all happen. There are other posts which appeal to a more… uh… geeky crowd. This post is squarely in the latter camp.

Think the comic on the right is funny? This post is for you.

As we’ve mentioned previously, one of the goals of iVolunteer project is to work with other great Boulderites in the tech community and have an opportunity to get our hands dirty with some cool new technology while doing so.  Amazon Web Services (AWS) falls into the “cool new technology” category. Anyone with a credit card can have access to all the building blocks of a full service datacenter on demand.

The two big components of AWS are the Elastic Compute Cloud (EC2) and Simple Storage Services (S3). EC2 provides machine instances and supporting services to make them useful, while S3 provides a robust storage platform for your data. Together (optionally with a host of other AWS services) they provide the foundation to run robust scalable applications.

So how cool is AWS? During early development of iVolunteer, we had a bug which generated a number of database transaction logs that filled up our EBS volume. The database wedged and cleaning it up safely would have been problematic. However, we just fired up a larger EBS volume, connected it to our instance and moved the data from the old volume to the new. MySQL could then start cleanly and we cleaned up the logs safely. That done, we moved the data back to the old EBS volume and deleted the larger one. Start to finish it was about 30 mins, done without opening any trouble tickets or calling anyone and cost about 10¢. Try doing that in traditional hosting environments or even your own datacenter!

We are running on a single small instance while in development. By design, however, the application can be fully broken out and scaled both horizontally and vertically as required.

We started with a base Ubuntu instance from Eric Hammond, configured an EBS volume to hold dynamic data and an elastic IP address to use for DNS. We then layered on the following apps:

  • mySQL for database (can be anything really, just went with a standard)
  • glassfish for the java app server (again any Java EE 5 container works)
  • apache2 for web services (for the application, httpd just needs to serve static html pages)

That’s all that’s required to run our application. To get to v1.0 we went with industry standards for the most part. As we get closer to release we can revisit the choices and decide if there are better options to meet our needs.

As an aside, the java part of our application is split into 2 components. the first is responsible for ETL of data from our sources, which writes into our database. The second is responsible for the REST services consumed by the website and iPhone applications. They can run in the same application server container, but its not necessary.

Vertical scaling can be achieved by breaking things into web service, REST service, and database layers initially and caching layers later on. Horizontal scaling is easy using load balancing within the web and REST layers with the database taking a little more work (its read only outside of the ETL process and infrequent saves of user profile data).

If you’re still reading, you really need to come to Tuesday night’s meetup at RedFish. If you know this much about random technology, you probably need to get out and socialize more! We’ve got just the group for you. Leave a comment and Dave will even buy you a beer.

You’re using what???

Wednesday, January 14th, 2009

This is the first of many posts on one of the fun parts of working on this project, hacking on it. If this stuff makes no sense to you, but you want to learn, that’s okay! Leave a comment, drop us an email, or, if you’re in the Boulder/Denver area, drop by one of or meetups Tuesday’s 5pm at Redfish.

Part of the fun on a community-created project like this is the ability to stretch your wings and try new things. Yes, we could just slap this thing up with a bunch of boilerplate well-known recipes, but what’s the fun in that? Instead, we’re creating this project using some cool new technology that will be fun to work with. What follows is a quick overview of each piece of the technology stack that we’ll be using on the iVolunteer/ActionFeed project. Although some of it gets a bit technical, hopefully it’ll give you some understanding behind the technology decisions we’re making.

First off is one of the the stars from last years Apple WWDC: Sproutcore. What’s not to love about a javascript MVC framework that lets you build Cocoa-like interfaces? This is the tool set that’s behind Apple’s MobileMe experience. Not only does it use OO javascript, but it also heavily uses observer patterns similar to Cocoa programming (I’ve read, never having developed a Cocoa app). Sproutcore was at 0.9.19 when we started the iVolunteer project, but then the Sproutcore team went for a Halloween Strategy to announce they will rework large sections of it for a 1.0 release. Love being out on the bleeding edge? This is what its like!

Next, both the iPhone App and the ActionFeed website will need REST interfaces from a service in order to get the data to present to the end user. The service will also need to connect to our providers, grab a data set (Please let it be structured!), do any necessary data mapping and throw it into our database (aka ETL). It would also be nice if the service had some administrative interfaces to control the service. There are lots of ways to skin this cat, from the current rage of RoR to writing a cgi, but we wanted to experiment with some cool new stuff coming out of the Java world in Jersey/JAXB/EJB3. Also, if we do end up being successful, running in an app server container should make scaling simpler (in theory).

Of course, the crown jewel of our technology is the iPhone SDK. There are tons of thing to cover on iPhone development. Whether you are an iPhone SDK veterano or just now hoping to get started, we encourage you to come on out, meet some great people, and get your hands dirty working on something cool that’ll help the world.

That wraps up the key technologies we’re using to develop v1.0 of iVolunteer. I’ll dive into each in more detail in upcoming posts. Please comment and let us know if there are things of particular interest so we can start there first.