Showing posts with label charity. Show all posts
Showing posts with label charity. Show all posts

Tuesday, July 21, 2015

Cleveland Give Camp 2015 - Or How I Helped a Team Build an Educational Game in a Weekend. Extreme Lean Agile development.

So it finally happened. I had a year where I wasn't either working or taking care of the family during Cleveland Give Camp!!!

NOTE:  This is *NOT* yet complete. I'm just throwing it up on Blogspot so people can read the TL;DR version and get a feel for how Give Camp went. I'll finish it this week.

tl;dr (tool long didn't read version)

I went to Cleveland Give Camp 2015, ended up helping VeggieU.org build an educational game featuring a worm eating healthy veggies, avoiding veggies that make worms feel yucky, and making other veggies grow by fertilizing them. The food was awesome, the people were awesomer, and I think everyone had a blast there.

The following things ensure a good project on short timelines:

  1. End users MUST know what they want and what is most to least important in their project.
  2. These must be in some kind of prioritized order.
  3. The quickest way to get stuff done is one thing at a time. NO MULTITASKING unless necessary.
  4. Don't bug the other team members if they are working unless you are stuck and need help OR have something you know they need.
  5. Related to #4 - have some indication that you're busy such as headphones on playing your favorite music. This also helps block out distraction.
  6. Have some way to share/communicate what you're working on and progress. Group chat room (slack.com for this weekend) and Kanban board worked great. Google drive to share files.
  7. COMMUNICATE. I know this seems to go counter to #4, but you need to communicate what's next and work with the end users asking for the project to make sure you are actually meeting their needs. Also developers need to communicate with designers to make sure what they are building looks like what it should as they go.

Pre Give Camp

I figured this out rather late in the game and was on the waiting list when I first signed up. My friend, sadukie, mentioned there may be a game project this time around. So when I signed up I mentioned that I was mostly experience with Perl, PHP, Rails, and ETL/DB development but I am also working my way through the Unity 3d training videos I bought on sale.

Give Camp Day 1

I packed my things and made the trek from Columbus, Ohio to Cleveland soon after lunch. I had managed to break my CPAP mask trying to pack it and my backup mask had got kind of moldy when our basement flooded a bit earlier this summer. On the way up to Cleveland I stopped by the CPAP supply store on the North side of town. I also stopped by Microcenter to get some Penguin Mints (caffeinated mints) but found they no longer sell those. Amazon carries them, in bulk! I am putting that on the shopping list for next year.

I check into the hotel and then head over for dinner and the charity intros.

Charity Intros

This year, there were 19 charities if I remember right, which is pretty massive. Total count was over 215 volunteers. They gave us name tags with a single letter on it signifying which charity we were working with but we didn't know which charity was which letter until after the intro was over. It sounded like there would likely be some shuffling people between charities so I made notes of which ones I'd like to work with.

The main ones I wrote down were Veggie U which wanted a game and a charity that provided sports equipment for disabled people which wanted an inventory management database.

Supper was grilled burgers and hot dogs along with chips and various other stuff you'd find at most cookouts. It was excellent.

Initial Ramp Up

As you probably guessed from the blog title, I ended up on the game development team. Veggie U had a curriculum for third graders in which they used worms and digging in the dirt by providing classrooms with a "garden in a box" for the students to grow their own healthy food. At the end of the curriculum is "Feast Day" where they get to enjoy the fruits vegetables of their work.

They wanted to boil down the facts about worms from the curriculum into a game that the students could play in the classroom so it had to be a no download, no info tracking, no ads, etc game. The gameplay they had in mind was a worm would eat the food that it finds healthy, avoid the food that it finds unhealthy, and fertilize the plant by aerating the soil and leaving castings - aka worm poop.

This is where our team REALLY lucked out. We had a group of three from the Cleveland Game Developers group that had done a Game Jam (an event they had 48 hours to make a game based on a theme). Two of these people were developers with familiarity with a tool called Construct 2 which is a drag n drop game creation tool that generates HTML5 games that can be published to websites and played on most modern browsers. The third was a graphic designer with a Tetris inspired tattoo.

We also had another designer that was also awesome and had a guy show up that does 3d animations. He brought not one but TWO iMacs to handle the workload.

To get things started, one of the guys with Construct 2 experience who had actually taught it before gave the rest of the developers a crash course in how to use the tool. Sadly, it only runs on Windows so I spent a good chunk of the night getting Windows installed on my Mac in Parallels. I had just removed the Windows 10 Tech Preview to free up some space and Microsoft is no longer allowing Windows 10 TP downloads since the official release is so close.

Luckily, James Gifford came to my rescue with a spare Windows 8.1 license he had + flash drive.

Moment of Truth

While everyone was getting settled and I was fighting to get Windows installed on my laptop, Howard (our super awesome project manager) asked if anyone felt like our team had too many people. We did have a lot. And he said some other teams were short on developers. I almost said "Well, I've never made a game before. Let me join the team that needs a database set up."

Luckily I came to my senses and realized that I didn't book a hotel in Cleveland and drive all this way to do what I do for my day job for free. Also about that time one of our Construct 2 experts came to the conclusion we have just about the right number of people and said so.

I don't remember much else eventful happening that night except we had some people who were content creators (people who write online) who boiled down the Veggie U curriculum to something that might fit in a game that third graders would enjoy.

Day 2 - Minimum Viable Product and Making it Look Like a Game


Morning


Lunch


Dinner


We Only Come Out at Night


Day 3 - Wrap Up, Adding Music, Sound and This Boat is Full of Surprises

Morning


Lunch


Afternoon Session


Closing Ceremony


Heading Home


Conclusion

Give Camp in Cleveland was an entirely different experience than Columbus. It was bigger by far. Also Columbus Give Camp was hosted in just what I can only call "normal" offices. The Cleveland Give Camp facilities were amazing - taking over a floating office on a boat and nearby airport.

Anyone interested in volunteering definitely should. And not just developers. I feel that the focus on developers may be one of the small things Give Camp needs to work on. There seems to be room for more people in other roles - project managers, designers, content creators, security experts, and probably some others I'm not thinking of right now.

And for those who aren't near Cleveland - look for a Give Camp in your area. If there's not one, look for a similar event. I would be shocked if you're in an area where no such thing exists. And even in those cases, you could look for the nearest hackathon or do one remotely!

I am looking forward to the next Give Camp already. If I can make it to one before the next Cleveland Give Camp, I will. But that will be one I make every effort to get to next year.




Sunday, July 3, 2011

Columbus Give Camp 2011 wrap up

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.

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.