My pace

So it’s my last day as an undergrad student and probably my last day as a college student ever!

Decause told us we could write about whatever we wanted for our “final” blog post (read: last required post) for the Advanced FOSS class. So I guess I’ll talk a bit about what I’m doing now that school’s over. That’s the question everyone keeps asking after all.

Before I get to that though, I’d like to start at the very beginning.

During my junior year of high school, my friend asked me to sign up for a class with her and I agreed. I’m not sure how the misunderstanding occurred, but for some reason I registered for an Intro to Programming class…which was apparently not the class she told me to sign up for. I get to the class on the first day and my friend isn’t there.  I’m also the only girl in the room and have no idea what I signed up for.

We spend the first day learning about how the class is going to teach us a programming language called Java. Not wanting us to get too bored with just a lecture, the teacher does a quick demo at the end where we create a Hello World console application.  Okay, so I made some words print out on the screen.  That’s cool I guess.  Then we change it to take in input; it asks for the user’s name and then prints out “Hello [your name]”. I’m not sure why, but I was really entertained by that.

That, in combination with how thrilled the teacher was to have a girl in the class for once, led to me staying in the class. I have always been the type of person who hates letting others down, so for me to switch out of the class after the teacher said that it was so cool that I was in it…didn’t really seem like an option.

The year goes on. I get A’s on all of the programming assignments and enjoy messing around with Java.  None of the other students talk to me, and I do the projects on my own. I finish the two courses in programming that my school offers during my junior year, and go on to my senior year.

At this point I have to start thinking about college. I didn’t really know what I wanted to after high school other than go to college.  Not going to college was never an option I considered, because I very much understood that in our society its expected that everyone pursue higher education.

Growing up I had a couple of different ideas for careers. When I was really little, I wanted to be a librarian. This is likely due to the fact that my mom would take me to the library multiple times a week and we were constantly reading. As I got older, I started reading books by James Patterson, Lincoln Child, and Douglas Preston. At that point, I decided I would definitely become an FBI agent or some kind of criminal psychologist. It was very depressing the day that I learned that FBI agents, even the ones who focus more on psychology and profiling, had to pass all kinds of physical tests and carry guns. Gym was always the bane of my childhood and teenage existence, so I gave up on joining the FBI.

Then towards the beginning of high school, I had two more ideas.  Comic book artist and zookeeper. I enjoyed drawing, but I wasn’t very good at it. Definitely not good enough to get into an art school. I loved animals, but there wasn’t much of a higher education pathway to most animal-related jobs. And even if I did go to school for something related to animals, the salaries most of those workers get wouldn’t be sufficient for paying off loans.

So both of those options offered very little job stability, and I wasn’t sure how I could turn a college degree into those jobs. It was around this time that my mom suggested working on video games.  I had been playing games for most of my life and they were a pretty big part of my life, so I considered the idea.  My mom posted on the forums for the MMORPG she played at the time, Lord of the Rings Online. Several employees from Turbine responded to her question (basically, what should her daughter pursue in school to become a game developer) and the consensus was computer science or software engineering. I remembered that I did really well in the programming class during my junior year, so I figured why not? It was the only thing I felt I was good at.

We then looked at the job opening pages for different game companies and noticed that the title was usually “Software Engineer” and decided to look at schools with a software engineering program.  Conveniently, RIT not only had one, but had the very first undergraduate software engineering program in the United States.  I attended open houses where I learned about the different majors, and although the Game Design and Development program sounded more attractive to me, I was assured by students in the software engineering program that if I wanted a job, I should enter the software engineering program. So I did.

Time passes, I start off bright eyed and bushy tailed thinking that in college I will be able to work on things that excite me.  That wasn’t really the case though. Although I aced my computer science and software engineering classes, I didn’t really care about the projects we made. I thought it’d all be worth it though, if it meant I could graduate with a magical piece of paper that would let me work on things I did care about. But that belief was gradually worn down. By upperclassmen telling me that getting a job in the game industry was impossible, by other students in the program mocking anyone who said they wanted to work on games, by all of the people I looked up telling me I needed to be like them and go apply at places like Microsoft and Apple because “that’s where smart people work” apparently.

So I spend the first 3 years at RIT making software I don’t like, forcing myself to interview at companies that I wasn’t a good fit for, and then hating myself for not being able to get those jobs.  It’s funny because, in hindsight, of course I didn’t get those internships.  I didn’t even really want them.  I could care less about word processing software. But at the time, it was such a blow to my self esteem. I had given up on something that I actually wanted to do, to spend all of my time trying to get a job that I wouldn’t even like, so that people who probably don’t even remember me now would respect me.

The breaking point for me was towards the end of my third year when I co-oped at a local company that made access control software. In addition to my not being invested in the product at all, I was also one of only two female developers, and the rest of the employees were significantly older than myself- mostly married men with children.

I’ve always struggled a bit with social anxiety, but it became very extreme during that internship. I didn’t feel like I could relate to my coworkers and since they were all a generation older, I felt very intimidated talking to anyone or asking for help. Even worse, they could tell that I didn’t enjoy what I was doing and I was too tired to fake it any more.

I was very depressed during the 6 months of that internship and the summer afterward.  I was very lonely, very unfulfilled, and I felt very stupid. I debated dropping out of college entirely.  I had put all of my internship money towards student loans and if I had stopped at that point, I would have had everything paid off. It’s funny because, when you say you are thinking about dropping out of school, most people assume it’s because of grades.  But I had close to a 4.0. I wasn’t bad at programming.  I just didn’t love it like everyone else seemed to. And I hated having to pretend that I did in order to get jobs I wouldn’t enjoy.

My academic advisers in SE asked me to come in and talk with them, but I refused because I was so embarrassed.  I didn’t want everyone to know that I was a fraud. Luckily, one of my friends in the Game Design and Development program convinced me to switch majors instead of drop out entirely. My boyfriend at the time (now husband) also proposed and told me he would be supportive if I wanted to give game development a shot.  I submitted an application for a change of major, and was accepted, I think mostly due to my grades and history doing research projects in the SE department.

I held off on telling people for a long time.  I was very afraid of people in SE making fun of me for switching.  Not without reason, I had already heard students who changed majors being made fun of, and almost any GCCIS student knows that some people in CS and SE condescendingly refer to the IT program as “I tried”. Add in the extra hostility the GDD students get since other GCCIS students sometimes blame them for “stealing lab space”, and I think I had a good reason to be nervous.

When I did finally come out with my change of major, most of my friends were supportive but there were, as I expected, quite a few people who told me I wouldn’t be able to get a job, that I made a mistake, and so on. For my first year in GDD, I avoided the Society of Software Engineers. This was the club that I had spent my first 3 years at RIT participating in as a committee member, an officer, and a primary officer. It was also where most of my friends were.

After the first quarter in GDD I realized that, although I was enjoying my homework for the first time at RIT, I was still very lonely and afraid of talking to people.  I joined the social anxiety group in the counseling center, and started seeing a doctor in the health center for escitalopram. From that point on, my mental health and happiness improved dramatically.  I enjoyed college, started making some friends in GDD, and was eventually able to go back to the SSE lab. People still bothered me occasionally about the change in majors and whether or not I’d be able to get a job, but for once in my life I didn’t care more about what other people thought than I did about my own well-being.

And that takes me to this year.  My senior year in college. All I had left to complete was my advanced electives for the GDD program and one last SE class to complete a minor.  I was able to choose what I wanted to take, and since I was nearing the end of my time at RIT, I decided to focus on 3 completely different areas to get an idea of whether any of them resonated with me.  Those three areas ended up being game audio, open source development, and iOS development. I took 2 classes related to each and I think ultimately all of them were valuable experiences and will end up being relevant to what I decide to do post-graduation.

So that brings us to the big question, what am I doing post-graduation? The truth is, I still don’t know. What I do know is that almost immediately after graduation I’m going on my honeymoon to Kauai and for the first time in 5 years I’m going to spend some time away from technology and just enjoy nature again.

Then I need to spend some time getting some health problems sorted out.  While I was able to spend a lot of time during the past 2 years taking care of my mental health, I put off a surgery that I need because I didn’t want to deal with it while I was still in school. I had already had surgery during my second and third years at RIT, and I was tired of losing my Christmas vacations to getting poked at with scalpels.

After that I’m going to spend some time getting my house situated.  Installing a fence for my dog. Pulling out bushes we don’t like. Maybe make a custom table for our table top gaming groups. Etc.

And then I don’t know what I’m going to do. I’m still not sure if programming is something I want to do 8 hours a day 5 days a week for the next couple decades of my life. I don’t know if it’s good for me.  But I do know now that I enjoy making software I’m interested in.  I plan on developing games and apps on my own once life has settled down again, but I don’t know if it’s something I’m going to do as a full-time job, or something I will do as side projects.

Looking back, I have some regrets.  I wish I hadn’t come to college until I had my mental health sorted out and until I had more of a backbone and could commit to my own dreams without letting others opinions scare me away from them.  If I could do it again, I’d have liked to have gone into GDD from the beginning and been able to really become a part of that community at RIT and get involved in making games outside of classes. I think if I had done that, it would have been more valuable to me.

On the other hand though, I’m still really proud of myself for trying to sort things out and get on the right track, even if it took me 3 years to figure it out. I might not be coming out of RIT with a job at Microsoft or at a triple A game company, but I do have the skills I’d need to do indie game development on my own and my open source classes showed me that I can make things that real people will use outside of academia. I may not be as sure as my friends/classmates about what I want to do in life, but I’ve come really far the past 5 years.

I can’t run all that fast
And I’m not very strong
So I’ll just go steadily at my own pace

Tickets finished this week:

  1. https://github.com/lle6138/raindrop.py/issues/9
  2. https://github.com/lle6138/raindrop.py/issues/6
  3. https://github.com/decause/advfoss/pull/129
  4. https://github.com/decause/advfoss/pull/128
  5. https://github.com/decause/advfoss/pull/135

Civic App Challenge ~fin~

Today was the awards ceremony and press conference for the ATT Civic App Challenge in Rochester, NY.  While I did not participate this year, I did attend the press conference to see who won. I noticed that the winners were a good mix of students from RIT and residents from the Rochester area.  For those who are not familiar with the competition, it was open to students and non-students as long as you were in the nearby area.  They even had two categories for the competition- new apps and existing apps.

Initially, when I heard that non-students, even industry professionals, were able to participate, I was a little worried that students wouldn’t have a chance at winning.  But it appears that concern was totally unnecessary 🙂 My partner from the Advanced FOSS class, citruspi, is a freshman and he got an honorable mention! I didn’t know any of the other winners but several of them were from RIT.

