Thursday, March 31, 2011

Programming Addiction

Sorry, no clever titles today.  I haven't personally done much this last week in relation to our project.  Instead, I've been catching up on some other work and then two days realizing and pondering the hazardous addiction of programming.

I believe I've mentioned that my dad is a computer programmer.  Growing up I remember that sometimes he would stay up really late working on a project.  When we would interrupt him to say goodnight he was always surprised that it was time for us to be going to bed.  As I grew up I thought maybe that was one of those "one-track mind" things, but as I have continually been reminded during my studies here at the College of Charleston, it is simply the addiction of programming.

I believe this addiction is something any programmer can relate to.  Maybe you don't always need to be programming, but once you start a project it is amazingly difficult to walk away.  I had two programming assignments that needed to be done this weekend, both of which were experiences of growing and stretching my abilities.  I actually enjoyed working on them for the most part.  Trying to understand why a few things weren't working in a C-language program was not so fun, but the rest of it was.  However, the hazards of the ability to get lost in a program and have no concept of time are realized the next day, or in my case, the next several days.

When I began my projects I fully intended to get up and take a short walk every hour, or at least every 90 minutes.  I knew this was important for me to do because of a back injury I had a few years ago.  For the most part my back is better, but it tends to flare up again if I sit at a computer for too long.  Add pregnancy back pain on top of that and movement becomes absolutely crucial to my survival.  However, about 30 minutes into my assignments I lost all awareness of the passage of time (and hunger, which is really something considering that I'm 5 months pregnant!).  The only thing that would bring me back to reality was my husband's interruptions, but even those couldn't pull me away from my computer for long.

On to the hazards: immobility and pain.  I unfortunately had to miss the last few days of class because of back pain and exhaustion.  I'm getting back on track with a renewed sense of urgency to NOT sit for more than an hour and a half and making sure I take time to stretch my back, but recovery is a lot slower without the medication I was able to take before.  And on that note...It is time for a walk.

For a humorous look at pain, check out Brian Regan...

Saturday, March 26, 2011

POSSCON Presents Possibilities

Let me begin by saying that POSSCON was fantastic! This was the first professional conference that I have attended, though I've been behind the scenes for several.  As I had stated in my first post about POSSCON, I was pretty nervous about the day, figuring that not many of my classmates would be interested in the same sessions that I was and about introducing myself to complete strangers.  It was definitely outside of my comfort zone, but it turned out to be rather fun!

The first breakout session I attended was led by Allen Tucker, of Bowdoin College. He was one of the people who started the HFOSS Project to get college students involved with open source software.  To be honest, I chose to attend this session simply because it was in the Education track, but as I listened to his presentation I was so glad that I had!  He spoke about a few different projects that were of particular interest to me because of my experience with non-profit organizations.  The first is the Sahana project, which is a disaster management software.  He didn't go into much detail about that, but sparked my interest and I hope to investigate it further this summer after graduation.  The second was the Ronald McDonald House (RMH) Homebase project, a web-based volunteer scheduler!  This project was actually one of Dr. Tucker's projects, so he had more to say about it.  This is really something that I'd like to get into because I had started working on the basics of a similar MySQL database for a class project.  I know that there is a great need for this kind of software among non-profits because the available software is either inadequate or beyond their budget.  I spoke with Dr. Tucker about Homebase briefly after his session and he was eager to work with me, which was very encouraging!

After that boost of confidence I was far more ready to speak with other presenters.  I got to speak with Walter Bender and ask some of my questions about OLPC.  I even spoke with some of the 3D Printing guys during one of the breaks.  And the last session I attended was the Data Governance Imperative with Steve Sarsfield.  Although this session was barely attended (only about three people, including myself), this was by far my favorite!  As acting DBA at my last job, I dealt with poorly collected and organized data on a daily basis, struggling to clean up thousands of entries and motivate change among my colleagues.  Steve Sarsfield works at talend*, one of the conference's sponsors.  They have created an open source solution, several really, to take care of data cleanup, integration, analysis, etc.  I actually plan to get his book and read it, and I may also be interested in working with someone at my old job and Mr. Sarsfield to set them up with this program.  I at least really want to look into it. 

At the end of the day, I guess it's a good thing that I'm not looking for work.  Sticking with these open source projects would provide a way for me stay involved with the CS community, keep developing my skills, and work from anywhere with as much or as little time as I have to be involved - giving my the exact level of flexibility I need as I become a mother and move across the country!  I'm so excited about these possibilities and now just need to remember to contact the people I met and get through the semester.  Here we go!

Monday, March 21, 2011

How To Make Lemonade

This week the A-Team was working on some documentation issues, both within the game for the user and on the activity's wiki.  For the most part this was a good first step: simple, but rewarding.

We divided up the tasks between the team pretty well, and having our code up on subversion is so helpful!  One of the first steps was done by Carlynn Carter, who created a new welcome screen for us that included the name of the activity and it looks great!  I know she had some frustrations in that project, but you can read her blog to find out more about it. 

As we worked we found that a solution to one of our problems was mysteriously implemented.  Previously, there were no instructions about how to play the game, what keys to press, or what things to watch out for - things you would normally find in a 'help' section.  Since we had struggled with this we decided it was important to add.  As we were familiarizing ourselves with the code and updating from svn we saw that all of a sudden help messages appeared on every screen in the game!  We initially thought that an absent team member had made giant leaps of success, but he denies any knowledge of it!  Where this change came from is still under investigation.  While this did give us a huge step forward, it was still not implemented in the best way, in our opinion, so we continued studying the source code and Francis Ani created a way to make these messages appear or disappear by pressing the 'h' key.  Success again!

I took responsibility for updating the activity's wiki page.  This may seem very simple, but since I am not overly familiar with formatting within a wiki, it was a bit challenging.  There are still some other improvements I would like to make to the wiki, but as my week begins to overwhelm me and it is only Monday, I'm choosing to prioritize my work. 

I am still very pleased with our progress this week and feel that I have a better understanding of the time commitment that needs to be made each week to keep up with our schedule.  It will definitely be challenging, but I still believe we can do it, especially if our team communication continues as well as it has so far!

Thursday, March 17, 2011

POSSCON 2011

I'm starting to get excited about POSSCON.  This will be my first computer science related professional conference, so I'm also a little bit nervous.  I'm also somewhat thankful for the requirement to meet and talk with some of the presenters.  I know that I'm too timid to do this if I wasn't being nudged, but I also know that it will make the experience more rewarding and beneficial.  I've also been realizing again just how important it is to learn these basic networking skills.

One of the things that is encouraging to me is that Walter Bender, one of the co-founders of One Laptop Per Child and involved with SugarLabs, will be there.  In case you're new to my blog, I am participating in the SugarLabs HFOSS project by contributing to a new activity called Lemonade Stand.  In addition to talking with Mr. Bender about SugarLabs and the activities, I'm also interested in OLPC, specifically its implementation in Africa and in general in rural areas of developing countries.  I've spent some time in Tanzania and Swaziland and to be completely honest, I don't understand how a laptop is going to fix things in either of those education systems.  Technology requires power, which is not always available in these schools.  The project has obviously been successful in certain locations, so I'm interested in how some of these basic obstacles have been overcome.

Another speaker I'm interested in speaking with is Deb Bryant.  She works in the Open Source Lab at Oregon State University and will be making a presentation on Open Source in Government.  This is something that is of particular interest to me because my husband is in the Navy and I have watched him suffer through poorly developed and maintained tools which he is required to use.  I didn't realize that the government was willing to work with open source, especially considering how Windows-centric their current software is and how Linux-centric open source work seems to be.  I'm hoping to talk with her about what is currently being done and where to find these types of projects.  Since I may not be working in my first year after graduation, this might be an interesting place to stay involved and continue developing my skills.

As I continued my research about the speakers I found someone else who will be presenting about a certain interest of mine: Steve Sarsfield.  He will be talking about data governance - a subject I have a hard time explaining, but which I believe is invaluable to the success of any enterprise.  My last job was essentially as a DBA, which gave me a lot of experience dealing with poor data collection and maintenance.  When I joined the organization there was a lot of data clean-up necessary and there were not good practices in place for collecting good data.  This problem may not be exactly what he is addressing, but it seems related to me.  His bio actually refers to him as a blogger, so I am hoping to find his blog and do some reading before POSSCON so that I can be better prepared, both in what to expect and in my questions.

Tuesday, March 15, 2011

"I love it when a plan comes together..."

Ok, maybe I'm claiming Hannibal Smith's line a little bit early, but the plan itself has come together...it's just not implemented successfully yet!  As the A-Team, we have decided what contributions we are going to make to the Lemonade Stand activity and when we think they should be completed (see our timeline here).  I was quite pleased with how easily this came together.  As we all played with the activity we kept finding more little improvements we could make or bugs we could fix, so we quickly came up with a list of tasks, actually more than we could do in the next six weeks!  We discussed our priorities and timetable and voila - a schedule was made!  I think we owe a lot of this simplicity to the youth of the activity.

We've also made contact with the activity owner, Nathaniel about our plans.  We had contacted him a few weeks ago and had a quick response from him.  He seems very helpful and eager to see this activity grow and improve.  In our plans we had several questions about what we interpreted as bugs or weaknesses of the program, so our latest contact with him is asking for a lot of clarification on these issues.  I expect a response in the next day or two, since our questions were a bit extensive.  I don't expect that this delay will slow down our progress at all since our first steps are more related to documentation, which he has already welcomed! 

As a team we still have to decide how we will divide the labor.  I think we will all collaborate on the work, but maybe rotate responsibility for submissions.  That will allow each of us to have the experience and to get credit in the Sugar community.

I am so happy to say that I am still optimistic about the work this far into the semester.  More than that, I am excited! I really like the Lemonade Stand game and think it has a lot of potential to be a great tool!  I am so glad to be a part of it!

Monday, March 14, 2011

Subversion and the Lemonade Stand

So, this last week as I pondered the things I needed to do to catch up in this class, I realized that the A-Team had never uploaded our FOSS project source code to the subversion repository!  I think we as a team got caught up in doing the work and just forgot about working with subversion, but now that we know what specific activity we will be working with I decided it was time to commit it to the 462Playground.

It was actually kind of fun to go back and play with subversion again.  I was reminded of how much I like subversion and how I wanted to set up a server on an external hard drive for backing up my computer.  But back to this project...

Like I said, it was fun, but it was also kind of tricky!  I had to go back and look up my login info, the right commands and all that stuff.  I also new that I needed to remove any .git files from my current directory, but when I ran the ls -la command to find any hidden files, there weren't any!  That surprised me, but I went with it. 

As I added a folder for our team, filled it with the appropriate files, and committed the changes I had a great sense of accomplishment, even though it only took a few minutes.  Now I just need to remind my team to remove what they have already downloaded and to instead use our new "source code" from subversion!  I think this will also help us to keep up with all the changes that we make as we begin working on the code - making me even more optimistic about our success in this endeavor!

When Life Gives You Lemons...

As the A-Team searched for ways to contribute to the Sugar Labs FOSS project in the last few weeks we stumbled across a delightful activity called Lemonade Stand.  This is a math/microfinance related game where the user runs a lemonade stand.  It challenges students to perform quick and accurate money math, work with ratios, manage their budgets to maximize profit, and even provides some "real world" situations that may be harmful or beneficial to the success of the lemonade stand. 

We had some trouble running the program at first because the check-out and build instructions embedded a folder an extra level.  Correcting these build instructions is actually our first idea for what we can contribute to this project! 

We also ran into some problems trying to figure out how to play the game!  We couldn't find any instructions on the wiki or in the game for what the goal was or how to take any action.  Since the GUI does not include a mouse we were able to deduce that the game is played via keystrokes, but which keys?  Through about 20-30 minutes of trial and error ("does this key do anything? or this key combination?") we were able to figure out basic game play and it was actually really fun!  Adding some instructions to both the wiki and the GUI is a second idea for contributions. 

I was personally intrigued by the random "real world" events.  A few examples that we ran across include lemon trucks crashing near the lemonade stand (gives you free lemons), a sugar salesman stopping by to give you some free samples, and ants stealing some of your supplies!  In 30 minutes of play time, I had ants steal my supplies multiple times and expressed to my teammates that I needed to relocate!  To my surprise, this is actually one of the requested features that has not yet been implemented.  I'm interested in playing with it, but I think my teammates also have a lot of other ways we can contribute which we are sure to be able to complete in our time frame.

Overall, I am really excited about Lemonade Stand.  I think it has great potential as a Sugar activity and is actually something I'd love to share with my sister, who teaches fourth grade!  I still have a lot of exploring to do into the inner workings of the game, but that should be fun, too!

TOS Ch.8: Documentation

Before beginning I must apologize for my neglect.  Something, I'm not sure which event in life, but something broke my habit of regular blogging.  So consider this the beginning of my catch-up blogs to update the world (at least those of you who are interested) in my progress through this course.

This chapter in our text book is about documentation: the purposes, best practices, and standards.  Amusingly, I find this subject to be a theme in my coursework this semester.  I am also taking an operating systems class in which my professor values good commenting in code so highly that it is actually a part of our grade!  Until taking this class I thought I was a relatively good commenter, but I am now finding that I have a lot of growing to do in that area.

In addition to my operating systems class, another class related to software design has been almost entirely about the other type of documentation - the living, cohesive, professional document.  I have also found this to be extremely challenging as it requires reviewing and editing the document every time it grows to make sure that it is consistent with itself!  As the document grows, so does the complexity and time required to accomplish this task - no wonder programmers hate documenting!  Even as I acknowledge its importance and firmly believe that it must be done, I dread going back to reviewing the document every week.

I also found this chapter on documentation to be beneficial because of my team's FOSS project for the semester.  We have decided to invest our time in a new activity called Lemonade Stand.  This activity is very new and therefore has a lot of room for improvement.  One of the first things we noticed is a total lack of documentation for the user!  We spent our first half-hour or so simply trying to figure out how to play the game and find the magic keys, since there is no mouse in its GUI!  The activity owner is also interested in having better documentation for the activity in its code base and wiki, so we are eager to apply what we are learning to this project.

It may seem surprising that while I spent the first bit of this blog complaining about how hard it is to create good documentation, and to maintain good documentation, yet that is what my team and I are excited about contributing to our FOSS project.  Perhaps that gives you an idea of how much we recognize and value the need for it.  We have all been part of FOSS projects in the past which have had terrible documentation and it was so frustrating to try to use or contribute to the software.  We don't think that anyone should have to go through that frustration, and so we are willing to put in the effort.

As we begin this process I expect that I will be rereading this chapter in even more detail because it is so important to get this right!  I'm glad to have the TOS book as a quick resource and guide.