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




We Only Come Out at Night

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



Afternoon Session

Closing Ceremony

Heading Home


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.

Monday, July 1, 2013

Don't Use Beta Operating Systems on Your Only Computer

This is a public service announcement that may be an obvious statement to some people. Don't use a beta version of an operating system on your only computer.

Details - I decided to upgrade to the MacOS/X Mavericks Developer Preview. That is 10.9 for those of you who need a version number. I also upgraded to iOS7 on my iPod Touch. I must say I love the looks of the effects on iOS7. However I ran into the same issues on both systems - most everything works great except for a couple apps that I use all the time.

Since I don't have a spare Mac or spare iOS device just lying around, this was a major issue. Or would have been except I took some precautions.

For OS/X, I happened to have an app called SuperDuper! which takes a snapshot of a hard drive and clones it to an external hard drive. I had taken a snapshot right before doing the upgrade and hadn't really used the laptop much before realizing Mavericks had some issues. To revert, I just had to boot from the external drive and then SuperDuper! snapshot of the external hard drive back to the internal hard drive on my laptop and everything was back as if the whole developers preview upgrade had never happened.

For iOS7, I had also done a backup right before the upgrade. I don't think restoring a backup of a previous version of iOS is supported for whatever reason, but a quick Google search yielded instructions on how to download and install the latest version of iOS6 and then restore from the backup so all my apps and data are available again.

Lesson learned - if you have something vital to your day-to-day work, don't upgrade it to a beta. Run the beta in a virtual machine or spare computer if it is an operating system. If it's just an app, try to run the beta and real version in parallel if possible.

Saturday, April 6, 2013

Want Cool Software - Help Build It!

My post yesterday about Gazingus Pins on my other blog got me thinking - if one of my biggest Gazingus Pins (something I spent money on without thinking about) is software - or apps as they say nowadays - maybe I should be looking to turn this urge to acquire and try out new software to good.

There is a large community of open source software developers out there all building a huge variety of cool apps and tools. When I see an app that looks like something I may want to buy, maybe instead I should go looking for an open source tool that accomplishes something similar and then if it is something I find myself using on a regular basis, jump in and help develop the app into something better.

Thursday, April 4, 2013

Pinto in Perl

Just checked out the latest episode of FLOSS Weekly about an application named Pinto In short, you download Pinto from CPAN and then run some commands to tell Pinto what Perl modules you are using and it will download the modules and keep track of them.

A couple features discussed on the show:

  • ability to create different "stacks" of Perl modules for different environments (development, test, production, etc) or operating systems (Windows, Mac, Linux) 
  • Version control of your stacks
  • "Pinning" which is locking a module to a specific version
  • Ability to merge in local modules that you don't want to be available on CPAN
After hearing a description of this, it got me wondering why these kind of things aren't available in CPAN in general? The main reason I can think of for not doing this is that it would vastly complicate the current CPAN set up.

If anyone pins an older version of a module, CPAN would have to keep that available forever. It could also lead to complexity tracking what is a local module not available anywhere else and what is a module available in CPAN in general.

Monday, August 27, 2012

Enabling Java plugins in OS/X Mountain Lion

Apple recently released MacOS/X version 10.8 also known as Mountain Lion. I actually needed to run something in my browser using the Java plugin to get some work done. Due to a security hole in Java, Apple decided they needed to make it so you were only running Java if you REALLY wanted to be running Java. Here's what I had to do to get Java running again.

1. Go to the web page that uses Java. Really any web page that uses Java will do. If you just want to test it out, you can go to Sun's Oracle's* test page here at this Java.com test page. If you are testing with this page, you will need to reload this page after step #4 and click the button that says test the current version of Java.

2. You should get a popup asking if you want to install Java. Go ahead and say yes. This will install the Java runtime on your system and make it available for standalone apps and your web browser plugins. The steps after this one are required to enable Java for browser plugins and Web Start apps.

3. You will now need to run an application called "Java Preferences." A quick Spotlight search should bring it right up.

4. Click on the "General" tab if it is not already selected and then check the "Enable applet plug-in and Web Start Applications" box.

5. In my case, this was a Web Start application I needed to run so I also had to go into the System Preferences and allow all applications to run. This can be found in "Security and Privacy" area then "General" tab and then "Allow applications downloaded from" needs to have the "Anywhere" button selected to allow Java Web Start applications that have not been signed with a developer certificate.

I hope this info is helpful as I spent a bit of time tracking down all the required steps and wondering why things weren't working.

* I know it's old news, I'm still not used to it.

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, 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.

* 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.