One thing I noticed is that a lot of the winner’s apps addressed broad issues that affect a lot of cities.  I think next year, if the challenge is run again, I would like to enter and create something that addresses a more Rochester-specific issue or an issue that affects Rochester in particular. Since I’ve bought a house here with my husband, I imagine some of those issues will become apparent during our first year as official residents.

Tickets

Ten tickets need to be created

  1. https://github.com/decause/advfoss/issues/104
  2. https://github.com/lle6138/raindrop.py/issues/7
  3. https://github.com/lle6138/raindrop.py/issues/8
  4. https://github.com/lle6138/raindrop.py/issues/6
  5. https://github.com/decause/advfoss/issues/105
  6. https://github.com/decause/advfoss/issues/106
  7. https://github.com/decause/advfoss/issues/107
  8. https://github.com/decause/advfoss/issues/109
  9. https://github.com/lle6138/raindrop.py/issues/9
  10. https://github.com/lle6138/raindrop.py/issues/10
  11. https://github.com/decause/advfoss/pull/128

Community Contribution #3

I’ve decided to continue making edits on RocWiki.  Since my husband and I have just bought a home in the area, I have developed more of an investment in the community, so being able to tie this assignment into doing something that is beneficial to other locals appeals to me.

I did not create any new pages this time, but I made edits on several different pages to add new information, fix broken links, or add new links.  You can view my changes here.

I also created a user page..because apparently that is the cool thing to do 🙂

Update on raindrop.py

Development on raindrop.py has ended! At least in terms of what we were working on for the Advanced FOSS class. I am really happy with how it turned out. Citruspi had all of the web knowledge the project needed that I was missing, so we were able to make the app without problems and I think it works great. We still need to upload it on pypi, and I’m hoping that other people will find the project useful.  I know that I’m going to use it in my house once I get my hands on a Raspberry Pi to run it off of.

For anyone who hasn’t read our initial proposal, raindrop.py is a little python application that plays ambient background music based on the current weather. You run a python script and then in your web browser you can customize what music you want to play for different weather types. Whenever a new weather condition is encountered, a new spot for it will appear on the website and you can drag an .mp3 file to it.

Right now it’s got a pretty minimal feel to it, which I kind of like, but our professor has suggested seeing if there are any other features/bits of polish that we’d like to add to it. One small thing I thought of is giving the user feedback if they try to use a .wav file instead of .mp3, since the application right now only supports mp3.  If you add a .wav file to it, then it’ll fail silently until it tries to play that track and then it’ll crash.  Which isn’t very elegant :p

I think I’d prefer to have it pop a message up if the user tries to drag a .wav file to a weather condition, and then not actually save the file.

ps: more blog posts about Project Spark will follow, but I’ve been busy since I just got married and bought a house =)

edit: Here’s the pypi link! https://pypi.python.org/pypi/raindrop.py/0.1

PAX East 2014

I’m going to start off by saying that I plan on making two posts about my experience at PAX East 2014. This first post will be a general overview of the expo, and the second will be specifically about the Project Spark demo I had on Sunday.

PAX, for those who may not know much about it, is the Penny Arcade Expo. There are several different conventions that are a part of PAX.  PAX East, which is in Boston and is the one that my friends and I attend.  PAX Prime and PAX Dev, which are in Seattle where the Penny Arcade office is located.  PAX Aus, a new expo that is in Melbourne Australia.  And then the latest installment which was just announced over the weeklend, PAX South which is going to be in San Antonio, Texas.

While the expos certainly have content related to the Penny Arcade webcomic and their other projects, it is primarily a gaming convention. There is a large industry presence for both video games and tabletop games, with both indie and AAA developers showing off their work on the expo floor.  There are also panels related to all kinds of aspects of the games industry and gaming culture.

So my weekend basically went as follows

Friday

  • Mike and Jerry Autograph signing
  • Checking out the expo floor, primarily the indie games
  • Mike & Mike Show: Why are there cards in my RPG
  • The Thornwatch playtest

Saturday

  • Make A Strip
  • MMORPG.com: The future of online games
  • Checking out the tabletop section which is board games and pen and paper RPGs
  • Console Launches, a postmortem
  • Club PA Meetup

Sunday

  • Isshoukenmei: Localizing Japanese games
  • Acquisitions Incorporated: Live D&D Game: Dragons Over Easy
  • Checking out the AAA booths
  • Getting a Project Spark demo

There are a couple of things I’d like to elaborate on, but I know not everyone is interested in all of them so I’ve put them in different sections so that it’s easier to find which events/aspects of PAX you’re interested in.

Indie Games

As usual, one of the highlights of the expo was being able to try out all of the indie games and talk with their developers. In particular, I was excited to find out that Christine Love had a booth.  I learned about Love recently, although I had heard about some of her games (mostly Digital: A Love Story and Analogue: A Hate Story) in the past.  I became more aware of her as a developer when a subreddit I frequent had a post about her latest game, which seems to be an explicit dating sim, but one that, in a way, is also a criticism of the genre. In regards to her upcoming game, Love made the following comments in an interview with Polygon:

“Sort of like dating sims or the Persona games’ social links, but with a much more honest portrayal,” Love wrote. “Really, dating sims are inherently about manipulating other people — pick the right dialogue choices based off what you think they expect, learn about their interests so you can give them perfectly tuned gifts, make decisions based off whether you’ll impress them or not — but like to pass it off as being about romance. Well, fuck that. You can still do that in Ladykiller in a Bind; we’re just not going to pretend that it’s anything other than manipulation. It’ll have consequences.”

I find her take on games exciting.  She makes games about subjects that are often ignored by other developers and her games always seem to have something to say, and I find that admirable. So getting to talk with her was a really nice surprise for me, especially since I want to be an independent game developer as well. I also am a bit interested in ren’py which is the open source engine she’s been using for her visual novels.

It’s these kinds of interactions that make the indie booths fun, in addition to getting to try out new games that you might not have known about. In a future blog post I’m going to write more about the games I tried out that really piqued my interest and what the developers had to say about them.

Thornwatch

Thornwatch sign

Blade, Guard, Sage, and Green Heart

Thornwatch is Mike Krahulik’s (the artist behind Penny Arcade) upcoming tabletop roleplaying card game. The thing to note here, is the addition of the word “card”. While I am by no means a RPG expert, the addition of cards to the genre is new to me and according to Mike Selinker, the way that cards are utilized in Thornwatch is a new game mechanic and has the potential to permanently change the tabletop RPG genre.

Instead of a character sheet, you have a deck of cards that have your skills or your attacks.  When you’re in combat and you’re hit by enemies, you take wound cards which is slightly reminiscent of Nightfall, but the main difference being that you die if you draw a hand that is entirely wounds.

While in most RPG’s you roll for initiative, there is an interesting “momentum” mechanic in Thornwatch. Each character and enemy has a card that gets shuffled by the GM and then lain out on the table to determine who goes first.  When enemies take damage, their card is moved down the line of momentum cards and when it hits the end the enemy is knocked out. After each round, the momentum deck is reshuffled and lain out again.

This is not a mechanic I have ever seen before and it sounded strange at first, but on Friday night we went to the Thornwatch playtests and stood by the table that Krahulik was GMing. In practice, it proved to be a pretty neat idea.

Mike Krahulik playtesting Thornwatch

Friday night playtest with Mike Krahulik as GM

Seen above is Krahulik as the GM on one side of the table, and players on the other side playing 4 of the announced classes (Green Heart, Blade, Guard, and Sage).  In front of Krahulik is the momentum deck laid out on the table, as well as the map with the character markers.  You may also notice that each of the players has cards in front of them as well, which they are using for combat.

The players we watched seemed to enjoy the game, and my group all agreed that it looked interesting and that we would pick it up and give it a shot when it comes out next year (When we spoke to Mike one on one, he said that he is hoping for a release by next year’s PAX Prime).  I think the card mechanics are going to be really fun and that they do have the potential to change the RPG genre, but at the same time I have some concerns which I voiced to Mike, although the answers I got were somewhat vague. Which is understandable considering the game is still in development.

Because the game uses cards instead of a character sheet, creating homebrew characters, skills, and enemies could be more difficult.  You can make your own cards, following Thornwatch’s example, but that does seem like it would take work and would be costly if you wanted the cards to be of similar quality to Thornwatch’s.  Additionally, there does not seem to be a plan (as of yet) to release instructions to GMs that want to use the game mechanics for different settings/characters/enemies. Balance is a serious concern with tabletop RPGs, and the average GM might not be equipped with the skill needed to balance everything on their own.

So here is the direction I would like to see Mike go with Thornwatch.  I want to see an abstracted version of the mechanics released, similar to Savage Worlds.  With Savage Worlds, they sell specific settings with well defined skills and enemies, but they also sell a generic guide on how to use the system for your own game and how to create new  balanced races/classes/and so on. I would like to see Thornwatch ultimately be one setting that uses an overarching generalized system.

I would also like to see generic templates for the cards released so that users can easily create homebrew cards for their own settings and have the game still feel polished like Thornwatch does.

I don’t know if this is the route Mike and the Penny Arcade/Thornwatch team will take, but if they did, I think this could definitely shake things up and maybe even usher in a new “era” of tabletop, or perhaps a sub-genre.

Future of Online Gaming

Industry guests at the panel

The industry guests answering questions

This is a panel hosted annually by mmorpg.com.  There will usually be anywhere from 4~6 industry guests that represent different new or upcoming MMOs, and someone from mmorpg.com will mediate and pose questions to the panel of developers/producers.  This year the panel had people that worked on the following MMOs: WildStar, EverQuest Next, Pathfinder Online, Trove, and The Repopulation.  A lot of questions were asked, and one thing I noticed was that many of the answers had a common theme: player generated content and persistence in regards to player’s actions.

This was slightly amusing to me, since I have attended this panel all 3 years that I’ve gone to PAX.  And at the very first one, the EverQuest Next representative was really pushing the idea of player generated content, while the other developers didn’t make much mention of it.  This year though, every representative was very much behind the concept. One thing that occurred to me was that EverQuest Next might have an advantage in this regard, since they seem to have been developing with user generated content in mind.

I can’t remember which representative it was, but one of them made a very good argument for player generated content.  They pointed out that nowadays, it might take developers 6 months to come up with an exciting new patchful of content for an MMO, but for hardcore users it will only take them a few weeks to blow through. When people consume content so quickly, it’s not feasible for software developers and game designers to keep up with the content production.

Their proposed solution to this was to allow players to create content. I think it’s a legitimate strategy considering that games that have allowed mods or have some form of player generated content (i.e. Skyrim, the later Fallout games, Animal Crossing, Minecraft, etc) seem to keep people’s interest really well. A game I’m playing the beta of, Starbound, has plans to allow users to create their own quests on the servers they run.  I think that these kinds of features will help increase the lifespan of games. They allow games to have intrigue and surprises even after the main storyline or official content has been exhausted.

