This is a rather late write up of Columbus Give Camp 2011. The event actually took place May 20 - 22, 2011. This was my third year volunteering as a GiveCamp as a developer. The past two years, I told them what my skills were and just hopped on whatever team they put me on. It was a good experience both times - show up Friday night, build code with lots of passionate & skilled developers that just want to help people out, and eat all kinds of good food, and demo what you built on Sunday.
This year, I decided I want to do Rails development & said as much when I applied. I ended up on a team that was developing a website to help a church camp track which families are coming. It was an existing project developed at Give Camp in 2009 and the developer team lead was also the charity rep. This was a HUGE boost for the project. Most charities have no clue what is even possible with technology. However, with someone that is a developer & charity rep, we came into the weekend and she had a list of what feature she wanted done this year, next year, and wish list for farther down the line as well as a list of bugs that needed to be fixed before any new features started.
We used GitHub for all our source code & project management. The only time I really use GitHub outside of minor tinkering is Give Camp so this took a quick refresher and unlearning some SVN habits.
It seemed like everyone got a lot done and all the charities were happy with what they got. One thing - it felt like plenty of devs showed up but only one person I know of there had graphic design skills. So graphic designers, if you want to help out charities - check out Give Camp next year! If I remember right, they are planning to have Columbus Give Camp in the fall next year - likely around October. The dates will be on columbusgivecamp.org whenever they are announced.
I won't bore everyone with details on the food for the weekend - if you really want to know you can just check out the Twitter stream from during May 20 - 22, 2011 and search for #givecamp. But here are the ones that stuck out:
Beignets - these are awesome. Something like elephant ears meet donuts
Creole Kitchen in downtown Columbus somewhere - heard this place is hard to find. Glad someone else went to get the food. I don't know what they put in their mac & cheese but it is VERY addictive. The other food was great too.
Just Pies - yeah, it's exactly what it sounds like. The peanut butter pie was probably some of the best I ever had.
Sunday, July 3, 2011
Wednesday, October 13, 2010
Slackware 13.1 and VMWare Fusion 3
I had been having some problems with Parallels and VirtualBox running Slackware virtual machines, so I decided to give VMWare Fusion a try. *
VMWare Fusion works with Slackware pretty well, but it makes a couple assumptions about Linux distros that are not true of Slackware:
1. You are using PAM (Pluggable Authentication modules)
2. You are using RedHat-style init scripts (/etc/rc.d scripts that start programs when your computer boots).
The following steps got me around all the issues I encountered installing the tools:
1. The install scripts expect /etc/pam.d/ to be present. It's not since Slackware doesn't use pam. Just run the "mkdir /etc/pam.d" as root before installing the VMWare tools. The installer won't run unless it can put a VMWare piece into that directory.
2. Set up the init script structure as VMWare tools expects it. This step may not be required **
cd /etc/rc.d
for V in {0,1,2,3,4,5,6}; do ln -s /etc/rc.d /etc/rc.d/rc${V}.d; done
cp /etc/rc.d/rc.inet1 /etc/init.d/network
cp /etc/rc.d/rc.inet1 /etc/init.d/networking
3. Install the tools as normal. When you run vmware-config-tools.pl, it may give you a weird message about X11 not finding some drivers and appear to hang. If this happens, run "killall mkinitrd" as root. This kills off whatever process is stuck there and will let the install finish.
This fix was covered in the comments in this blog entry about setting up VMWare's tools in Slackware 13.0
* Parallels issue: Parallels tools don't support Ubuntu 10.10 yet, the kernel modules won't build. I haven't had much luck with them at all in Slackware. They assume you are on an RPM or Debian based system. Virtual Box randomly shuts down my Slackware VM. Yes, I'm going to file a bug report. Decided to try out VMWare Fusion because it is currently only $9.99 for existing Parallels Desktop users until sometime in December 2010. Check out the full details on their VMWare Fusion promo site.
Tuesday, August 17, 2010
Universal iOS apps
I'm still developing my first iPhone app (iOS app as of version 4.0 of the OS) and have been coming to the conclusion that XCode makes many, many things easy to do, but it isn't always easy to do these things right.
Example: universal apps - having one app that runs on both iPhone/iPod Touch and the iPad. When you create an application, you have the choice of making it Universal. Basically the .xib files (XML version of the .nib files) that define your user interface will have an iPad version and an iPod/iPhone version and the application will load the correct one at launch time.
The downside: if you want ANYTHING to be different besides the user interface between the iPhone/iPod and iPad, you must write special code to handle those cases.
Example: universal apps - having one app that runs on both iPhone/iPod Touch and the iPad. When you create an application, you have the choice of making it Universal. Basically the .xib files (XML version of the .nib files) that define your user interface will have an iPad version and an iPod/iPhone version and the application will load the correct one at launch time.
The downside: if you want ANYTHING to be different besides the user interface between the iPhone/iPod and iPad, you must write special code to handle those cases.
Labels:
apple,
development,
iOS4,
iPad,
iPhone,
iPod Touch,
iTouch
Friday, April 16, 2010
Thanks a heap, Apple
I've been going through some tutorials for developing on the iPhone (and now iPad) and found this cool utility digging around the developer docs:
There's this cool little utility called "heap" in OS/X. If you find the pid (process id) of a running process and just run "heap PID" on the process, it will dump out how memory is allocated in the heap for that process.
The only two limitations are: you need to have access to that process, so you either have to do it on a process running as the user you are currently logged in or be running as root. Also, I think it has to be a native Objective C, C++, or maybe C binary.
It attempts to figure out what type of object each thing allocated in memory is, and breaks it up class. Included stats are total count, total size, average size, and if it can figure out what library the variables are coming from, it includes that too.
There's this cool little utility called "heap" in OS/X. If you find the pid (process id) of a running process and just run "heap PID" on the process, it will dump out how memory is allocated in the heap for that process.
The only two limitations are: you need to have access to that process, so you either have to do it on a process running as the user you are currently logged in or be running as root. Also, I think it has to be a native Objective C, C++, or maybe C binary.
It attempts to figure out what type of object each thing allocated in memory is, and breaks it up class. Included stats are total count, total size, average size, and if it can figure out what library the variables are coming from, it includes that too.
Tuesday, August 4, 2009
Importance of variable naming and whitespace
Last week, I decided just for the fun of it to take a crack at this crazy programming contest http://thedailywtf.com/Articles/Programming-Praxis-Josephus-Circle.aspx I didn't want to spend much time on it, so instead of trying to do it in some esoteric programming language, I turned to the language I am most familiar with: Perl. I created something that works and then I made it ugly. Really ugly.
For comparison, I'll show the ugly version first - originally crammed onto one VERY long line. I had to fix the formatting a bit so it would show up here.
And here is the original version before I uglified it. I know it doesn't look like it, but these two pieces of code do the exact same things.
As you can see, in the second version, you can *almost* tell what it does just by reading the code. Adding a couple comments and named command line arguments and it wouldn't be that bad. It would also need error checking.
The only real difference between the two is I removed the whitespace I could and made all the variables one or two characters.
As you can see, it is possible to write readable Perl. It is also very easy to write completely unreadable Perl, but that can be said of any language I've seen.
For comparison, I'll show the ugly version first - originally crammed onto one VERY long line. I had to fix the formatting a bit so it would show up here.
($c,$s)=@ARGV;@s=(1)x$c;$ls=$c;my($i,$sk)=(0,0);while($ls>1){$sk=$s[$i]?($sk+1):$sk;if($s[$i]&&($sk eq $s)){$s[$i]=0;$ls--;$sk=0;} $i=($i eq ($c-1))?0:($i+1);}$i=0;foreach my$s(@s){$i++;if($s){last;}}print"Safe $i\n";And here is the original version before I uglified it. I know it doesn't look like it, but these two pieces of code do the exact same things.
#!/usr/bin/perl -w
use strict;
my ($count, $skip) = @ARGV;
my @soldiers = (1) x $count;
my $live_soldiers = $count;
my $i = 0;
my $sk = 0; #skip counter
while ($live_soldiers > 1) {
$sk = $soldiers[$i] ? ($sk + 1) : $sk;
if ($soldiers[$i] && ($sk eq $skip)) {
$soldiers[$i] = 0;
$live_soldiers--;
$sk = 0;
}
$i = ($i eq ($count - 1)) ? 0 : ($i + 1);
}
$i = 0;
foreach my $s (@soldiers) { $i++; if ($s) { last; } }
print "Safe spot is $i\n";As you can see, in the second version, you can *almost* tell what it does just by reading the code. Adding a couple comments and named command line arguments and it wouldn't be that bad. It would also need error checking.
The only real difference between the two is I removed the whitespace I could and made all the variables one or two characters.
As you can see, it is possible to write readable Perl. It is also very easy to write completely unreadable Perl, but that can be said of any language I've seen.
Labels:
best practices,
contest,
obfuscation,
perl,
programming
Wednesday, July 22, 2009
Columbus Give Camp 2009 == awesome
What is Give Camp?
Give Camp is an event that connects volunteer developers, graphic designers, and database administrators with charities who need programming work done. This includes website redesign, setting up content management systems (CMS), and dynamic database driven web applications. See GiveCamp.org or ColumbusGiveCamp.org for full details.
One of my teammates, Joel, is apparently quicker to blog & less long-winded than me. If you're in a hurry, read his take on Columbus Give Camp 2009 on the Adelphus blog.
Pre-Give Camp
Last year, I heard about Give Camp from some blog posts right after it happened. I decided at that point that next year, I would make it a point to attend. So this year I found out about it pretty much just in time from a post to the Columbus Ruby Brigade mailing list from Greg Malcolm. I had at least 5 other things I wanted to do that weekend, but luckily none of them were plans I couldn't change.
I signed up & realized after I signed up that I didn't have any choice on the charity, project, and since I didn't sign up with a team I had no clue who I'd be working with. The thought did occassionally pop into my head "This event is originally sponsored by Microsoft. It'll be just my luck if I end up working on a .NET project and I have absolutely no experience in .NET." It turns out that thought was completely unfounded. Carey Payette and the other Columbus Give Camp organizers did a great job of making sure developers were matched up with projects that fit their skills.
I received an email on Wednesday with my team assignment. There were a few people that I didn't know, but there was one on my team that I did know. This was Gayle Craig from the Columbus Ruby Brigade. The charity I was assigned to work with was Tech Corps Ohio, which teaches kids in grades K-12 about technology and computers.
Welcome to Columbus Give Camp
Friday night the event kicked off. There were just over 40 developers there and at least one representative for each charity. There were a couple of teams using .NET, and originally one Ruby on Rails development team, which was too big and was broken up into two. I didn't feel I had enough Rails experience to hack something together during a weekend so put my PHP and Perl experience on my application for the event instead of my limited Ruby on Rails experience.
We worked closely with Aung Nay from Tech Corps Ohio (TCO). The project was this: they had multiple sites running Joomla (CMS system), Moodle (online learning system) and WordPress (blogging software). All of these were running PHP and each set up by different people, so they all looked like different sites. Before the event, Erin Corrigan from a firm called Aero313 put together a wonderful Photoshop mock-up of what all the Tech Corps Ohio sites should look like. Our mission (should we chose to accept it) was to take this template and make all the current TCO sites look the same. And they had plans to deploy more sites, so we had to build the templates in such a way they would be easy to deploy to new sites. I can't remember who came up with the name but we became #teamtco on Twitter.
TeamTCO
The team we ended up with was myself and 3 other people: Joel Helbling of Adelphus.com His official title is "Visionary" which is one of the coolest official job titles I've heard. Joel stepped up and became our project manager and gave everyone a five minute crash course in a project management technique called "Kanban." More on that later... Also on our team was Chris Bumgarner who is a lawyer who has taken a major interest in Linux and uses Arch Linux. Last, but definitely not least is Sarah Dutkiewicz (aka sadukie) who is a Microsoft MVP because of her involvement with IronPython. It made the weekend an awesome experience working with such a talented group. We decided to pair up to work on tasks since we are all developers, not web designers. Two heads are better than one when you're used to working with databases and such and are working with CSS and PHP.
Friday night: network hiccups, planning, and getting started
At first we had constant network outages. It was a sure-fire way to make the network go down if you asked if the network was up. Carey's husband saved the day by bringing in some network equipment and worked with some other people to get everything running smoothly.
Aung was very supportive and already had figured out exactly what he wanted to have done and also had it all prioritized.
Joel gave us a five minute crash course in Kanban, or at least enough of it we could keep track of what was going on project-wise. It worked like this: we had a dry erase board and a pile of Post-It Notes. We wrote every task we had to do on the notes, one task per note and stuck them on the left side column of the board labelled "Backlog." The next column is labelled "WIP" short for "Work in Progress." This column contains one Post-It Note of a different color for each "development unit" you have working on the project. Since we had four developers working in pairs, this meant we had two "development units" working on the project. Once you decide which task is next on the list to do, you move it from Backlog to WIP. Next up is "Testing" which is where you move a task once you think it is done and needs to be tested. Last of all is "Done" of course.
Before we set up the board, looking at the list of what we had to do made me feel a bit panicked but thanks to Kanban and Aung already having everything prioritized, we were able to just jump in and do whatever was most important first, second most important next, etc.
Luckily all of us had enough development experience to know we were going to need some kind of source code control tool since we'd all be working on the same set of files at the same time. Joel suggested git. I have no git experience, but it is similar enough on the command line to Subversion (svn) I quickly figured it out after a quick lesson on working with git. Then we had an issue of setting a git server. Luckily all the CSS will be public anyway, and all the PHP code we were doing was just tweaked themes of already open-source projects. So Aung gave us the OK to set up a free, public github project. This saved us from some severe misery throughout the weekend as despite accidentally overwriting each other's changes a couple times, we were always able to revert back to earlier versions and merge everyone's changes in. We had a couple people roving from project to project helping out, so you never knew who you were going to meet and work with.
Saturday: coding, dinosaurs, and foreign substances
I found out that I actually don't live too far from Chris, so we ended up just carpooling in on Saturday. I checked my email & twitter before I left and saw something about Ninja Dinosaurs. It turned out that some sleep-deprived programmers had found a video on YouTube called "Go, Go Ninja Dinosaur" which became our theme song for the weekend.
Project wise, Saturday was just everyone working to move the tasks across our Kanban board. James Bender played a big part in helping make sure everyone was fed. Potbelly Sandwiches donated enough boxes of sandwiches and chips to feed everyone for lunch on Saturday. Sophic Group took care of supper Saturday - Pei Wei. Pei Wei apparently gave twice as much food to Give Camp than the original order was! Also Aung dropped in with a huge box of strawberries and bag of fresh Mandarin oranges. This was a very welcome change of pace after the pizza, pop, chips, and other similar foods. Someone joked that fresh fruit was a foreign substance to developers and they'd probably go into seizures from eating fresh fruit. Luckily this was not the case - the fruit ended up on the big "help yourself" table and quickly disappeared except for a couple over-ripe strawberries.
At one point, I hit a snag with git. In treating a local git clone like a local svn working copy, I got myself into a situaton where I couldn't revert to a previous version and I couldn't push my changes. There were no conflicts, git was just really, really confused. A google search for the error turned up only one search result, and that was a patch send to the git mailing list in May to make it generate the error message I was seeing instead of doing who knows what... Failing with some kind of "something unexpected & bad happened" error message, I'd guess was what it would do before the patch.
Sunday: appreciation, two boxes of silver, and swordfish
Sunday I managed to wake up in time for the early service at church & then make it back to GiveCamp just in time for lunch. Everyone was hurriedly wrapping up their projects by fixing bugs in the code and putting in last minute features. Lunch was Kane's chicken - fried chicken & French fries and some kind of special sauce. So much for eating healthy.
We put the finishing touches on the Joomla template and made sure it was installable as well as working some on the Moodle template. We did look at the WordPress template, but that's as far as we got with that.
Aung showed up with two boxes that looked like Chinese takeout and said he was paying us in silver. Someone had joked on Saturday when Aung asked if we needed anything if we could have a bag of money. So he brought in two boxes of silver in the form of York Peppermint Patties which hit the spot! Again, so much for eating healthy...
Things started to wind down and we ended up doing a group picture with all the volunteers and then each group got to demo what they did on the weekend. I don't think anyone managed to accomplish everything they wanted to, but everyone seemed blown away by how much was accomplished over the weekend, especially the charities.
Afterward Aung asked us all where we wanted to go out to eat, his treat. Half our team was from Cleveland, half from Grove City and Aung wasn't familiar with the area, so we ended up eating at Meijin, the Japanese Steakhouse across the street from the Quick Solutions office (where the event was held). I ordered swordfish, which I remember having once or twice and last time a few years ago. I only realized on Tuesday, after seeing a twitter message from Joel, they had accidentally given me his salmon and he got my swordfish. I guess I'll have to go back there again and try the swordfish soon. Joel seemed to enjoy it.
Take-aways from Give Camp (besides the salmon pretending to be swordfish)
I learned several lessons from this experience.
* When starting a project, things go MUCH better if you know what is most important to complete to least important. You also need some way to know who is working on what.
* Source code control is a must! If you are working on a project alone, you can go back and see what things looked like before if it quits working as expected. If you are working on a team, it is NOT optional.
* Each developer should have their own development environment. Having a local copy of Joomla and Moodle on my laptop allowed me to work on my tasks without stomping all over Joel's, Sarah's, or Chris's changes if I happened to touch the same file. If we did touch the same file, we could merge all our changes together thanks to git. See above point about source code control.
* Community - It was just amazing to see how much could be accomplished by a community of people all working toward the same goal: how much can we get done for these charities in one weekend? This also allowed for some knowledge and talent to hop from group to group such as getting some help with PhotoShop and CSS when we needed it.
Traits of programmers who show up to Give Camp
What really impressed me about GiveCamp was how much fun it was. I think it would not have happened if anyone there was a jerk or pretending to know more than they actually knew. Thinking about it, I think it was this way because only particular types of programmers would even consider participating in GiveCamp.
* Social - a programmer who is completely antisocial would not have found out about Give Camp. The only way to find out about it was some level of involvement in the development communtiy.
* Giving - there's a certain kind of person who volunteers a weekend to help out other people at no charge with no strings attached. These people are much more fun to be around than the average bear.
* Confident - part of Give Camp is that you have just a weekend to complete a programming project. It takes a certain amount of confidence to even think of attempting this, and a certain amount of technical skills to gain this much confidence.
Addicted
I absolutely cannot wait for next year's GiveCamp! I can't remember last time I had this much fun programming and have already started to look for events like it before next July. The only things I can think of for sure would be other GiveCamps and hackathons. Unfortunately the only other GiveCamp schduled that I know of is Grand Rapids Give Camp in November. I don't think I will be able to make that one. And the only open source project I know of doing hackathons is OpenBSD, and theirs is in Canada on the other side of the continent. Maybe other projects just call theirs something different?
While I may not be able to find a Give Camp to go to between now & the next one, I think I can do the next best thing: be more involved in the programming community. There are some very active user groups and events in Columbus. Erubycon, Ohio Linux Fest, Columbus Ruby Brigade, and COLUG (Central Ohio Linux Users' Group) all come to mind. I'm sure there are a couple more that would interest me I could get involved in.
Give Camp is an event that connects volunteer developers, graphic designers, and database administrators with charities who need programming work done. This includes website redesign, setting up content management systems (CMS), and dynamic database driven web applications. See GiveCamp.org or ColumbusGiveCamp.org for full details.
One of my teammates, Joel, is apparently quicker to blog & less long-winded than me. If you're in a hurry, read his take on Columbus Give Camp 2009 on the Adelphus blog.
Pre-Give Camp
Last year, I heard about Give Camp from some blog posts right after it happened. I decided at that point that next year, I would make it a point to attend. So this year I found out about it pretty much just in time from a post to the Columbus Ruby Brigade mailing list from Greg Malcolm. I had at least 5 other things I wanted to do that weekend, but luckily none of them were plans I couldn't change.
I signed up & realized after I signed up that I didn't have any choice on the charity, project, and since I didn't sign up with a team I had no clue who I'd be working with. The thought did occassionally pop into my head "This event is originally sponsored by Microsoft. It'll be just my luck if I end up working on a .NET project and I have absolutely no experience in .NET." It turns out that thought was completely unfounded. Carey Payette and the other Columbus Give Camp organizers did a great job of making sure developers were matched up with projects that fit their skills.
I received an email on Wednesday with my team assignment. There were a few people that I didn't know, but there was one on my team that I did know. This was Gayle Craig from the Columbus Ruby Brigade. The charity I was assigned to work with was Tech Corps Ohio, which teaches kids in grades K-12 about technology and computers.
Welcome to Columbus Give Camp
Friday night the event kicked off. There were just over 40 developers there and at least one representative for each charity. There were a couple of teams using .NET, and originally one Ruby on Rails development team, which was too big and was broken up into two. I didn't feel I had enough Rails experience to hack something together during a weekend so put my PHP and Perl experience on my application for the event instead of my limited Ruby on Rails experience.
We worked closely with Aung Nay from Tech Corps Ohio (TCO). The project was this: they had multiple sites running Joomla (CMS system), Moodle (online learning system) and WordPress (blogging software). All of these were running PHP and each set up by different people, so they all looked like different sites. Before the event, Erin Corrigan from a firm called Aero313 put together a wonderful Photoshop mock-up of what all the Tech Corps Ohio sites should look like. Our mission (should we chose to accept it) was to take this template and make all the current TCO sites look the same. And they had plans to deploy more sites, so we had to build the templates in such a way they would be easy to deploy to new sites. I can't remember who came up with the name but we became #teamtco on Twitter.
TeamTCO
The team we ended up with was myself and 3 other people: Joel Helbling of Adelphus.com His official title is "Visionary" which is one of the coolest official job titles I've heard. Joel stepped up and became our project manager and gave everyone a five minute crash course in a project management technique called "Kanban." More on that later... Also on our team was Chris Bumgarner who is a lawyer who has taken a major interest in Linux and uses Arch Linux. Last, but definitely not least is Sarah Dutkiewicz (aka sadukie) who is a Microsoft MVP because of her involvement with IronPython. It made the weekend an awesome experience working with such a talented group. We decided to pair up to work on tasks since we are all developers, not web designers. Two heads are better than one when you're used to working with databases and such and are working with CSS and PHP.
Friday night: network hiccups, planning, and getting started
At first we had constant network outages. It was a sure-fire way to make the network go down if you asked if the network was up. Carey's husband saved the day by bringing in some network equipment and worked with some other people to get everything running smoothly.
Aung was very supportive and already had figured out exactly what he wanted to have done and also had it all prioritized.
Joel gave us a five minute crash course in Kanban, or at least enough of it we could keep track of what was going on project-wise. It worked like this: we had a dry erase board and a pile of Post-It Notes. We wrote every task we had to do on the notes, one task per note and stuck them on the left side column of the board labelled "Backlog." The next column is labelled "WIP" short for "Work in Progress." This column contains one Post-It Note of a different color for each "development unit" you have working on the project. Since we had four developers working in pairs, this meant we had two "development units" working on the project. Once you decide which task is next on the list to do, you move it from Backlog to WIP. Next up is "Testing" which is where you move a task once you think it is done and needs to be tested. Last of all is "Done" of course.
Before we set up the board, looking at the list of what we had to do made me feel a bit panicked but thanks to Kanban and Aung already having everything prioritized, we were able to just jump in and do whatever was most important first, second most important next, etc.
Luckily all of us had enough development experience to know we were going to need some kind of source code control tool since we'd all be working on the same set of files at the same time. Joel suggested git. I have no git experience, but it is similar enough on the command line to Subversion (svn) I quickly figured it out after a quick lesson on working with git. Then we had an issue of setting a git server. Luckily all the CSS will be public anyway, and all the PHP code we were doing was just tweaked themes of already open-source projects. So Aung gave us the OK to set up a free, public github project. This saved us from some severe misery throughout the weekend as despite accidentally overwriting each other's changes a couple times, we were always able to revert back to earlier versions and merge everyone's changes in. We had a couple people roving from project to project helping out, so you never knew who you were going to meet and work with.
Saturday: coding, dinosaurs, and foreign substances
I found out that I actually don't live too far from Chris, so we ended up just carpooling in on Saturday. I checked my email & twitter before I left and saw something about Ninja Dinosaurs. It turned out that some sleep-deprived programmers had found a video on YouTube called "Go, Go Ninja Dinosaur" which became our theme song for the weekend.
Project wise, Saturday was just everyone working to move the tasks across our Kanban board. James Bender played a big part in helping make sure everyone was fed. Potbelly Sandwiches donated enough boxes of sandwiches and chips to feed everyone for lunch on Saturday. Sophic Group took care of supper Saturday - Pei Wei. Pei Wei apparently gave twice as much food to Give Camp than the original order was! Also Aung dropped in with a huge box of strawberries and bag of fresh Mandarin oranges. This was a very welcome change of pace after the pizza, pop, chips, and other similar foods. Someone joked that fresh fruit was a foreign substance to developers and they'd probably go into seizures from eating fresh fruit. Luckily this was not the case - the fruit ended up on the big "help yourself" table and quickly disappeared except for a couple over-ripe strawberries.
At one point, I hit a snag with git. In treating a local git clone like a local svn working copy, I got myself into a situaton where I couldn't revert to a previous version and I couldn't push my changes. There were no conflicts, git was just really, really confused. A google search for the error turned up only one search result, and that was a patch send to the git mailing list in May to make it generate the error message I was seeing instead of doing who knows what... Failing with some kind of "something unexpected & bad happened" error message, I'd guess was what it would do before the patch.
Sunday: appreciation, two boxes of silver, and swordfish
Sunday I managed to wake up in time for the early service at church & then make it back to GiveCamp just in time for lunch. Everyone was hurriedly wrapping up their projects by fixing bugs in the code and putting in last minute features. Lunch was Kane's chicken - fried chicken & French fries and some kind of special sauce. So much for eating healthy.
We put the finishing touches on the Joomla template and made sure it was installable as well as working some on the Moodle template. We did look at the WordPress template, but that's as far as we got with that.
Aung showed up with two boxes that looked like Chinese takeout and said he was paying us in silver. Someone had joked on Saturday when Aung asked if we needed anything if we could have a bag of money. So he brought in two boxes of silver in the form of York Peppermint Patties which hit the spot! Again, so much for eating healthy...
Things started to wind down and we ended up doing a group picture with all the volunteers and then each group got to demo what they did on the weekend. I don't think anyone managed to accomplish everything they wanted to, but everyone seemed blown away by how much was accomplished over the weekend, especially the charities.
Afterward Aung asked us all where we wanted to go out to eat, his treat. Half our team was from Cleveland, half from Grove City and Aung wasn't familiar with the area, so we ended up eating at Meijin, the Japanese Steakhouse across the street from the Quick Solutions office (where the event was held). I ordered swordfish, which I remember having once or twice and last time a few years ago. I only realized on Tuesday, after seeing a twitter message from Joel, they had accidentally given me his salmon and he got my swordfish. I guess I'll have to go back there again and try the swordfish soon. Joel seemed to enjoy it.
Take-aways from Give Camp (besides the salmon pretending to be swordfish)
I learned several lessons from this experience.
* When starting a project, things go MUCH better if you know what is most important to complete to least important. You also need some way to know who is working on what.
* Source code control is a must! If you are working on a project alone, you can go back and see what things looked like before if it quits working as expected. If you are working on a team, it is NOT optional.
* Each developer should have their own development environment. Having a local copy of Joomla and Moodle on my laptop allowed me to work on my tasks without stomping all over Joel's, Sarah's, or Chris's changes if I happened to touch the same file. If we did touch the same file, we could merge all our changes together thanks to git. See above point about source code control.
* Community - It was just amazing to see how much could be accomplished by a community of people all working toward the same goal: how much can we get done for these charities in one weekend? This also allowed for some knowledge and talent to hop from group to group such as getting some help with PhotoShop and CSS when we needed it.
Traits of programmers who show up to Give Camp
What really impressed me about GiveCamp was how much fun it was. I think it would not have happened if anyone there was a jerk or pretending to know more than they actually knew. Thinking about it, I think it was this way because only particular types of programmers would even consider participating in GiveCamp.
* Social - a programmer who is completely antisocial would not have found out about Give Camp. The only way to find out about it was some level of involvement in the development communtiy.
* Giving - there's a certain kind of person who volunteers a weekend to help out other people at no charge with no strings attached. These people are much more fun to be around than the average bear.
* Confident - part of Give Camp is that you have just a weekend to complete a programming project. It takes a certain amount of confidence to even think of attempting this, and a certain amount of technical skills to gain this much confidence.
Addicted
I absolutely cannot wait for next year's GiveCamp! I can't remember last time I had this much fun programming and have already started to look for events like it before next July. The only things I can think of for sure would be other GiveCamps and hackathons. Unfortunately the only other GiveCamp schduled that I know of is Grand Rapids Give Camp in November. I don't think I will be able to make that one. And the only open source project I know of doing hackathons is OpenBSD, and theirs is in Canada on the other side of the continent. Maybe other projects just call theirs something different?
While I may not be able to find a Give Camp to go to between now & the next one, I think I can do the next best thing: be more involved in the programming community. There are some very active user groups and events in Columbus. Erubycon, Ohio Linux Fest, Columbus Ruby Brigade, and COLUG (Central Ohio Linux Users' Group) all come to mind. I'm sure there are a couple more that would interest me I could get involved in.
Labels:
charity,
columbusgivecamp,
givecamp,
joomla,
moodle,
php,
tech corps ohio
Monday, July 20, 2009
Life changing experiences
I have not been able to update this blog nearly as often as I should. Recently I had a life-changing experience that has changed my focus. As of May 6, 2009, I'm a dad! I'm the proud father of a little girl: Zoe Drobnack.
One cool thing: as of this writing, if you search for her name with quotes on Google, you get no search results at all. How often can you say that? Let's see how long it takes to show up with one search result.
Expect more updates shortly as I share my experiences from this past weekend's event: Columbus Give Camp 2009.
One cool thing: as of this writing, if you search for her name with quotes on Google, you get no search results at all. How often can you say that? Let's see how long it takes to show up with one search result.
Expect more updates shortly as I share my experiences from this past weekend's event: Columbus Give Camp 2009.
Subscribe to:
Posts (Atom)