Kickstarter, Board Games and Creative Commons

One of the recurring booths at PAX is Cards Against Humanity, a hugely successful party game that was kickstarted and then released under a non-commercial attribution license. I don’t know much about the state of indie board games before Cards Against Humanity came out, but I have noticed in the past two years that there are a lot of board games getting funded through KickStarter, and some of them are also being released under creative commons which I find interesting, since not many games of the digital variety are released as open source.

One of the games that I picked up this year, slash: romance without boundaries, is released under creative commons just like Cards Against Humanity.  The entire game is available for free online if people want to print the cards out themselves. In slash, there are cards with the names of different characters, celebrities, and historical figures on them.  The “card czar” (pardon me for borrowing lingo from Cards Against Humanity) plays one of their cards, for example, Batman.  They then pose a question to the other players such as “How did your character first ask Batman out?” and then the players must all select one of their own cards and explain how their person asked Batman out and prove that their character is the best partner for Batman.

slash: romance beyond boundaries box

slash: romance without boundaries

I’m a huge fan of fanfiction, fanart, and shipping in general, so the game had instant appeal to me.  But I decided to poke the creator about it a bit more.  He shared the story of how he came up with the game at a previous PAX with his friends when they realized they were getting a bit bored with Cards Against Humanity.  He went out that very night and printed off a prototype and playtested it with people at PAX.  The overwhelmingly positive response to the game and a successfully funded kickstarter led him to quit his job of 10 years and pursue board games as a career. He founded a company called Play Date and has been making games since. I found his story heartwarming and I was happy to buy his game even though it can be downloaded for free online.

In the past, I had spoken with a man who worked at a popular board game publisher and was disappointed to learn that getting a job at one of the popular board game companies was just as, if not more, difficult than getting a job in the video game industry. But thanks to crowdfunding and kickstarter, it seems like the analog game field has become more accessible to new developers. With digital games, you can release your indie games on your own without paying much expense, but analog games have production costs that aspiring designers might not be able to afford yet, so crowdfunding has become a popular alternative.

Another cool piece of board game news, the folks from Cards Against Humanity are running a web series where 16 board game designers are competing to have their game published and sold at Gen Con. Tabletop Deathmatch has two episodes up already, and the group of judges are all pretty esteemed. Several of them were even at PAX East (i.e. Luke Crane and Mike Selinker). I’m kind of a sucker for competition shows and what I love about the web series we’ve seen coming out recently (i.e. Stripsearch, the webcomic competition show) is that they usually avoid the kind of manufactured drama you see in reality shows on TV (i.e. Project Runway or America’s Next Top Model) The people behind Stripsearch and Tabletop Deathmatch use the web series as a way to help the artists/game designers get exposure and give genuinely constructive criticism.

Acquisitions Incorporated

Acquisitions Incorporated Logo

Acquisitions Incorporated logo

Penny Arcade and Wizards of the Coast have been collaborating for several years now on something know as Acquisitions Incorporated, a long-running D&D campaign featuring characters made by the Penny Arcade founders, Scott Kurtz of PvP fame, and other celebrities. The sessions are often released on podcast, but special live games are held at PAX Prime.  For the first time ever, one was also held at PAX East. An intro animation was released beforehand to help new viewers understand where the campaign was at and introduce the newest player Morgan Webb.

Image of dungeon master Chris Perkins in a costume

Dungeon master Chris Perkins in all his glory

The session was very entertaining. At this point I was not up to date with the podcasts of previous sessions, but I still enjoyed watching them play and the banter between the players and characters. Chris Perkins played up the “scheming dungeon master” trope by almost causing a TPK (Total Party Killed) and the personality of the characters shone through the player’s roleplaying. Omin (played by Jerry Holkins) suavely sneaks the Acquisitions Incorporated business card into the hands of a possible client, and Binwin Bronzebottom (played by Scott Kurtz) is commissioned by the rest of the team to put their companies logo onto the foot of their giant stone robot so that their logo is left in its footprints. Jim Darkmagic (played by Mike Krahulik) is as amusing as ever, upon learning that someone might steal his wands, the mage “cleverly” moves his dual wands from his back pockets to his front.

The newest intern in Acquisitions Inc is Morgaen, played by Morgan Webb. The concept behind having an intern is that, after their fourth member Will Wheaton (Playing Aeofel the elf) left, they decided to have a rotating fourth member. I wasn’t sure how Morgan’s chemistry would be with the other players, but it seemed to work out pretty well. The audience got a kick out of her character, which she roleplayed as a new intern that had lied on her resume and could not actually pilot a giant robot.

If you’re interested in watching the session, a high quality recording can be found here. I really enjoyed it, and I will definitely attend future sessions that occur at PAX East.

Conclusion

PAX East was, as always, a very positive experience for me. The community is so welcoming and despite struggling with social anxiety, I felt comfortable enough to ask total strangers to play games with me while we were in line for different events.  The enforcers (volunteers who help run the expo) at PAX have consistently been awesome, giving people pins and other swag, running games while people are sitting in lines, and answering questions from directionally challenged people like myself.

Out of all of the conventions I’ve been to (PAX, Otakon, Tora-Con, and Fan Expo), PAX still remains the best at managing lines and crowds. The more popular events draw a large crowd so many people will line up 1-2 hours early to get good seats, which at most conventions leads to people getting hungry, bored, or cranky while they’re in line. Not at PAX.  The enforcers keep everyone entertained and engaged, while the Cookie Brigade walks around and sells cookies with all proceeds going to the charity Child’s Play.

Jerry and Mike decided this year to try and step back from having such a figurehead type of presence at PAX. What this meant was running less Q&As and instead spending more time around the convention as a regular attendee.  I think this took some of the stress off of them, while at the same time letting people bump into them during the expo and talk 1-on-1. I spoke with them several times throughout the expo from anything ranging from our mutual backgrounds with Lexapro and anxiety, the status of Thornwatch, and even pins that we thought would be cool for Pinny Arcade. It was very cool for someone like me, who has been of fan of Penny Arcade since middle school, to be able to talk to them in such a casual setting.

Stay tuned for a follow-up on my experience with Project Spark and my thoughts on what it means for the “console war”, and its potential use in teaching kids game development and maybe even raise interest in programming. I am also considering a follow up post with details on the indie games that piqued my interest the most (there were lots!)

Community Contribution #2

For my second community contribution I decided to upload sound effects and dialog bits onto Freesound.org  I had used this site previously in some of my game development classes, as well as my digital audio class where my partner and I “re-did” the audio for a scene from RWBY by using free sound effects we found online.

In my audio for games class, the follow up to the digital audio class I took last semester, we learned about foley art and had to create sound effects from scratch for a game the professor provided us with.  I’ve uploading all of the sound effects I was responsible for making onto freesounds.org under the attribution license . This was one of 3 options provided on the site, the other two being no copyright or non-commercial attribute.  I decided to go with the attribution one, since it was the least restrictive that would still require that people cite where they got the sound.

The sounds are “awaiting moderation” right now since every sound effect must be approved before it can be shown on the site, but once they are moderated they should appear under my profile I believe

The 6 sounds I’ve uploaded so far are 3 sound effects and 3 voice samples. Well, one of them is really a mix of both I suppose?  Anyway, they are

  • A zapping sound I made with a pill bottle
  • A bubbling sound effect I made by blowing water into a cup and adding reverb
  • A motory kind of sound that…I don’t really remember how I made, but it sounded cool so I kept it in case I ever needed it
  • Me saying “Uh, were we supposed to do that?”
  • Me and my fiance clapping and cheering for a comical audience sound effect
  • Me saying “Captain, we need to escape!”

I also noticed that the site has a “sample request” forum where people post asking for others to provide them with specific audio samples, and I volunteered to help out by recording some dialog for a game.  I’m not sure if they will end up using it or not, but it’d be cool if they did. If they don’t I will probably just upload my failed recordings to the website 😛

I want to record more sound effects and audio samples but I’m tired and leaving for Boston tomorrow morning, so that will be something I do in the near future and I’ll make another post with links to the new material. I don’t think I’m particularly good at audio stuff, but it’s fun and if I can post the things I make online for others to use then maybe it will be a productive hobby even if I’m not very successful at it.

Possible music source for raindrop.py

I think ultimately our plan is going to be for users to be able to customize their music through a site made with flask, maybe even being able to upload their own files or point to songs found online somewhere.  But I’d like to include some default tracks with the project as well.

If citruspi is okay with it, I was thinking of using some of the music created by composer Matti Paalanen. I’ve been using tracks of his for most of the games I’ve made while at RIT, since he has several albums licensed under Creative Commons and they make very good ambient bgm.

My thought process right now is that there would be a track for each type of weather

  • Sunny
  • Snowy
  • Rainy
  • Stormy
  • Cloudy
  • Windy

I’d like to go with this rather than just the current temperature, but I’ll have to take a look at the weather API and what kind of info can be sent with it. I also noticed that the free version allows up to 500 API calls per day so citruspi and I will need to figure out how often we’ll want to check the weather. I imagine that 500 calls will be sufficient though 🙂

Hack Proposal #2 raindrop.py

 

  1. Title: raindrop.py
  2. Description: A Raspberry Pi application that plays ambient audio/music (through HDMI to a tv or whatnot) based on the current weather. The goal being to sonify the weather data in a pleasant way.  That way you could be inside reading but know what the weather is like outside. It will be written with Python and Flask.
  3. Packages: https://wiki.python.org/moin/Audio I’m going to try to use some of the built-in modules mentioned here.  I’d like to avoid having “outside” dependencies on this project, considering how problematic setting up pyaudio/soundanalyse was last time.
  4. Upstream Distribution Repository: PyPi
  5. Open Hardware Needed: Nothing new, I will hook it up to a TV with HDMI for audio
  6. Team Members: Fangy (lle6138@gmail.com)
  7. Mentors: ryansb for Python and Flask, my fiance for web api stuff
  8. Project Milestones: 1. Retrieve current weather info from Weather.com for the Pi’s location. 2. Make different audio based on the data. 3. Make relevant and pleasant sounding audio based on the data, perhaps playing audio tracks. 4.  Allow the user to change settings and perhaps customize the audio tracks from a Flask web app.
  9. Proposed License: AGPL
  10. Motivation: I like the idea of having background music, and I was introduced to the concept of sonification last summer. Also, my fiance and I are admittedly homebodies, so there have been occasions where its halfway through the day and we had no idea what it was like outside. Something like this would give weather info in a very subtle way.

Project Milestones:

Week 1 (This week): My proposal is hopefully accepted! Any interested team members join!

Week 2 (Next week): Development starts, get web scraping working and rudimentary audio cues (i.e. beeps or something)

Week 3: Development continues, make the sonification pleasant (i.e. playing music based on weather)

Week 4: Testing, extra documentation if needed

Week 5: Packaging, and release.  This will also involve posting a blog update and maybe posting information about the application on relevant forums/mediums.

RocPy and a BarkTracker Postmortem

Yesterday I attended what I think was my…4th RocPy meeting? The group of students coming from RIT was a lot smaller this time, most likely due to people attending GDC.

For the first half of the meeting, Dave gave a presentation/demonstration of list comprehensions in Python.  At first I was able to follow along and understand the Python we were writing, but towards the later half the statements began getting kind of long.  It made me wonder if it was worth the cost in readability.  But the issue I was having may simply be because I am more of a python novice.

The second half of the meeting consisted of lightning talks.  Decause gave several on things such as the Civic App Challenge and the new FOSS minor at RIT. Threebean showed us some ridiculous python magic that can be performed with the reverse function in Python.  Also, a pitch was given for Startup Weekend Rochester.

Lastly, Joe and I gave a quick postmortem on our BarkTracker project which can be seen here: Barktracker Postmortem

PyPi

On Friday, Joe and I put BarkTracker up on pypi.python.org. We had covered in class how to register the name and upload the tar by command line, but we ran into a couple of unexpected issues during the process.

First, we tried using “install_requires” in our setup.py file.  We learned that this would help resolve dependencies that BarkTracker has and figured it would be beneficial.  When we tried uploading the project though, we were informed by PyPi that “install_requires” was an unknown distribution option.  Googling led us to this Stack Overflow post where we found Yauhen Yakimovich’s solution which fixed our problem.

Second, we registered the BarkTracker page with no problem, but when it prompted us to save our pypi login info we declined since we were using Joe’s info on my computer.  Then, when we tried to upload the project from command line, it yelled at us for not being logged in.  We were not told HOW to log back in though, which led to some confusion on our part.  We hopped into the foss-rit IRC channel and citruspi taught us how to create a .pypirc file that would store our pypi credentials.

Here are a couple of facts we learned in the process:

  • Any file that starts with a period is hidden.
  • The .pypirc file needs to be in your home directory
  • To figure out what your computer thinks is your home directory, you can type $HOME in a terminal.  HOME is an environment variable.
  • You can change where HOME points to, or you can just move your file to where HOME already points.  I’d recommend doing that, it’s what we did and it worked fine

After we got a .pypirc file in our home directory, uploading worked.  It was at this point we noticed something interesting, our BarkTracker page’s download counter kept increasing.  We asked in IRC and learned from threebean that this is because there are mirrors that download your projects.

Community contributions and RocWiki

Every five weeks we’re supposed to complete a community contribution. Our first one is a contribution of our choice and I decided to make some changes/new pages on rocwiki.

My first change was on the Tora-Con page.  I added a few line about the different events that occurred during Tora-Con. Afterward I refreshed the page and there was way more text than I had added..I checked the page history and it turns out the Tora-Con chair for this year edited the page at the same time I did.  It was a really freak occurrence considering the page hadn’t been edited in several weeks.  The second editor had left out some information on the volunteering aspect of the convention so I added a paragraph about that process.

Since my Tora-Con changes ended up being mostly unnecessary I decided to check whether or not other RIT events/clubs had pages and I discovered that the student organization I participate in the most, the Society of Software Engineers, did not have a page. I decided to create one and fill it out. My username on the rocwiki is, unsurprisingly, f4ngy.

I also added one line on the page for the Japanese restaurant Shiki. It is one of my favorite restaurants in Rochester but it can get pretty busy at night so I added a line about that and suggested that people make reservations.

Fangy VS Pidora

In my last post, you may recall that things were going very well.  We were working on our dev machines and experiencing very few problems.  Naively I suppose, we expected setup to be just as problem-free on the Raspberry Pi.  I had installed Pidora on the Pi previously and I figured we were in good shape for just installing git and cloning our project.

I was wrong. For starters, installations took much longer than they did on my regular machine.  I probably should have expected that, but I didn’t think it’d be as bad as it was.  NumPy, as an example, took around an hour.  I’ll discuss that more later on.

Second, whenever I tried to use pypi or git I got errors about SSL. This confused me and googling didn’t find any solutions that worked for me.  Now, at this point I had realized that my Raspberry Pi’s clock was off but…so what?  After struggling for a while my fiance told me that my clock being wrong was actually a problem.  My Raspberry Pi for some reason thought it was in the future and SSL doesn’t like that.  TIL.

Once I used ntpd to fix my clock, git and pypi decided they liked me again! I cloned our BarkTracker repo and started pip installing the modules we are using. The main module we want to use is called SoundAnalyse and that installed without problem, but it has dependencies that also need to be installed.  These being NumPy and PyAudio.

I attempted to install both at home but ran into problems each time.  NumPy would take forever and spit out a ton of errors that had me baffled, and PyAudio would also fail to install although the error messages were easier for me to understand.

I knew with PyAudio that my issue had to do with PortAudio, a dependency.  I had installed PortAudio but StackOverflow informed me that I needed portaudio-dev.  More specifically, I needed to apt-get install portaudio-dev.  I knew that apt-get was like “yum” for a different distribution so I tried doing the same thing, just with yum.  It couldn’t find anything.  I was able to install just “PortAudio” but it seemed I specifically needed a development version of it.

After a while, I came to the conclusion that clearly, Pidora was my problem. If I had just chosen Raspbien instead, I was sure everything would have worked fine.  “Curse me for picking the evil Pidora,” I thought to myself. In frustration, I sought out my professor for guidance on how to switch operating systems.  He told me that I could change the operating system but that him and some of the other FOSSboxers were willing to look at the errors I was getting and see if they had any advice. I was doubtful of whether or not we would be able to get things working, but I agreed to show them the errors.

One of the errors, it turns out, was pretty simple to fix.  PyAudio needed portaudio-devel.  Some other distributions call the package “portaudio-dev”, but on Fedora it is devel instead of dev. Once I had the development version of portaudio, PyAudio installed quickly and without problem. So this error was due to my ignorance of the fact that different distributions use different names for packages.

The problem with NumPy, on the other hand, is a bit more complicated. It turns out that what the oodles of error messages indicated was that the Pi ran out of RAM while compiling NumPy.  We had to go in using htop and kill a bunch of processes. We even went as far as to turn off the GUI. (If I remember correctly, I think the instructions were similar to what people suggest here)

So yeah, that was our adventure in setting up our Raspberry Pi!

VIPs

Bark Tracker’s progress

Yesterday I met with Joe to start programming.  We came up with several initial tasks:

  1. Create the project structure, we used Oddshocks project Pythong for this
  2. Push these files to the git repo
  3. Create BarkTracker.py and use SoundAnalyse with the USB mic we purchased

Most of this went pretty smoothly! I even discovered that you can get pypi working on Macs, which was very convenient. We didn’t run into any problems until we got to the point where we needed to install one of SoundAnalyse’s dependencies, PyAudio. We initially tried using pip install since we found this page on pypi for the project. After running into several problems, which can be mostly explained in this issue for the pip repo on github, I decided to just use a .dmg to install PyAudio and it worked perfectly.

Luckily for us, SoundAnalyse has a sample script to print out loudness and pitch on their google code page. We tried running it after plugging our USB mic into my computer and….got a couple errors.  Okay, that’s to be expected! We didn’t know the exact values our mic setup code needed so we had to play around with it a bit to get it to work. But once we HAD found the correct values, the script worked like a charm! Which means we are in good shape to start writing our own script that uses SoundAnalyse!

Before we get ahead of ourselves though, we decided it would be best to test the code out on the Raspberry Pi with the microphone, which is something we’re going to attempt today.  If that goes well though, we will be in great shape.

 

RocPy and Lightning

On Tuesday February 18th, our advanced FOSS class made our first visit to RocPy. Joe and I had both been there before, since we were in the HFOSS course, but it was still our first meeting in several months.

The format of this month’s meeting was 1/2 an intro to Python and 1/2 lightning talks.  The intro to python was (I suspect) a good start for the members of our class who are new to the language, and for those of us with prior experience, I believe it was still a good refresher. It was during this talk that I also attempted to use Python on my new dev machine, a MacBook.  I was happy to find that it was much simpler than using Python on my Windows laptop ^.^

During the second half, there were lightning talks on several things.  Some personal projects, a hackathon being held at RIT, and some of the projects we are working on for our advanced FOSS class. Joe and I decided to present on our new project, Bark Tracker.  We were happy to find that the audience responded positively and saw value in our concept, and several people even had ideas on modules we could use as well as suggestions for new features.

Overall, I found the meeting pretty beneficial and I think it helped us feel more confident about our project.

Hack Proposal #1!

  1. Title: Bark Tracker
  2. Description: Bark Tracker will be a Python application that runs on the Raspberry Pi while you are at work or at school.  It will have a USB microphone attached and will monitor whether or not your dogs are barking. It will compile this information and could either save it for viewing when you get home, or perhaps send the information to you as an e-mail if the Pi is connected to the internet.
  3. Packages: We will definitely want smtplib for sending e-mail notifications. Maybe the “e-mail” package as well. For audio input and analysis, I found a third party package called “SoundAnalyse” that I think looks promising. We will also need the packages that SoundAnalyse has dependencies for.
  4. Upstream Distribution Repository: This will be a new repository hosted on GitHub, if this project is approved. We can also put it on PyPi since it’s a Python project.
  5. Open Hardware Needed: The Raspberry Pi (including it’s case, SD card, and power cables), a USB microphone
  6. Team Members: Fangy (lle6138@gmail.com) and ArcticSphinx (joeprezioso@comcast.net)
  7. Mentors: ryansb is going to be our Python mentor! We can contact him via the foss-rit irc room since he is there a lot! He can also be contacted through e-mail at sb@ryansb.com.  He also understands licenses
  8. Project Milestones: See below
  9. Proposed License: GPL
  10. Motivation: When I adopted my dog last year, one concern we had was whether or not she was barking or being pesky while we were at work/school. We debated leaving a computer on all day and recording but that would waste electricity and it’d be a pain to look through a long audio file.  When I first learned what the Raspberry Pi was (2 weeks ago) the thing that stuck out to me the most was that it is a computer that can be left on without requiring much power.  I wanted to create an application that would use this advantage.  I think that something that can be left on all the time for a low cost will be good for a task like monitoring whether or not there’s excessive noise in your home.

Project Milestones:

Week 1 (This week): My proposal is hopefully accepted! Any interested team members join!

Week 2 (Next week): Development starts, focusing on getting information from the microphone and deciding whether or not it qualifies as a “bark”

Week 3: Development continues, we decide when a notification should be sent to the pet owner and write the code to send the e-mail. We also record the bark information in a text document.

Week 4: Testing, extra documentation if needed

Week 5: Packaging, and release.  This will also involve posting a blog update and maybe posting information about the application on relevant forums/mediums. If it’s polished enough I think it’d be cool if I could get it linked here http://www.raspberrypi.org/archives/tag/dogs

If the project ends up being easier than expected there are a few features that I’d like to work on in addition:

– Analyzing pitch to see if the noise actually sounds like your dog

– Account for there being multiple dogs and being able to determine which one is barking (I suspect that this would be too difficult to accomplish in two weeks)

Related Links:

http://stackoverflow.com/questions/6270782/sending-email-with-python e-mail information

http://www.raspberrypi.org/archives/4274 another barking-related project

https://tldrlegal.com/ AWESOME site that explains licenses to you! Great for checking if different libraries are compatible

Of pies and raspberries.

In the advanced FOSS class at RIT we’re going to be working with Raspberry Pi’s.  Until last week, I had heard the name before but I had never really looked into them.  It turns out that they are little tiny computers…about the size of a smart phone. We were given brand new kits full of a bunch of things I didn’t understand (I sort of do now though, we went over the components in class) and we put the Pi’s together.

First thing I learned, the little cases they make for the Pi’s? They are near impossible to take off!! I had to take mine off to re-arrange the PI and it was really difficult.  I feel like those cases are meant to stay on permanently.  So a word to the wise- don’t put the PI in the case until you’re sure it’s good to go!

The next task was actually using the Raspberry Pi.  The kit came with an HDMI cable that we used to plug into one of the school’s monitors, and a power cable.  I was able to turn the Pi on but quickly realized that I’d need to plug a mouse and a keyboard in using USB.  The school’s mice and keyboard cables are kinda tied up under the tables, so connecting them wasn’t very realistic.

Our professors gave us two good suggestions on dealing with this:

1.  We could bring in our own mice and keyboards to use with the Pi

or

2. We could leave the Raspberry Pi plugged in at home and remote into it.

I like the second option because I feel like it’ll be safer for the Pi and it means I don’t have to carry extra hardware around 😛

I’m still not entirely sure how to set it up for remoting in though, and I’m hoping some of the more experienced classmates will be able to help us noobs out with that.

The adventure of using Fast-Export on Windows.

During the school year I work part-time with several other computing students for a software engineering professor.  For our first week back, one of the tasks we were given was the take a mercurial repository that was hosted on Google Code and convert it to Git and host it on GitHub.  It was important to retain history as there had been many contributors and almost a thousand commits.

Googling around, I kept seeing one tool being mentioned frequently: Fast-Export.  I found this blog post that explained how to use it to convert a repo and although it was written with a Linux based OS in mind, I thought it’d be simple to do the same tasks in Windows. I quickly began running into problems though.  While I had TortoiseHG installed as well as a version of Python and Git, I began getting errors related to Python and Mercurial not being found.  Googling led me to this blog post where someone successfully used the tool on Windows. It seemed that I had to install a specific version of Python and “Mercurial for Python” which I guess was not installed with TortoiseHG.  I followed the steps on the blog, and when I tried to run the script it seemed that there were errors popping up in the code.

At this point I was frustrated, and I came upon a blog post of someone else who was frustrated…although significantly more so than I. I’ll be honest, the post made me laugh and I felt like I could relate a bit.  But at the same time I knew that the tool must actually work, because tons of people were praising it and recommending it. So I continued my hunt which led me finally to this Stack Overflow post about using Fast-Export on Windows.  The top rated comment said to install Cygwin and I was hesitant. I had been following the commands people said to use online, just performing the actions using a GUI. In theory, switching to Cygwin shouldn’t change anything.  I decided to give it a shot though.  I uninstalled Python and Mercurial since the post said I should get them with Cygwin, and then I followed the instructions for downloading.

Lo and behold, after downloading Cygwin with Python and Mercurial, and running the Fast-Export tool, I had a successfully converted repository. The only issue being that the author information is a bit off since some of the developers did not use the same e-mail that they are now using on GitHub, but a helpful member of the rit-foss irc channel on freenode directed me to this which explains how to retroactively update the author information.

There are a couple of things I took away from this experience. First of all, I believe the problems I was experiencing were likely due to not having the same exact setup of Python and Mercurial that developers using Linux distributions had.  I think Cygwin fixed this some how.

I think Fast-Export and other open source tools are really useful, but I also think that many of them are developed without much consideration of other operating systems, like Windows.  Which is fair, if someone is doing something out of the goodness of their heart no one has the right to say “Screw you, you have to make this work for me too!”.  But I do feel like it’d be beneficial to start including more instructions of how to use these tools with Windows, or how developers using Windows can work on the project.  I hope that does not come off as entitled, but I really think it’d help a lot of people who find operating systems to be a barrier of entry for open source.

Anyway, that is why I wanted to document my experience.  I hope this blog post can help anyone else who is having trouble getting this tool to work for them.

Playtesting

Our HFOSS professor presented our class with an interesting opportunity – he had spoken with a school that was willing to let us playtest our XO games and activities with students around the same ages as our target audience.

There were two days available for playtesting and we originally planned on having members attend both, but the plans fell through when we realized our project wasn’t going as well as we had planned. We decided to not attend the first day of playtesting and instead focused on development.  By the second playtest session we felt that we had enough to show to the kids and two of our members, Zach and Joe, were available to show off the activity.

Our plan was to have the kids play Lemonade Stand or SkyTime for a short period, just long enough to get a badge or two, and then have them open Sash and interact with their badges. This was a great idea, but was also part of our undoing.  We, through no fault but our own, did not verify that SkyTime and Lemonade Stand worked on the XO after we installed them.  We had previously put them on a machine and assumed it would go fine.

As a result, the games did in fact not work. We’re not sure where we went wrong with them, but they crashed when the kids tried to run them and so there were no badges we could show in Sash or demonstrate how pushing would work.

This was disappointing and I think we learned a lesson from it (test your game plan before meeting up with the testers!!).  Luckily, Zach and Joe improvised and showed the kids some of the other activities, talked to them about achievements in general and what the kids thought about them, and asked what they thought about something like Sash.

Some of the kids said they didn’t really like playing video games, which raised an issue to our attention- we had previously been thinking of Sash in terms of rewarded game progress but maybe other sugar activities could implement badges as well. It’s definitely something to consider in the future.  We should reach out to more people than just game developers.

One student said that he wanted to show badges off on a website, which is great because that’s essentially what Open Badges does. But he also wanted to be able to play the games online, rather than just on the XO. It would be nice if XO games weren’t limited to just one hardware, but I understand why they are.

The children mentioned that they think people should receive notifications when they receive a badge in a game, with a sound and a pop up.  Since we haven’t worked on the Sugar Badges code much, I’m not sure if this is already a feature or not but I think it isn’t. So that’s something we might want to create a ticket for on the Sugar Badges repo.

The kids were familiar with achievements and badges and they liked the idea of them, but I wonder how true that is of other cultures.  Not every child will have had an Xbox or been in scouts before. I worry about whether or not the metaphor will be as accessible.

Problems adjusting

My team for HFOSS has been struggling with getting the Sash project to push to Open Badges, and I think part of the reason why might be because a lot of us are new to working on open source. I’ve found that for me personally, the largest issue I’ve been having is not finding enough documentation on the different tools/libraries/etc that we’ve looked at.  When you work on a project for most classes you have very specific requirements and you’re usually using languages/tools that are very well documented.

We were able to get some leads on the project by talking to developers from Mozilla’s Open Badges teams on their weekly conference calls, and the big recommendation we got was to use WebKit in order to use Mozilla’s Issuer API. We found a Python wrapper for WebKit called pywebkitgtk that we’ve been attempting to use, but tutorials for it and documentation on how to use it for what we need have been pretty scarce (although we have found a couple). I’ve been trying to write a script that uses pywebkitgtk to work with the issuer api, but it hasn’t been super fruitful.

On top of that, most of us are new to Linux as well so we ended up spending more time on setting up our development environments and whatnot than we probably should have.  Even the other day, I got bogged down with fixing my VM rather than working on the project.  My VM had run out of space and I had to figure out how to fix that before I could continue working.  And then today I tried writing the script on my Windows machine and then trying it out on my Fedora VM, only to have to spend time fixing whitespace/linebreak problems.  Turns out there’s a cool dos2unix command you can run on text files to convert them..it worked on my VM by default so I guess it might be a part of Fedora.

I’m really disappointed at how this project has been going for me. I feel like I’m learning more in this class than I have in most of my others, and yet I’m doing much worse.  And it’s a team project and a project that isn’t solely academic (meaning it would have been actually used outside the classroom) so I feel extra guilty for letting other people down as well.

GitHub and Macs

In one of my other classes we’re doing iOS development.  I’m on a team with two of my friends and we’re developing a game for the iPad.  Wanting to be good software engineers, we decided to use version control and went with Git since it seemed like XCode would work well with it.

Turns out GitHub has a nice little app for Macs.  I installed it and when it asked me for my name and e-mail, I just put my name down.  The e-mail field wasn’t required so I thought, eh, why give out more information? Then I was prompted to log into my GitHub account and upon doing so, I was able to clone our game repo.  I worked on the code for a while, made my commit, and pushed it.  My friends pulled and saw my changes so it seemed like everything worked fine.

Then the next day I went on GitHub to look at our repo, and I noticed I couldn’t find any reference to the repo on my account page.  Usually repos you push to will show up on your profile page as recent activity and repos that you’ve contributed to.  Not this one though! I was confused and went to my friends page and the repo showed up on his.  I clicked on it, and was surprised to see that only two contributors were listed- my two friends.

When I looked at the commit history, my commits were there but they weren’t linked to my GitHub account. It was at this point we realized that it was because I had never given my e-mail address when I first installed the GitHub application.  Because the application needed my GitHub account information to push to the repo, I had assumed my e-mail address wasn’t necessary, but it turns out it was.  I still don’t really understand WHY it was needed, when they had my account authenticated…but at least we solved the mystery.

Enough with the crazy talk!

Who
Evgeny Morozov

What
The Meme Hustler: Tim O’Reilly’s crazy talk

Where
http://hfoss-fossrit.rhcloud.com/static/books/evgenymorozov-thememehustler.html

When
The Baffler, no. 22

The Gist
This article is a critical analysis of Tim O’Reilly’s published works, interviews, and presentations. Morozov argues that O’Reilly manipulates the tech industry (and now politics) for selfish goals.  The article relates to our class since a large portion of it deals with O’Reilly’s role in spreading the use of open source software, and how his motivations differed from those in the Free Software Movement.

The Good

  1. I really like Morozov’s writing style. He has an abrasiveness that reminds me of my favorite author, Harlan Ellison. I’m specifically reminded of one of my favorite quotations by Ellison, “I don’t know how you perceive my mission as a writer, but for me it is not a responsibility to reaffirm your concretized myths and provincial prejudices. It is not my job to lull you with a false sense of the rightness of the universe” I feel like Morozov takes a similar approach to writing.

 

  1. The article was jam-packed with references and links to statements that O’Reilly’s made. It’s clear that Morozov put a lot of time into composing the article and researching O’Reilly. And he linked us to the full excerpts, which allows us to draw our on conclusions- not just from the bits and pieces he quotes.

 

  1. The vast majority of the information in the article was completely new to me. It was a long read, but unlike the previous lit review, I felt like what I got out of it actually correlated to the length.

 

The Bad

  1. Morozov paints O’Reilly’s “spin doctoring” or “crazy talk” in a very bad light, but it seems to me that in some ways a person like him was probably necessary in making open source software more accessible to the public. Even though I might find myself empathizing more with Stallman’s motivations, I’ve found that in my personal life some of the people I’ve met who have been fans of his take things to the extreme (“any software that isn’t open source/free is bad”) and that pushed me away from getting involved in the open source community in the past.  O’Reilly’s non-political marketing of open source would have been more likely to attract me.

 

  1. It struck me as a little odd that someone would put so much time and effort into writing a criticism of another person.  For a while I thought there must have been something personal between Morozov and O’Reilly, to warrant such motivation. This was answered somewhat in the author’s note though. And I appear to have been wrong.

 

  1. I haven’t read through all of the content that Morozov has, and I had honestly never thought about Tim O’Reilly before reading this.  So for me, it’s difficult to agree or disagree with Morozov’s conclusions.

 

The Questions (Most of the questions I had were answered in the Author’s Note..)

  1. Does Morozov know O’Reilly personally? Based on the author’s note, it would seem that they do not know each other personally and have only spoken professionally on a couple of occasions.  But I may be interpreting that wrong.

 

  1. Has O’Reilly commented on the article? Based on the author’s note, O’Reilly wanted to speak with Morozov and address Morozov’s concerns, but Morozov felt that talking to someone who manipulates words would be unfruitful.

 

  1. This is not a question, but a cool link: http://thebaffler.com/blog/2013/04/richard_stallman_responds Stallman read Morozov’s article and posted a response.

 

Your Review

It took me a long time to get through the article, but it was enjoyable to read. I learned quite a bit about O’Reilly and why Morozov finds him so concerning. Morozov’s explanation of O’Reilly’s role in open source kind of built off of what we learned from Weber’s detailing of the beginning of open source. So I feel like my “vision” of what happened expanded a bit.

Final Score
This article has earned 5 thumbs up out of a possible 5! I don’t feel that I’ve personally done enough research to know whether or not I agree with Morozov, but he did a lot of research and made some convincing arguments assuming that none of the excerpts were taken out of context.

BarCamp Roc

This year I attended, and a volunteered at, my first BarCamp event.  I had heard of the event in the past but assumed it would be strictly technical presentations. In reality, BarCamp is an event where people can present on anything they’d like. Most presentations were related to technology, but they didn’t usually require a lot of background knowledge.  There were also some presentations that had nothing to do with coding/computers.

I arrived early in the morning while we were setting up.  We had to put signs out by the parking lot and entrances so that people outside of RIT could find the right building. Inside of the building we set up tables and then a “grid” that served as a schedule for the day.  BarCamp attendees could tape their presentation name into the grid under the time and room they wanted to present in.

Some of the presentations I went to were on:

  • Marketing iOS applications
  • User experience guidelines
  • Creating miniature weapons (I made a crossbow out of popsicle sticks!!)
  • Disconnecting from the internet/screens
  • And lots of lightning talks!

 

Speaking of lightning talks, I gave one! Remy promised our class extra credit if we gave a lightning talk and although I had initially decided not to, I felt comfortable enough after watching other people present.  The BarCamp crowd was very friendly and not as intimidating as I had expected.  So I gave a short presentation on conventions.  I’ve been going to scifi, comic, anime, and gaming conventions since I was in middle school and I figured it’s one area that a bunch of geeky people might be interested in but not necessarily know much about 🙂

All in all,  BarCamp was really fun. If there is another one during spring I would totally volunteer again.

Tracking and milestones

This week our group has had a lot of meetings.  We met Monday to set up our development environment, and then we met up Wednesday to set up/get access to the Sash repository on GitHub.  Then we met today to come up with our tickets and milestones for the next couple of weeks, and that’s what this blog post will be primarily about.

We discovered on Wednesday that we couldn’t add milestones to a repository we weren’t a collaborator on, and we had our professor add us to the list of collaborators for the existing Sash repo. Now we’re able to add milestones, tag issues, and so on!

We tested those features out today when we met up.  We created a rough draft of what our milestones and tickets should be in Google docs and when we were satisfied with them we began transferring them over to GitHub.  I created the issues for each of our tickets, and Rory began creating the milestones and assigning the issues to their respective milestone.

At this point I learned that after you assign an issue to a milestone the issue no longer shows up under the issues tab! You actually have to go to the milestone tab to see the issues.  This was a bit un-intuitive and confusing for me at first.

Here’s a link to the milestone page where you can see the tickets.

We had a bit of difficulty setting dates for our milestones since we’re still not sure how to gauge how long some of the tasks will take, so we decided to set “soft deadlines” for some of them. We also expect that some of our tickets will be broken down into several smaller more specific tickets once we grok the problem more.

 

The second trip to RocPy

Last Tuesday our HFOSS class took our second trip the monthly RocPy meeting.  Unlike the previous time though, where we watched other people give presentations, we were told that we had to create a lightning talk of our own.  The subject would be our XO group projects but, what with it being Rochester’s Python group, we needed to focus at least somewhat on the technical Python aspects of the project.

We started off by introducing the project and the concept of badges as a sort of achievement for kids using the XO’s.  We talked about the previous developers and about how some of them have agreed to be our upstream mentors. Two of these mentors were actually in the room (ThreeBean and DAWacker) and they helped answer some of the questions people had since they were more familiar with the project. Then we discussed where we needed to go with the project (such as pushing to Open Badges) and difficulties we were expecting, which can be seen in the team proposal I posted previously.

Unfortunately, the project was newly assigned and although some of us had taken a look at the code, our understanding of the project was not very deep. As a result, our presentation couldn’t get into the nitty gritty of the programming. We met with DAWacker (and ThreeBean through lucky coincidence) today though and he gave us a rundown of the code, existing issues, and things he recommended we add to the project.  Now I think we have enough understanding to begin coding soon.  So our next presentation at RocPy will be more fun for all the pythonistas 😀

Where there’s smoke there’s fire!

This week I’m attempting to get through a “smoke test” with the XO laptop I was given for this class.  I will be documenting any issues encountered below.

Issues:

  • Activities-18: The light for the microphone does not turn on
  • Activities-20: All samples are there, but the video is very low quality.  Not sure if that’s normal or not?
  • Multiple laptop activities are problematic, will explain below
  • Installing an activity bundle (Sudoku): everyone in our group seemed to experience problems, either they could not get Sudoku to open, or they could get it to open and then it would crash when they pressed anything

 

So above I mentioned that we experienced problems when working with multiple laptops.  Sometimes we could get the shared activities (such as the notes, distance, etc) to work and we’d be able to collaborate on them but then it’d suddenly stop working.  We investigated a bit and noticed that our XO’s would stop seeing each other.  We would look at the neighborhood view and all of the people we friended (so each other) would appear there but not everyone would be shown as online.  This was peculiar because we were all connected to the same network and could use the internet browser successfully.

At one point, my XO could see Joe’s.  Joe’s could see Rory’s.  And then Rory’s could see both Joe and I. Another interesting thing is that we could receive invitations from each other to join activities even if our laptops thought we were offline, but then accepting the invitation would fail after a long “connecting” period.

So for the most part, my XO works fine by itself but when it comes to networking, it experiences problems and it seems that my teammates laptops do as well. This might be a problem due to RIT’s networks though, rather than the laptops.  We have heard from previous students that the RIT networks aren’t a fan of the XO’s.

Team Proposal

Sash Team Proposal

 

List your other team members below

Name

Email

Lindsey Ellis

lle6138@rit.edu

Joseph Prezioso

jxp8159@rit.edu

Zachary Berhmann

zab5156@rit.edu

Rory Glenn

rxg1565@rit.edu

Erik Whalen

edw6640@rit.edu

 

Which project did your team choose?

Sash/Sugar Badges

2-liner description of the project?

Our project is to expand on Sash, a Sugar activity that will allow students to see “badges” or achievements that they’ve earned while playing games on their XO laptops. It will interface with Mozilla’s “Open Badges” project.

What will each team member’s role be?

Lindsey Ellis – Primarily programming, but also anything else I can help with!

Joe Prezioso – Probably also programming, I don’t know. Honestly, I’ll help where I’m needed.

Zachary Berhmann – TBD

Erik Whalen – Badge design, backup on other people’s work

Rory Glenn – Programming/Badge Design/Optimizing/Whatever Needs to be Done

Source Code Repository URL?

https://github.com/FOSSRIT/Sash

Commarch Assessment

Test and bus info derived from : Contributors page on GitHub

Raptor test: There are only 4 listed contributors, so it seems a bit unfair to do this test, but it would appear that if DAWacker was to be hideously mauled by a raptor, it would do the most damage to the project.

Hit by a bus: Well, a bus-related incident would effectively eliminate half the original team, and probably about 4/5 of any exclusive knowledge that said team possessed. The git by a bus report indicated that David Wilson is by far the primary holder of unique knowledge.  As a result, his (theoretical) vehicular demise could be a big blow to the project.  On the other hand, the codebase isn’t very large so it might not be difficult for new developers to understand it.  In our case, Mr. Wilson is still alive and willing to advise us on the project so we are in an excellent position!

Coefficient of Fail (A Super Quick Run-Through)

+50 for no license in the code (unless there hasn’t been a license created because we’re students?)

+5 for no documentation for new users

 

List your upstream Mentor’s below:

Name

email

David Wilson

[private]

Remy DeCausemaker (pending)

[private]

Jess Klein (pending)

[private]

 

How will you communicate with them? (i.e. IRC Channel, Email Addresss, mail lists, issue trackers, etc…)

With David Wilson we will communicate with him on the rit-foss irc channel (DAWacker) as well as in class and through e-mail. With our other upstream mentors we will discuss with them what their preferred form of communications are and contact them in those ways. A mailing list will also be utilized, and the github issue tracker will be available for upstream mentors to comment on.

What are the easy parts?

  • Art

  • Badges exist

  • We have the cooperation of developers at Mozilla

  • We have an existing codebase to work off of so we have a starting point

What are the hard parts?

  • Currently a browser is needed to make badges work

  • Since this will potentially be integrated into Sugar and is being worked on with the cooperation of Mozilla, there are more external entities involved whose goals should be taken into consideration

  • Since there is an existing codebase, we will need to make sure we understand it before we begin programming

How will you overcome both?

By combining our own research with communication with our upstream mentors. We will first clarify what is needed from us by SugarLabs and Mozilla, and then look into how we can implement those goals. When it comes to generic Python problems, we can solve those on our own by using internet resources and talking with other students who are good with Python and the XO laptops.  If we run in to problems regarding the existing codebase, we will consult David Wilson since he is a contributor and a local point of contact.  When it comes to problems related to requirements or interfacing with Open Badges, then we will consult people from SugarLabs and Mozilla.

Milestone 0: Figure out where the project is headed – what will we be implementing?

Milestone 1: Brush up on Python

Milestone 2: Lots and lots of research on the technicalities of the features we plan to implement

Milestone 3: Discussing and solving issues / Begin basic coding dealing with these issues

Milestone 4: Implementing for optimal XO use / implementing new badges

Milestone 5: Finish the coding and test internally to make sure everything works

Milestone 6: User testing

Curriculum

This week we were supposed to write a blog entry about the 4th grade math curriculum in Massachusetts; however, since I’m interested in working on a continuation of the SkyTime project in this class I requested that I read the curriculum for lower grade levels since that game is geared towards younger children.

I found the first reference to clocks and telling time under the second grade section, but I decided to read the kindergarten and first grade sections as well, to have a better understanding of what background the kids might have.

For kindergarten it looks like the emphasis is on the very basics, counting (up to 100) and simple addition and subtraction (adding values that are close together, i.e. 5 and 7). They also teach children about geometry at this point, including 2D and 3D shapes. They also teach kids how to describe the position of objects in comparison to others (above, below, behind, etc).

For the first grade curriculum, students should be using equations when they add or subtract (i.e. writing out 15 – 5 = 10) and they should be able to add and subtract larger differences between numbers. They also start getting more in depth about base 10 during this year, learning about place value. I.e. 25 is two tens and five ones. Measuring sizes and weights and categorizing/ordering objects based on those measurements is another area that is covered.  Last, students start learning how to combine shapes to make new ones and more interestingly (to me) they learn how to divide shapes up into smaller pieces (a quarter, a third, half, etc). I found this piece of the curriculum interesting because people often refer to time in the form of “a quarter after 9″ or “half past 10″.  I’m not sure if this terminology is used in other countries/cultures but if it is, this could be something we explore in a future release of the game.

And then there is the second grade. At this point students learn how to add and subtract up to a hundred. They can solve mathematical word problems rather than just equations. They learn about odd and even numbers and start working on the foundations for multiplication. They also start learning how to tell time and count money at this point.

Goals for telling time are that students can:

  • tell and write time from both digital and analog clocks
  • understand AM and PM
  • tell the difference between seconds, minutes, hours, days, weeks etc and
  • understand how many of one unit of time are in another (i.e. how many seconds are in a minute?)

 

I believe that understanding this curriculum will help me if I work on the SkyTime project.  I think there is potential to meet more of the educational goals described above.  Although I’m also interested in learning more about the audience of SkyTime and what their curricula are like. I’m not sure if it’s a good idea to assume that every student will be at the same level that 2nd grade Massachusetts students will be at, so it’s worthwhile to investigate.

Journey to the center of an open source project

Project Links:

Other communication channels
Reddit: http://www.reddit.com/r/hawkthorne/
Steam Community: http://steamcommunity.com/groups/hawkthorne
Facebook: https://www.facebook.com/projecthawkthorne
Twitter: https://twitter.com/hawkthornegame

Describe software project, its purpose and goals.

Journey to the Center of Hawkthorne is an open source platforming game created using the Love 2D game engine and Lua.  It is based off of a fictional game that was featured in the Digital Estate Planning episode of the TV show Community. Fans of the show wanted to actually play the game and thus, an open source project was born! The many contributors primary goal was to make the game as similar to what was seen in the TV show as possible.

Give brief history of the project. When was the Initial Commit? The latest commit?

The first commit on github was on 5/19/2012 by Kyle Conroy.  In fact, most the initial commits for the first several months were made by that contributor. Starting in July of 2012 though, the project seemed to gain traction and more people  began contributing. The most recent commit on the master branch was 9/26/2013.

Who approves patches? How many people?

We couldn’t find this information on the website or GitHub, so we turned to the irc channel and asked. We were told that for patches to be approved they needed to be accepted by 2 moderatorsThe 10 moderators are listed on the subreddit.  The contribution page also says that patches will be approved within several days if everything is alright, if not they will comment on it to let you know what needs to be changed.

Who has commit access, or has had patches accepted?  How many total?

Anyone can make a pull request, but like we found out above, commits need to be approved by the moderators. As of July 2013, there were over 350 contributors with 49 of those having contributed to the codebase. The project has had 3753 commits as of 9/26/2013. The 301 other contributors who did not commit anything to the codebase are comprised of people who made art and sound assets and posted them on the subreddit / other sites where a a developer then took their work and added it to the repository.

Who has the highest amounts of “Unique Knowledge?”

According to our Git By a Bus report, Kyle Conroy had an astounding amount of unique knowledge, He is the project’s creator and much of the initial commits were only by him. Additionally, he’s one of the only contributors who has been there since the beginning and is still active.The second highest person was Protuhj, although Git By a Bus’ analysis suggested that he only had maybe a tenth of the amount of unique knowledge that Kyle Conroy has.

What is your project’s “Calloway Coefficient of Fail?”

Following the rubric located here we were surprised to find that it actually scored quite well. Not perfect mind you, but only 25 points. The areas where it acquired fail points were the following: not having a mailing list (+10), not having per-file licensing (+10), and we thought the code could have been documented better (+5). According to the Calloway Coefficient of Fail rubric, 25 points means you’re doing okay but could be doing better.

Has there been any turnover in the Core Team? (i.e. has the same top 20% of contributors stayed the same over time? If not, how has it changed?)

Once the project gained traction and more people started working on it, the top 20% of contributors stayed pretty consistent.  The people would change in rank (sometimes one would become more active for a month and move up, while another would only make a few commits and move down) but other than that, it’s stayed the same.

Does the project have a BDFL, or Lead Developer? (BDFL = Benevolent Dictator for Life)

In terms of a lead developer, I’d say yes- Kyle Conroy has been the lead developer for the project’s lifespan. Almost a fourth of the total number of commits were by him.  But I wouldn’t consider him to be a benevolent dictator necessarily, since not all patches have to be approved by him, there are other people who can approve them.

Are the front and back end developers the same people? What is the proportion of each?

People who do front end and back end: Kyle Conroy, NimbusBP1729, jhoff

Front end developers: DaNiwa, didory123

Back end developers: CalebJohn

Additionally, out of the 350 contributors to the project, 300 of them are people who work on things like art assets, sound assets, etc. These people do not usually make commits to the repository, they post their work on the subreddit for someone else to commit.

What have been some of the major bugs/problems/issues that have arisen during development? Who is responsible for quality control and bug repair?

Towards the beginning of development there were occasionally bugs where the game was crashing, although those seem less common now.  They’ve also had issues with collision handling (people falling through floors, or in some cases getting stuck when they shouldn’t). One thing I noticed while looking through bug reports is that playtesters occasionally report the same bug and the developers have been very good about closing duplicate tickets.No one is specifically assigned to bug fixes, and it seems like most of the core contributors are willing to get their hands dirty fixing bugs when they can (Kyle Conroy, DaNiwa, CalebJohn, etc) and ProtuhJ also seems to be big on fixing bugs.

How is the project’s participation trending and why?

It looks like there are about 9 active participants currently, which seems to be a bit of an improvement compared to previous months.  Additionally, in previous months there would be contributors who would make several commits during that month and then they would disappear.  Right now, the people who are making commits have been making commits every couple of months so it seems like they are sticking with the project rather than fixing a couple of things and leaving.  In terms of number of commits, not very many things were committed in August but activity picked up again in September.  Interestingly, Kyle Conroy wasn’t very active in August and he picked up again in September so that may have something to do with it since he is in some ways the lead developer.

In your opinion, does the project pass “The Raptor Test?” (i.e. Would the project survive if the BDFL, or most active contributor were eaten by a Velociraptor?) Why or why not?

I think it’s difficult to say.  It’s true that Kyle Conroy does most of the development and has a huge pool of unique knowledge, but it’s also true that the game’s subreddit has over 12k subscribers.  Additionally, the game is maintained fairly well and there is some documentation. Project management wise, they did very well which is why the project has a reasonably low coefficient of fail.  I think the project would likely go into decline if Kyle Conroy were eaten, but I believe there’s also the chance that some of the 12k fans/followers would try to revive it. Additionally, there would be some active developers left who could step up to the plate if they were so inclined

In your opinion, would the project survive if the core team, or most active 20% of contributors, were hit by a bus? Why or why not?

If all of the top 20% were killed, then I’m afraid the project would be done for.  There’d be almost no one left with significant knowledge of the codebase. There have been 50 contributors to the code and most of them just did a couple bug fixes here or there and then disappeared so I don’t think we could count on them to come back and resume development.

Does the project have an official “on-boarding” process in place? (new contributor guides, quickstarts, communication leads who focus specifically on newbies, etc…)

The project has new contributor guides as well as instructions on getting started for the 3 main operating systems (Windows, OSX, Linux).  There is also an active subreddit and an IRC channel that in our experience tends to have 5~10 people in it at a time.  There does not appear to be someone specifically assigned to helping out newbies, but the other channels of communication make up for that in my opinion.

Does the project have Documentation available? Is it extensive? Does it include code examples?

There are getting started guides for developers.  There is also the Wiki which has a lot of documentation on the design process, and also information for developers on creating levels and adding art assets. There are some code examples, but not a lot.  The code is minimally commented.

If you were going to contribute to this project, but ran into trouble or hit blockers, who would you contact, and how?

I would try the IRC channel first since I prefer synchronous communication channels, and because I also recognized many of the IRC names as people who contributed to the code on GitHub.  If people were non-responsive on the IRC channel, I’d leave that open in the background and then try making a post on the subreddit since that is also frequented by the main code contributors.

Based on these answers, how would you describe the decision making structure/process of this group?  Is it hierarchical, consensus building, ruled by a small group, barely contained chaos, or ruled by a single or pair of individuals?

I’d say that it’s ruled by a small group, which would be the moderators and core developers.  It’s easy for other people to create art and submit it for the project, but ultimately it has to be approved or rejected by the main group of contributors. I have seen art assets/ideas get rejected before on the subreddit.

Is this the kind of structure you would enjoy working in? Why, or why not?

I think if I had a background in Lua, this environment would be enjoyable.  I don’t mind that code needs to be approved by people who are more familiar with the project than myself.  I appreciate the getting started guides and the fact that they included instructions for different operating systems.  Looking at the codebase and the project websites, they seem fairly well organized and that makes the software engineer in me very happy. I also appreciate the fact that they make it easy for non-programmers to get involved through the subreddit, rather than forcing them to use github which, in my opinion, could increase the barrier of entry for non-technical contributors.

Open source projects and bug fixes

Our assignment in HFOSS this week was to find a bug in an open source project and fix it.  At first I was intimidated by this request, until a bug seemingly fell in my lap! I was using a Drupal module for a website and it was spitting error messages out at me! I switched to a non-admin account and it was spitting a warning out at them too! Although it didn’t break the website or anything, having a confusing red message at the top of the page is not very appealing to users.

“What perfect timing!” I thought, “This bug was sent to me by fate!”. I went to the module’s page on Drupal and looked for a way to submit an issue.  And lo and behold! Someone else had already submitted the same issue and nobody had commented on it.  Happily I began to work on the bug. The error message had given me a line number and said that “Only variables should be reference types.” Being new to PHP I decided to consult Google, which led me to this Stack Overflow post and I tried out the suggested fix- creating an intermediary variable.

It worked! I checked the naming scheme and formatting of the rest of the code to make sure that what I wrote matched, and then I added the module to my website.  No error message appeared this time. I was triumphant.

This, however, is where things began to go south.  I knew I had to create a patch file but I didn’t understand how. I found this page on Drupal’s website and realized I needed to clone the repository of the module. So I did, following the instructions on the module’s page.  But when I ran my website again with the code from the repository I noticed something odd, my bug was missing and a new bug had appeared complaining about an undefined variable.  I looked through the code, found the guilty line and fixed it.  Then I thought, well I should probably make an issue for this new bug I found.  I ran a search and discovered that this bug was already fixed… in 2011. This confused me and after some digging around I realized that the master branch was last touched over 2 years ago.

So I tried to clone the development branch, thinking that it would match the code that I had downloaded when I added the module to my website.  This turned out to be wrong though, the development branch seemed to have no bugs at all. It was at this point that I realized that the code I had downloaded originally was the release version and it hadn’t been updated to include all of the bug fixes people have been making in the development version.

I decided to take another look at the issue I found posted about the bug I was working on. The bug had been fixed in development apparently, but nobody closed the ticket or told the person who posted it.  I decided to zip up the code that I had worked on, which was the release version of the module with the added code to fix this one bug.  I attached my code to a comment and told the person that created the issue that it didn’t seem to exist in the development any more, but if they didn’t want to upgrade completely they could use the code I posted.

So there you have it! My first attempt to make a patch wasn’t, at face value, successful. On the other hand though I learned several important things:

  1. Just because there is an open ticket for a bug and the bug appears in the release version does not mean that it hasn’t been fixed by someone in the development version
  2. Sometimes master branches are not used any more? I’m still confused by this to be honest. I don’t know why the master branch and the development branch were so out of sync
  3. Release versions of code aren’t necessarily updated every time a bug is fixed
  4. I learned how to checkout a “tag” that was on a branch.  This made my code resemble the release version (7.x-2.xbeta5, so I think it’s similiar to checking out a specific revision?
  5. During my attempts to match the coding style of the module, I figured out how to show whitespace and tabs in notepad++ which is pretty helpful when you want to match coding standards (view->show symbol->whitespace)

 

In the future when I find a bug I am going to verify that it still exists in the most recent version of the development branch and I will look at the repository viewer first to figure out what’s going on with the different branches.

Checking out RocPy for the first time!

Instead of having a regular HFOSS class this Monday, we arranged carpools to visit the monthly RocPy meeting at the University of Rochester. For most of us (myself included) it was our first time attending RocPy and we created Meetup.com accounts to RSVP to the event.

I found RocPy to be a friendly environment of people who are genuinely excited about the Python language. There were two main talks scheduled and then we also listened to two lightning talks.

The two main talks were on descriptors and using Python with databases.  I haven’t used Python in several years so I’m sure some of the content went over my head but I was able to follow along with the main concepts.  The descriptors presentation was the first we listened to and it seemed to me that the reasoning for using descriptors is to try and encapsulate properties more easily.  If I understood the presentation correctly, you cannot declare properties as private in Python and this is a way of getting around that.  I’m not sure that I did understand it correctly though so I guess I will have this question cleared up soon once we start programming.

The database code in Python looked pretty familiar to me.  I did a little bit of code at a previous internship where I accessed a database using C# and it seemed to follow the same steps in Python, although the syntax was different.

Speaking of syntax…looking at Python code for the first time in 4 years made me anxious! I am used to languages where I declare a variable as a specific type and that type cannot change.  In Python this does not appear to be the case! I found this Stack Overflow thread that explains how types work in Python. Apparently Python is considered a dynamic strongly typed language.  Whereas most languages I’m used would be considered static strongly typed languages I suppose?

Anyway, it makes me uncomfortable! I look at Python code and it feels wrong to me. I want to add typenames everywhere and put semicolons at the ends of all the lines. Right now I actually find Python code a bit difficult to follow! I get confused about what types of data should be sent to functions and so on.

I hope I’ll be able to adjust.  Maybe by the time we go to the next RocPy I will have a new mindset.

First quiz!

What are the titles of each Pillar?

  1. Open Exchange

  2. Participation

  3. Meritocracy

  4. Community

  5. Rapid Prototyping

What are the titles of each General Principle?

  1. Make it interesting and make sure it happens

  2. Scratch an itch

  3. Minimize how many times you have to reinvent the wheel

  4. Solve problems through parallel processes whenever possible

  5. Leverage the law of large numbers

  6. Document what you do

  7. Release early and release often

  8. Talk a lot

What are the similarities between Weber’s eight principles, and the five pillars?

Community ~ Leverage the law of large numbers

Community ~ Solve problems through parallel processes whenever possible

Rapid Prototyping ~ Release early and release often

Participation / open exchange / community ~ Talk a lot

Open Exchange ~ Minimize how many times you have to reinvent the wheel

What are the differences?

The first, second, and sixth general principles that Weber described do not, at first glance, seem to have an equivalent in the five pillars. At a second glance though, it would seem that the first and second principles could fall under the umbrella of participation since they are related to generating more participation by making your project appealing.

The sixth principle could fall under the pillar of open exchange.  My reasoning for this is that when you document code you are taking knowledge that you as the coder have, and making it available for everyone else.

Bonus: Who’s “keen analysis” did Weber “Draw Heavily” upon?”

Eric Raymond

Double-Bonus: What was the title of this “keen analysis.”

The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary

Triple-Bonus: Where can this keen analysis be found?

http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ Raymond’s website.  There’s also a physical copy in the RIT library.

Original the Quiz. Do Not Steal.

In which I review things

Who
Steven Weber

What
The Success of Open Source, chapter 3 “What Is Open Source and How Does It Work?”

Where
http://hfoss-fossrit.rhcloud.com/static/books/Weber-SuccessofOpenSource-Chap3.pdf

When
October 31st, 2005

The Gist
This chapter explains what open source software is and gives a bit of history about its origins.  It discusses who participates in the community as well as their motivations for doing so, backed by existing research.  It also details the processes involved when developing open source software.

The Good

  1. The author makes a lot of comparisons to other professions (surgeons, poets, car manufacturers), so if you are unfamiliar with programming and open source those might be illuminating for you
  2. Several important figures/projects are used as examples.  I think if you’re interested in becoming involved in open source it’s probably a good idea to know these people/projects because they will likely be referenced semi-frequently
  3. I appreciated the point about how the volunteer-nature of open source software might result in less bugs or a higher quality of software.  When people are working on something they enjoy and want to do, it makes sense to me that they would be more careful and do better work than when it’s something they are doing unwillingly.

 

The Bad

  1. I believe that if you have a technical background then a lot of the explanations in the reading might not be needed. I felt that 40 pages weren’t necessary for the amount of new information I got from the reading, it could have been more succinct for a technical audience.
  2. The book is 8 years old at this point.  I’m sure most of the reading still stands, but when dealing with technology things can change very quickly. I don’t know if any new advancements have affected the processes of open source software development, or perhaps changed who works on open source software.
  3. The author drew some conclusions based on research made using contributors e-mail addresses.  It was pointed out that a small portion of contributors used .edu accounts, which they suggested was an indication that not many students/professors work on open source. I feel like that ignores the possibility that people are not using their official e-mail addresses, perhaps for privacy reasons.

 

The Questions

  1. Weber mentions that if contributors disagree strongly about a change, there’s the possibility of someone forking the project and making their own version of it.  I’d be interested in knowing about any notable examples, and the results of such a schism.
  2. At one point in the chapter it’s pointed out that open source projects often involve contributors from a wide variety of countries.  Later, the subject of licensing comes up.  I’m curious about how these licenses hold up when contributors are from countries outside of the U.S. Do all of the countries acknowledge them?
  3. According to the reading, there are usually lots of contributors but several will do a majority of the work. (following the 80-20 rule) If someone like Torvald were to suddenly disappear, how would the project be impacted? I’m wondering how much impact one persons absence would have, especially if that person is important in the hierarchy of reviewers/responsibilities.

 

Your Review
I think this is a worthwhile read for people who are new to open source.  For people who are already familiar with programming and open source, they might want to look for something more concise or something that’s geared more towards readers with a background in technology. I really enjoyed reading about Linux and Torvald, since I’m a Windows user and have only worked at companies that used Windows. I feel like the history of Linux could be important to know if you’re going to work in open source. The chapter also (at least for me) raised new questions that could help guide you in finding out more information about open source.

Final Score
This chapter has earned 3 thumbs up out of a possible 5! How did I get that many thumbs? Science.

First flight

For my first blog post I’m going to explain what I did for my first assignment in my Humanitarian Free/Open Source Software class.  The first task was to install an irc client and then register my nickname.  Initially I installed mirc but that popped up a message saying I was only using the evaluation version and had 30 days left.  That sounded bothersome so I tried a client recommended by another student, XChat.  

XChat was easy to install and configure. I connected to irc.freenode.net and joined the #rit-foss channel. Then I was able to register my nickname using the directions here http://freenode.net/faq.shtml#userregistration.

The next task was to create a blog and make an introductory post (which you are now reading!). I have had a bad history of creating blogs and then never posting in them so hopefully this can be a kick in the pants for me.

Last, I needed to remember my username/password for github and clone the repository for our course. Then I added a YAML file with some basic info about me and pushed it as well as creating a pull request.