Wednesday, December 17, 2014

Final Stretch Hackathon

Last Week I got the chance to attend a hackathon on my December 10.  In honor of the last day of classes and in order to give students a chance to work on whatever projects they have, study for whatever exams they have, or just hang out at the awesome RIT Magic Center, MAGIC hosted a hackathon.  Coincidentally, this also happened to be the day of my 21st Birthday!

Needless to say, after I went out and purchased my first legally bought beers and stored them in my fridge, I invited my friends Alan(github.com/AlanLeeson) and Jordan(djz4086@rit.edu) to attend the Home Stretch Hackathon with me.  Although they were reluctant at first, I won them over with promises of free food, and we were not let down when we were able to grab free pizza and soda, as well as Twizzlers for Alan.  Unfortunately, because I had a couple of things to do earlier in the day, I was only able to make it for about an hour or so of the hackathon.  I was still extremely glad that I attended though, because I wasn't sure if it would still be going on by the time we got there at about 7:30.

Although I didn't get to talk to my professor Decause(github.com/decause) because he was helping another student, ClumsyCat(github.com/matthewolson), from my FOSS class with what I believe was an XO Project, I was happy to spend some time with my friends, while still collectively working on our own assignments.  Personally, I began working on my Rich Media Final Project, and although I was technically not allowed to assist my friend Alan with his Rich Media project, we were able to look over some class notes to study for our final exams.  Whilst we worked on Rich Media, my friend Jordan worked on his Clean Snowmobile Team tasks, which to my knowledge involved working with a complex engine on AutoCad(http://www.autodesk.com/products/autocad/overview).

As I said earlier, I was only able to attend the hackathon for a bit more than an hour, but I still cannot express how much I enjoy attending the hackathons at RIT when I am able.  The Magic Center is aptly named and with the fireplaces being projected on some of the 9 projectors, the music playing, the free food, and the socialization, I really enjoyed myself while still being productive.  I highly recommend other students get involved in activities like these because as I said to my friend, studying is what I was going to be doing anyway, so I minus well go do it somewhere where I could actually enjoy myself, and be around people who could potentially help me or at least talk with me.

I wish I could link to the game starring my HFOSS professor that believe was projecting on one of the screens at the hackathon, but I can't remember the URL off the top of my head.  Regardless, here's an awesome website that he stars in: http://decau.se/

Tuesday, December 16, 2014

Final PlayTest!

About a week ago, I participated in a play test for my HFOSS group's game "Matter"(https://github.com/MrNex/Matter.py).  Similar to the play test we conducted several weeks ago before Thanksgiving, we traveled again to Allendale Columbia school(http://allendalecolumbia.org/) and handed over our games to a class of 4th graders to try out.

This time, our game was more complete than our first play test.  Unfortunately, when we tested all of the new changes on the XO, we found that the game lagged to the point that it was unplayable.  This was most likely due to the addition of a transparent background being drawn over already existent dark backgrounds.  To make sure that we had something at least playable, I reverted to one of our earlier copies of the game and quickly added the implementation of my score counter code.

Our game again involved a block of matter that the player could change the state of based on how quickly they moved the mouse.  The matter would rise if the player moved the mouse quickly, and it would fall if they stopped moving the mouse.  For this play test, we fixed some bugs that the 4th graders and ourselves caught last time, and as I said, I added code to keep score.

The students once again really seemed to enjoy our game which was really great.  Another thing that was super awesome this time, was that 2 other groups also had playable prototypes for their projects.  One of these 2 groups' games involved producing rectangles of certain perimeters and areas to "create pen's for puppies".  The other game reminded me a bit of Pac-Man, and involved getting the player's character to only eat right angles.  As you can probably tell, all of our games were meant to be educational.

The students noted a few things that they wanted to see changed.  One student noticed that there was a bug where the block would get hooked on an obstacle randomly, which we have since fixed.  Another student thought that the score did not count the first obstacle if you pass it, but we figured out that he must have got confused because we could not replicate the problem.  Students thought our game reminded them of "Flappy Bird".  Our game seemed to be quite addicting as students were all flocking around our laptops to try and get the high score.  Amazingly, one kid actually got his score all the way up to 90!

I was very pleased with the feedback we got from this play test and it was a great feeling hearing a handful of students say that our game was their favorite.  It was also nice to see again that so many students were interested in what we do and how we make games.  A lot of the students also continued to say that they wanted to be programmers, which was pleasing to see at such a young age.

Sunday, December 14, 2014

Weekly Blog 15

This was my last week of classes.  In my GDD class, we had a final play test and were told to go back and put the finishing touches on our games.  On Friday, we handed in our finalized products for everyone to play.  My personal favorite game was one called "Jump the Gun" where players can shoot a projectile and teleport around using it.  This was cool because it was made in Unity and it fully utilized network play.  Our game did pretty well in terms of reception as well.  We made a fully playable level showcasing all of the concepts of our game and people actually wanted us to make more levels.  I personally constructed the design document for the game and hosted the powerpoint presentation for our Post Mortem.

My HFOSS class had a final Play Test where I had to revert to an older version of our game because it lagged a bit too heavily on the XO.  The students did however react quite well to the score implementation that I made.  Also, I went to a hackathon that was brought up in my HFOSS class.  To read more about either the XO Project or the Reading Day Hackathon, check out my blog posts on those.

My DSA class finished our Game Engine assignments by adding an Octree implementation.  This was probably one of the hardest assignments I received all year because it is in my opinion a bit difficult of a concept to grasp.  Basically, the program check for collisions only based on what part of the space each object is in.  This is supposed to improve how well the program runs.

My Rich Media class finished up our SQLite lessons, and we received our final projects.  I also had my final exam for this class on Friday.  I think the exam went pretty well, and the final project does not look too bad.  Overall, not a bad last week for me :)

Thursday, December 4, 2014

HFOSS - Quiz 2 Pedagogy

This is a quiz post for my HFOSS class.  The quiz is on what we've learned for our OLPC projects about learning styles and how the OLPC program implements these aspects.

0) Expand the Following Acronyms:

  1. FOSS - Free and Open Source Software
  2. OLPC - One Laptop Per Child
  3. tl;dr - Too Long; Didn't Read
  4. LGTM - Looks Good To Me
  5. RTFM - Read The Fun Manual
  6. PEBKAC - Problems Exist Between Keyboard And Chair
  7. LOL - Laugh Out Loud


1) Define the following instructional theories:

  1. Didactic - Didactic theory states that the teacher has all of the knowledge and students pay attention and passively receive this concrete knowledge given by the teacher.  This requires students to be alert and receptive of all that is imparted to them, and students that do not continuously comprehend the information are often left behind.  This is more based around the teacher.
  2. Dialectic - Dialectic theory (I kind of remember by associating "Dialectic" with "Dialogue") states that the teacher guides the students through discovering and understanding the knowledge by themselves.  Information is actively discussed and reasoned with through a dialogue between the teacher and students.  This is more based around the students.
  3. Constructivist - The Constructivist theory states that students learn best through experiencing concepts in a way that they can grasp an understanding.  They then further this understanding through repetition and meditating on results.  This is kind of what we mean when we talk about a "hands-on" learning experience.
  4. Multiple Intelligences - The theory of Multiple Intelligences suggests there are more than one intelligence and these intelligences can be categorized.  Some examples of these categories are "Musical Intelligence", "Interpersonal Intelligence", "Intrapersonal Intelligence", "Mathematical Intelligence", "Linguistic Intelligence", and so on.  Some students will excel in certain areas but struggle with others.  By focusing on certain categories, students can become more intelligent in the corresponding area.


2) Describe the role of the instructor in each theory.

  1. Didactic - Teacher has all the knowledge and students passively absorb.
  2. Dialectic - Teacher has most of the knowledge and guides students actively.
  3. Constructivist - Teacher creates an environment for students to learn on their own.
  4. Multiple Intelligences - Teachers focus on actively honing certain skills.


3)What are the three key aspects of a lesson plan?

  • Method - how do we get to where we want to be?
  • Objective - where do we want to be ultimately?
  • Evaluation - how did it go?  how can we do better?


4)How does Sugar integrate and implement constructivist learning theory?

The OLPC Sugar environment perfectly integrates every aspect of the constructivist learning theory.  It provides the student with not just an all knowing teacher that constantly sends concrete information, but with a platform, a toolbox, and an environment for the student to explore on his/her own.  Sugar is designed with icons that the student can understand and click to explore more about the icon's corresponding topic.  As the constructivist theory suggests, students learn through hands on applications literally named "activities".  Through these activities, students can practice subjects and freely gain knowledge and experience at their own pace.  For example, the music applications present the student with keyboards and instruments that can be played however the student wants.  After experiencing the music applications, students will eventually familiarize themselves with how the keys correspond to different sounds.  After some time messing around, students will understand how music is made with different instruments, which will be taught to them completely at their own pace.  Ultimately, the student is able to construct their own way of learning.


Bonus: Where can new Sugar users and contributors go to find out more information, ask questions, and get involved?


  • While I assume there are a multitude of ways for new Sugar users to do this, I would suggest checking out the Sugar website here: https://www.sugarlabs.org/
  • Of course, I would also suggest asking any questions on the RIT HFOSS IRC on freenode: #rit-foss
  • Or they could check out the XO Laptop site here: http://one.laptop.org/

Tuesday, December 2, 2014

LitReview: Hacking Politics

Who?


Author: David Moon

But also very important are:
Editors: Patrick Ruffini, David Segal

and 

Aaron Swartz, Lauren Lessig, Cory Doctorow, Zoe Lofgren, Jamie Laurie, Ron Paul, Mike Masnick, Kim Dotcom, Tiffiniy Cheng, Alexis Ohanian, Nicole Powers, Josh Levy, Andrew Mcdiarmid and David Sohn, Ernesto Falcon, Derek Slater, Casey Rae-Hunter, Elizabeth Stark, and if you really want the full list you can read it here: https://hfoss-fossrit.rhcloud.com/static/books/hackingpolitics_txtwithcvfb.pdf



What?

Hacking Politics: How Geeks, Progressives, the Tea Party, Gamers, Anarchists, and Suits Teamed Up to Defeat SOPA and Save the Internet


Where?



When?

July 15, 2013

The Gist

Basically it's a ton of quotes/stories/arguments made by relevant people speaking about their involvement or knowledge of the big fight for the internet, specifically the fight against the SOPA and PIPA bills.

The Good


-They were able to gather the best people to talk about the topic.  It was great to hear about the political battling for the internet from the people who were really involved and knew the most about what was going on.
-The style that this was written in was great - I liked how the entire thing was just a giant collection of pieces written by the long list of people involved in the "Hacking Politics".
-This is an important topic and is well documented in this book.  The world is incredibly dependent today on the internet, and so it is very important to remember and learn about milestones in the internet's history like this.

The Bad

-Lots of words especially referencing things that I don't know much about.  One of the first pages is a list of important political things that are referenced throughout, and I neither knew about, nor cared about much of those things.
-It was a lot to take in - even as a TLDR version.  I can't see anyone reading the actual full book unless they are studying this for a class, or if they're being punished.
-All over the place.  Obviously the giant strands of quotes is not always connected, but I don't just mean that.  Even the more connected pieces go all over the place, which I think is purely because there is so much information.

Questions?

-I found it very interesting how this battle was fought.  It makes sense that an internet battle would be fought in this way, but are there other types of battles where people could come together in a similar fashion like this?
-How can we completely prevent things like SOPA or PIPA from resurfacing again in any shape or form, and how likely is it that these things will keep surfacing?
-This book is about 2 years old now - is there any significant news that is highly related to this book to be mentioned?

My Review

I remember the internet blackout, I remember the SOPA stuff, but I didn't really care much for it, and I felt like it would obviously work itself out.  Due to these feelings, I found this read quite interesting because I never knew all of these details about what specifically happened in this battle.  I liked reading about this topic from the first hand quotes and the background information.  I just wish it was shorter.

7/10

Sunday, November 30, 2014

Weekly Blog 13

Not much I can say about this week because it was over Thanksgiving Break.  Right before I left for the break, I participated in an awesome play test with some 4th graders for my group's HFOSS XO game.  The 4th graders responded extremely well to our game and the whole event was a great time.  To read more about that, check out my blog post specifically on this play test.

My DSA class required me to improve on the obstacle spawning that was implemented in the last assignment.  This was a bit of a pain because I completed almost the whole walkthrough but struggled on the very last part.  As a result, I ended up disabling some of the features and simply uploading what I was able to fix.  Next week, we are supposed to add some collisions to the game engine, which I am excited for.

My Rich Media class continued working on some cool Ajax stuff, specifically working on some more difficult PHP.  We had to figure out how to load some jokes stored in JSON using PHP, and then figure out how to set the jokes again using PHP.  This was a pretty cool assignment and although I find the constant ICE's to be a lot to continuously keep up with, I can definitely see a ton of use for what we are learning.

Luckily, my GDD class got a bit of a break during this short week.  On Monday, we had a work day where we all worked on our projects at our own pace.  My holiday was a lot of fun and I loved going home to see my family :)

Pre Thanksgiving Playtest!

Recently, I attended a play test event at Allendale Columbia School (http://allendalecolumbia.org/).  The play test was headed by my HFOSS teacher and we conducted the test to see how 4th grade students responded to our class project games.  Myself and MrNex (github.com/MrNex) showcased our game for a class of 4th graders, and I was actually quite pleased with the response we got.

The iteration of our game "Matter" that we displayed was a fairly simple python game written using PyGame(http://www.pygame.org/news.html) that involved a square that could move up or down based on how quickly the player was moving the mouse.  The game is educational in that it is meant to instill or reinforce the idea that molecules in matter move faster in a higher state and slower in a lower state.  Although the students did not completely get the educational part of the game at first, they really enjoyed playing.

We noted several changes that the students wanted to see in the game.  First off, there were several glitches that they noted, such as the fact that the player block would get sucked into the obstacles if there was a collision at a specific point.  The students also noticed a glitch where the player block would get stuck to an obstacle for a little while and not be able to move up or down.  In terms of changing elements of the game, we found that the students did not really see a goal at first, but when I started asking them how many obstacles they passed, they started to keep track and try to get a high score.  Due to this, I noted that we should add an objective, or at least a score counter in the game.

Surprisingly, the students did not say anything about how the game looked and actually really seemed to enjoy playing.  We had quite a crowd of kids around our XO Laptop which was great to see.  After the play test, we sat with the class and both asked, and responded to questions.  I was happy to see that so many of the kids wanted to either get involved in a game making field, or even just become programmers.  It was also cool to find out that the students have already begun making games and programming in Scratch(http://scratch.mit.edu/) at such a young age.  Definitely my favorite part of this experience was actually feeling appreciated for the work we are doing and knowing that it is going towards a good cause.  So many of the other play tests I have been involved in consist of allowing other college students to play my game and although college students may be more critical than the 4th graders, they don't seem to actually enjoy the games as much.

Sunday, November 23, 2014

Weekly Blog 12

As with every other week, I continued trekking through the swamp that is my life of assignments.  In DSA, we were assigned a GameObject spawning homework.  Basically, what we had to do was add a feature to our game engine where if the user clicks, a sphere is spawned on the screen.  This was not too difficult when I read the walkthrough and it was actually quite enjoyable because I saw the potential for a pretty cool game project after this assignment.

In my Rich Media class, we continued working on Ajax, moved into PHP and did some cool ICE's implementing the Google Maps API.  In my GDD class, we got a basic game layout done for play testing.  We have a game where the player controls a character that can move left and right in a platformer style.  Different blocks affect the player in different ways.  For example, the player can hit jump blocks that sends them flying in the air.

In my Video Art class, we got assigned our final project.  I like getting assigned final projects early because it allows me to get a head start on the project and not have to stress about it later in the year.  This is also why I was happy to know what our HFOSS project was going to be from the very first few weeks.

Tuesday, November 18, 2014

InterlockROC Meetup 2

This past Saturday I drove myself and my friend MrNex(https://github.com/MrNex) to a Linux Workshop meetup run by Interlock Rochester(http://www.interlockroc.org/).

The description of the meeting according to Carl(carl@interlockroc.org) states: "Come and get your questions about Linux answered. We have experts on hand to fix problems and answer questions about Ubuntu and FOSS. Bring your system in so we can help you get the most from your FOSS.". After having attended the meetup I can say that Carl's description is spot on.

Although I had no experience with installing or using Linux(or really any other operating systems aside from Windows and Mac OS) I was very interested in broadening my knowledge of operating systems especially with an open source one like Linux.  I had a friend in high school who ran Linux off of an external hard drive on his half broken laptop, and I always thought the operating system seemed pretty cool.  Then through taking my Humanitarian Free and Open Source Software class and reading up about Linus Torvalds, my curiosity was further peaked towards Linux.

As Carl's description states above, there were several experts at the meeting.  The 2 that helped me the most were Joe(IRC Handle: dzho) and Carl himself.  After MrNex expressed our shared interest in getting Linux installed onto our laptops, the 5 members attending the meetup were extremely generous in shifting some of their attention into helping MrNex and me out.  Joe went up to the white board and was kind enough to go so far as to draw diagrams showing us how dual booting and virtual machines work, and which support each Operating System.  Joe said that for dual booting Linux on Windows, we should look into either NTFS or FAT32, although FAT32 has memory restrictions.  It was also highly suggested that we simply run Linux in a virtual machine, which we ultimately carried out with the suggest VirtualBox program(https://www.virtualbox.org/).

The process (for those of you who care) was actually a lot easier than I thought.  I had to download the VirtualBox program.  Then, I had to grab the OS that I wanted, which was initially RedHat Fedora(http://fedoraproject.org/).  Unfortunately, Fedora was giving an ETA of about an hour so Carl kindly allowed us to borrow his latest copy of Ubuntu via CD.  Turns out carrying around a copy of an OS can actually be quite useful especially depending on your career!  After VirtualBox installed, all I had to do was set up a new virtual operating system machine and specify which OS was to be installed.  Then I navigated to the disk(or ISO depending on which type of disk you mount) and set it to boot.  After the machine boots, I just had to go through the installation process, which was basically just continuously clicking "YES".

Overall, I really enjoyed this meetup and I am hoping to attend more Linux User events to get more involved both in developing on the OS, and also in the community.  I find it extremely intriguing that such a handy OS could have been the product of a lot of open source hacking.  I can honestly say that the members of the group were incredibly generous, welcoming, and helpful.  They never made me feel like I was inferior despite my extreme lack of specific knowledge with Linux, and I was amazed at how they instantly were willing to help with any problem that I had.

I had a ton of fun at this Interlock Rochester meetup and would highly recommend that anyone with any kind of interest in Linux attend the meetings.  The meeting was held in a brick building complex on I believe the 4th floor(can't remember exactly), and signs are posted for the location.  I think I entered the building through a door near a comic book store.  The actual room where the meeting was held was a super neat "hackerspace" with gadgets and cool stuff everywhere.  To find the building, I recommend just using a GPS and looking up "Interlock Rochester" :)

Sunday, November 16, 2014

Weekly Blog 11

Received my Project 2 for Rich Media this week.  That was fun.  Requirements for Project 2 in a nutshell:

  • Use 2 Web API's to fetch data
  • Use XHR to grab the data to your web app
  • Display the data through a stylized page
This project is actually a lot of work.  I have to find 2 web API's and then figure out how I am going to mash them together to make a useful web app with them.

In other news, this week in my DSA class, we had an assignment where we were supposed to optimize our game engines.  Basically what was slowing the engine down is that we were loading textures into the engine in an inefficient way, so we had to edit the code to speed that up.  As I mentioned in an earlier weekly post, I don't enjoy 3d Graphics Programming, but luckily, it actually wasn't that difficult to speed up our programs, because the walkthrough was pretty clear.

My friend and I started really trying to get some code up for our XO Project.  We hoped to have something playable by the Pre-Thanksgiving Playtest with 4th graders.  Again, for more information on this, see my other blog posts.

My GDD class began working on our 3rd and final game projects.  My group decided to work on another digital game much to the disappointment of one of our group members.  We brainstormed ideas and decided on a versus game where on player is a prisoner, and the other player is a prison warden trying to stop the prisoner from escaping.

Sunday, November 9, 2014

Weekly Blog 10

This week I finished up a bunch of my projects.  For my GDD game, we finished a bunch of levels.  I personally created the png image files to create about 9 levels and people seemed to receive the game quite well.  One complaint was that some levels were much easier than others, which is something we can improve on in the future.  We also changed the art style so that the player no longer controls a circle, but they now control a rat with a cool tail that trails behind.

My DSA class was quite difficult this week.  We received an assignment that involved getting texturing implemented into our OpenGL 3d game engines.  This proved to be quite a pain because I followed all of the steps on our walkthrough and still had trouble getting the textures to show.  Specifically, we were supposed to set up texture coordinates and get a texture/image to appear on the shapes in our engine.  This was probably one of the most confusing assignments I received all year, so I truly commend and wish good luck to anyone in the field of graphics programming.

My Rich Media project was handed in, so I worked on a lot of ICE's this past week.  We started learning XML and some Ajax this week.  XML stands for extensible markup language and Ajax stands for Asynchronous Javascript and XML.  These are both pretty cool to implement in web development because they allow us to store and fetch data and update webpages in real time without the user needing to refresh a page.

Election Day Hackathon

For Election Day, I attended a Hackathon at RIT's MAGIC Center(http://magic.rit.edu/main/index.html) and if you ever get the chance to go there for any reason, I highly suggest visiting, because it's awesome.  There are 9 projectors on the ceiling projecting an almost 360 degree view around the room.  For this specific hackathon, we had a ton of election statistics being projected on a bunch of the views which was awesome, especially since I was informed that the statistics we had were as up to date as could possibly be.  Although I find politics interesting, I am extremely ignorant in that field and so I didn't really pay any attention to the stats, but I still thought it was pretty cool!

One of the other things being projected was an IRC channel with a bot that allowed us to control both the what songs we wanted to queue up collectively as a group, and what level we wanted the volume at.  We also had some lightning talks/presenting going on, and it was really cool to see some of the projects people were working on.

Personally, I, MrNex(github.com/MrNex), and Dtendr(github.com/dtendr) worked a bit on our XO open source project for HFOSS class.  The hackathon was great because it gave us the chance to work out some key points of our project, and to do so in an extremely open and social environment.  There was some really great food there, like pizza and chips, both of which I ate too much of.  With the help of my teammates, I was able to install Python 2.7(https://www.python.org/download/releases/2.7/) and really get a good grip on how the existing code works.  Again I highly suggest visiting the RIT Magic Center at some point if you get the chance, it is very open and everyone is friendly, and I recommend attending hackathons in general if you get the chance.

Sunday, November 2, 2014

Weekly Blog 9

This week was interesting.  Play testing of my GDD game is going quite well.  The professor and students seem to be responding quite well to the controls of the game, the simple shapes theme, and the fact that our game is built in Java from scratch.  So far we have very fleshed out engine that is able to load maps from image files.  The engine recognizes what colors are in the image and creates blocks that correspond to each color.  A blue block means the user will bounce off, a yellow block is a starting block, a green block will set a checkpoint, a red block will send the user back to a checkpoint and a light blue block will send the player to the next level.

I also forgot to mention that for my HFOSS class, we began a project where we will be developing an educational game for an XO laptop.  This is a super awesome project that you can read about in my other blog posts.  Basically, we are using the 4th grade science curriculum to build a game to teach about the different states of matter.

Lastly, for my Rich Media class, I submitted a pretty much finalized version of my project.  The game is mouse themed.  The player controls a mouse at the bottom of the screen.  The mouse can move left or right into various columns of the screen.  The player must navigate the mouse so it can eat the cheese that falls from the ceiling.  If the mouse collides with any poison falling from the ceiling, the player loses life.  After 3 hits, the player loses the game.  At the end of the game, the final score is shown, and the player can try again.

Although, that accounts for all of the classes that are centered around software development, I should also mention that this week, I completed my second project for my Video Art class.  I wrote an essay about how my perspective was altered through watching the works we watched in class.  Since this blog is mainly centered around developing software and Free and Open Source Software, I won't go into much detail about my Video Art Class, but I definitely suggest looking into Video Art if the name interests you, or you want to experience something new and cool.

Thursday, October 30, 2014

Video Review - Simple Made Easy

Who?


Presentation by Rich Hickey

What?


Presentation called "Simple Made Easy"

Where?



When?


Video posted on October 20, 2011

The Gist


This is a video of a presentation that Rich Hickey gave about several important topics in programming.  He clarifies that "simple" means something is not tangled up or hard to understand, but "easy" means something is known or not far from our grasp.  Rich then shows examples in code of what things are simple versus what things are easy, and explains the advantages of making things clear and understandable and sometimes going against what programmers habitually do.

The Good


-I really liked the subject matter as I am constantly working in groups and I often find myself struggling to understand how certain code works because it is complex, or I think there would be a better way to do something.  I thought the presentation was great because Rich persuades programmers to simplify their code so it is easier to understand and so it makes everyone's lives easier.
-I thought Rich's statements about how if we always do what is "easy" and within our grasp, we will never learn and become smarter, and complex problems will always be outside of our skill set.  I thought this was interesting because I know I often try to find the easiest way to do something, yet as Rich said, I can be egotistical or afraid to admit that I cannot do something.
-I found the actual slides of the presentation to be well done and helpful.  For example, the chart of  specific things in programming that are complex vs simple was very relevant and helpful, and the graph of simplicity vs easiness was not difficult to grasp, but powerful.

The Bad


-The presentation was extremely dense, and although Rich had a lot of comedy in his presentation and I am a programmer myself, I still found the subject matter pretty dull to watch for an hour.
-Although in the beginning Rich explains the words he is going to use throughout the presentation, I still found myself a bit confused at points as to whether Rich was talking about "simple" or "easy" and exactly which one he was arguing for.
-I kind of wish Rich spoke a little bit more of how most programmers do things right and can continue to improve on those things instead of just pointing out problems in everything we do wrong.

The Questions


-Is there a way or method in which we can use things we already know very well to make an easy program that is also very simple and gives the user a great experience?  Wouldn't this be an ideal situation?
-If a program simply needs to be complex because there is no other way around it, what do we do then to minimize the unavoidable complexity?
-Is there a specific set of questions that we can ask ourselves when making decisions that will determine the complexity of our programs?  Can we teach newer programmers right off the bat to code in a specific way that will minimize complexity, so that all future programs are easy to understand?

My Review


Although I really liked the topics of this presentation and found the information incredibly helpful, it wasn't the most engaging, exciting, or interesting video.  I think it was as interesting a programming video as a programming video can be, but I don't think a programming video can really be that interesting.  I can definitely see why someone would recommend coders to watch this video because it is very relevant and encourages people to make their code both easier to understand, but also to make their user experience as good as possible.

6/10

Tuesday, October 28, 2014

Smoke Test

About 2 weeks ago I received an XO Laptop (http://one.laptop.org/) as part of an assignment for my Humanitarian Free and Open Source Software course.  We will be working and developing with these laptops for the rest of this semester.  To ensure that my laptop was not broken or malfunctioning in any way, I performed a "smoke test" on the laptop.

I could make a huge list of all of the tasks I had to perform to complete this smoke test, or you could just read them all here: http://wiki.laptop.org/go/Smoke_test/10.1.x/1_hour_smoke_test .  The test is estimated to take under an hour, but I think my own test cut it pretty close.  For the most part, everything worked and went well, but I did start to have some trouble once the tasks for the test moved outside of simply opening apps on the XO.

I had to put the tasks that required interacting with another XO on hold for a little later because I had to wait for my friend from class to sync up with me.  The other tasks that really gave me trouble were the one's involving using my external computer and a USB to transfer data and install new things onto the XO.  My friend also had difficulty with this assignment and he put in twice the effort because he initially tried installing the programs without a USB.  I tried to get the test done as quickly and by the book as possible, but ultimately we both had trouble with these tasks.  Specifically, getting external apps to install onto the XO was a problem, and there were other little things like some decreased quality in video and problems with getting images to copy that I noticed.

Overall the smoke test went pretty well and I can confidently say that my XO is fully functional and should not burst into flames any time soon.  The test was reassuring and not overly difficult.  Most of the tasks involved opening apps and making sure the components of the laptop all worked and gave proper feedback.  Another important aspect of the tests was to make sure that the laptop saved all the data that it was supposed to especially in the journal app.  The other tasks were centered around getting the XO to connect to hotspots and other XO's in the "Neighborhood".  The last large collection of tasks helped ensure that the XO could install new things even from external sources.

It's interesting to see all of the things that the XO is capable of doing.  For example, I liked testing the audio, video, and pictures, as well as how the XO copies and saves things.  I also thought the tests for installing Sudoku and the library bundle were helpful to show me how to transfer things to the laptop that are not natively there.  I would definitely recommend that anyone wishing to develop for an XO perform some kind of test like this to not only ensure that their laptop works, but also because tests like this really help familiarize the user/developer with the laptop.  Now I am more than ready to develop something awesome for the XO!

Sunday, October 26, 2014

Weekly Blog 8

This week, I continued to progress in my class projects.  For my Game Design and Development class, my group continued to add content to our digital game by adding more types of blocks to our level and making it so the blocks have specific colors to correspond with their functions.  For the moment, we have it set so blue colored blocks bounce the player off, and black blocks cause the player to stick and have to relaunch themselves.

For my Data Structures class, I continued working on our 3d game engine.  We received an assignment where we had to set up the viewing and projection in the program to allow for fully implemented first person controls, which I believe I mentioned in my previous weekly blog.  What this means, is that the user can move around the 3d environment using the W,A,S,D keys and can look around the environment by moving around the mouse.

For my Rich Media class, I uploaded a first prototype of my project.  Currently, it is a game where the user controls a space ship at the bottom of the screen, and the space ship can be moved left or right into different columns of the screen.  Enemies also spawn randomly from the top of the screen.

All of my classes are quite challenging, but also enjoyable.  My DSA class seems especially difficult because 3d programming does not really come naturally to me and I find it abstract and therefore, difficult for me to visualize.

Thursday, October 23, 2014

Video Review

Who?

Directed by Brett Gaylor

What?

An open source documentary called "RiP! A Remix Manifeso"

Where?

Can be watched or "bought" here: http://ripremix.com/home/

When?

Released November 2008

The Gist

Basically, the movie is based around the argument between whether remixing is copyright infringement or not.  Although this is at the center of the movie, the film also heavily addresses points pertaining to copyright in general, copyleft, theft, and of course open source.  As the title of the movie implies, the director builds several specific pillars to create his manifesto, which deals with the past and future, and how although the past tries to control the future, we need to take into account the freedom that progress requires, and prevent the past from continuing to impede the future.

The Good?

-This really hammered in the idea that copyright laws currently have serious issues that will slow down progress and these deserve to be addressed.
-I really liked the choice of people included in the documentary not only because I am a fan of "Girl Talk", but also because they all seemed very relevant to speak about laws, copyright, and practical applications in the realm of music.
-I liked how this film ties into my Free and Open Source Software class in a way that is not only limited to software development, but also encompasses music which is one of my biggest interests.  I also have a constant fear of breaching copyright laws(not sure why) especially in regards to things like music, so it was great to see the big argument pertaining to that.

The Bad?

-While I understand that almost every documentary provides a bias to one side, I felt this film emitted almost too heavy of a bias, and I would have liked to hear some serious arguments against loosening restrictions against copyright laws, because I feel that there are some very valid points in that area.
-This film did focus specifically on the field of music so it would have been nice to see a little more of similar arguments in other areas.
-Personally, I loved the music in this film, but I could completely see how the music could make this film almost painful to watch for some.

Questions?

-This movie was made almost 7 years ago in 2008, have any significant changes been made to copyright laws or in enforcement of those laws since then?
-In terms of live music and people using their own skills to perform other band's music, what are the laws pertaining to that?
-How heavily do large music production companies influence copyright laws vs any other forces.

Personal Thoughts

I loved this movie.  I thought it was extremely interesting and well made.  I loved the music in the movie and really enjoyed learning about things in the music industry that I had no idea about.  Through this movie, my eyes were further opened and homed in on how open source applies to copyright laws in music.  Overall, I would highly recommend this movie to anyone, but specifically people who have an interest in music like myself, or anyone curious about copyright laws and their development.  I think it is also important that people who strictly believe that copyright laws should be upheld as they always have been should watch this movie, because I think it provides a convincing argument against keeping copyright laws how they have been.

8/10

Sunday, October 19, 2014

Weekly Blog 7

This week was fun.  I worked on a bunch of stuff for each of my classes.  For my Data Structures and Algorithms class, I started working on a 2d Game Engine.  The engine has a first person shooter control scheme, and so far has some basic 3d shapes in it.  It contains a sphere, a cylinder, and a cube along with a camera for viewing.  We will be building on this engine in the next few weeks.

For my rich media class, I worked on my mid term project.  I took the space shooter we were building and began fleshing it out into my own creation.  I want it to be a game where the player controls a mouse at the bottom of the screen and tries to catch the cheese falling from the top of the screen.  There will also be poison falling from the top of the screen that the player has to avoid.

For my Game Design and Development class, we started to get our digital game working.  We currently have a ball that can be shot towards the mouse when the user clicks.  Then the player controls the ball through the air by moving the mouse around.  The ball can also stick to certain walls and bounce off of others.  For this week's playtest, we just wanted users to understand how the controls were going to work.  There is no real objective, although I designed the level in the hopes that players would aim for the furthest point to the right of the screen.

Thursday, October 16, 2014

NY & MA 4th Grade Math Curriculum

If you were ever wondering how the 4th Grade Mathematical Curriculum of New York compares and contrasts to the 4th Grade Mathematical Curriculum of Massachusetts, keep reading!  I had to compare and contrast these 2 curricula to get a good understanding of what students are required to learn and practice in the 4th grade.  It was important that I know this because I am currently producing a game to teach students around the 4th Grade age. For more information on that project, see my previous post.

What's the Same?

After reading both of these curricula over once, I realized that I felt like I had read the same thing twice.  I thought that perhaps the problem was that I could not remember enough from reading the New York curriculum to spot any differences while reading the Massachusetts curriculum, so I placed the 2 pages side by side on my desktop.  What I found was that my memory was not the problem, but that both of these curricula are essentially completely identical.  The documents are basically the same word for word and follow the same order.

What this means is that both curricula place importance on teaching students 5 main mathematical topics:
  1. Operations & Algebraic Thinking
  2. Numbers & Operations in Base Ten
  3. Numbers & Operations with Fractions
  4. Measurement & Data
  5. Geometry
Here is a list of what I summed up as the important specific things for students to learn based on these documents:
  • Multiplication and Division with whole numbers
  • Understand fractions and know how to add, subtract, and convert them into decimals
  • Know how to convert measurements between units
  • Solve word problems with the first 3 bullet points
  • Plot lines, use angles, and know shapes

What's Different?

I don't have the sharpest eyes in the world, but the documents honestly look exactly the same to me in terms of content.  My friend kindly pointed out that there is 1 line that he noticed the Massachusetts document had that the New York Document did not have.  This line states: "MA.5a. Know multiplication facts and related division facts through 12 x 12," which I contemplated not even mentioning because it looks like it's just a restatement of a very specific Massachusetts rule.

Aside from that one line, the headers and footers, the font layout, and page numbers, the curricula are, to my eyes, completely identical.  I will say that I preferred the Massachusetts document's layout because it was easier for me to distinguish sections due to the barred and highlighted section titles.

Which will we implement?

My group plans to implement the Sections on "Operations & Algebraic Thinking" and "Numbers & Operations in Base Ten".  Specifically, we plan on producing a game where players practice and hone their skills with solving equations.  The game will use multiplication, division, addition, and subtraction.

How will we implement?

The game will implement what I just mentioned by having players solve equations to use the answers to save Earth from being attacked by aliens.  This will be done digitally, of course.  Players will solve several equations at the bottom of the screen and place the answers in pile on's to defend the planet.

For more information on the project, see below!

Team Proposal 2

For my Humanitarian Free and Open Source Software course, my group and I came up with some cool ideas for a project to develop for use on an XO laptop.  The project will hopefully be used for educational purposes.

My Group:

  • Nicholas Gallagher (MrNex) - npg3253@rit.edu
  • Josh Davis (dtendr) - jad2828@rit.edu

Idea 1

2 liner: Science game where players learn about states of matter through solving various puzzles.  Players change the state of a substance by moving the mouse.

The first idea we came up with is a little different as it is based on the New York Elementary Core Science Curriculum, as opposed to the Mathematics side.  Players will control a piece of matter and solve puzzles that require them to make the matter change states.  For example, one obstacle may be a wall that would require the matter to be a solid to smash through.  Alternatively, the obstacle might be a funnel that only a liquid could flow through.  Players will be able to change the state of their matter by moving the mouse at different speeds.  This would teach a basic understanding of how the movement of molecules determines what state any given substance is in.

This game implements several specific standards from the New York Elementary Core Science Curriculum:
  • Standard 1: Analysis, Inquiry, and Design
  • Standard 3: Key Idea "Matter is made up of particles whose properties determine the observable characteristics of matter and it's reactivity"
  • Standard 3: Key Idea "Energy exists in many forms, and when these forms change, energy is conserved"

Idea 2

2 liner: Math game where players learn/practice math problems and use the answers to play the game.  Players take the answers to the math problems and pile on defense to stop aliens from attacking Earth.

The second idea we came up with is based on the Mathematical Curriculum.  This simple game would look a lot like a Space Invaders, Planetary Defense game.  Players are required to defend earth from attacking aliens.  The aliens fall/attack earth in we'll say 5 lanes.  At the base of each lane is a simple arithmetic problem for the player to solve.  The answers to each lane problem will add up to how many aliens will attack during that round.  The player must correctly pile on defensive stacks equal to each lane problems answer.  Once the player is confident, they will allow the aliens to attack and if they correctly solved each math problem, no aliens will manage to hit the earth.  The game will get more difficult as the player goes on.

As previously stated, this game is meant to teach several basic mathematical principles outlined in the New York and Massachusetts Math Curricula.  For example, this game will help students practice arithmetic operations as outlined in Number and Operations in Base 10.  Students will get practice leading all the way to multiplication and division up to 15 x 15.

Upstream Mentors

We are making a game from scratch so most discussion will be done among ourselves, but some helpful GitHub Projects and mentors we could contact are:
  • Luke Benstead (Kazade) - kirberich@potatolondon.com - KazMath math library
We will communicate with him via Email if we need him.



Team Roles

It is likely that each member will have a hand in multiple parts of this project as we are making it from scratch.  Specific roles will be determined during development.

Easy Parts

  • We already have a very clear idea of what we want the project to be
  • The game mechanics are simple and based off of curriculum standards
  • The XO is very limiting so the game should be fairly basic

Hard Parts

  • Starting from scratch
  • We have to try our best to adhere to the curriculum and maximize the learning experience
  • Although we have a good amount of time, the project will require dedication

Overcoming Obstacles

Although this project will definitely have it's up's and down's we will try and make everything as simple and straight forward as possible.  We will have to be consistent with managing the project on GitHub.  We will also have to be very communicative and understanding with each other.  To really be on top of the project, we should probably adhere to milestones such as:
  1. Ensure everyone understands the idea and agrees on it
  2. Plan who will start with what
  3. Start programming, release first prototype within about a week (TEST ON XO)
  4. Continue releasing early and often
  5. Get feedback
  6. Fix everything/continue prototyping
  7. Finalize
  8. Reflect
  9. Profit :)

Weekly Blog 6

This past week was pretty good.  I got to work on a bunch of cool stuff.  It was nice to get over the hurdles of the past 2 weeks and finally get a bit of a break.  Work did not come as fast this week so I really got to choose what I wanted to work on and not feel rushed.

I gave a presentation with MrNex and Dtendr on a community architecture analysis of the Open Source Project Duality.  You can read about that in my below posts.  I also got the pleasure of attending a Hudl Meetup on the RIT campus.  That was a great experience that you can also read about in my previous posts.

I started creating a digital game for my Game Design course.  My group chose to program a game in Java since we are all familiar with the language.  Our game is going to be about a mouse who launches himself out of cannons to try to defeat cats who have stolen the mouse's friends.  The player controls the mouse and can rotate the mouse's path through the air using the literal computer mouse.  I know the game might sound a bit odd, but we've come pretty far even though we only just started working on it.  Aside from the Game Design digital game, I also continued working on a space shooter game that I had been making for my Rich Media class.

As I mentioned, it was nice to not have that much work this week, but sadly I think next week will be right back to piles and piles of things to do.  I have a Data Structures homework due next week which I think will be difficult.  I also have some midterms coming up, which is always a pain.  Can't really think of anything else to mention right now.  Hopefully next week isn't too bad!

Tuesday, October 7, 2014

Hudl Meetup

This past Thursday I had the pleasure of attending a presentation on open source software by a representative from Hudl.  Hudl is a sports video and software company that helps coaches around the world.  It is a really cool company with a great cause.  You can check them out here: http://www.hudl.com/ .

I really enjoyed this presentation because I got to hear about Open Source Software from someone who works for a legitimate company in the field of software/web development.  It was nice to get an outside perspective on some topics that are covered in my Open Source Software Class.

What I really found interesting about this presentation was how well the representatives presentation lined up with what we have covered in my HFOSS class.  Specifically, the part of the presentation that dealt with the advantages of Open Source Software really lined up with the Five Pillars of Open Source Software, and also what I learned about how/why people use open source software from readings in class.

Tuesday, September 30, 2014

Community Architecture Report - Duality

What is it?


Helpful Links:

Duality is a 2d Open Source modular game engine.  The engine provides a visual editor, is highly extensible, and is written in C# and backed by OpenGL.  If you'd be interested in developing 2d games with an engine like this check Duality out here: http://duality.adamslair.net/

The project aims to create a fully functioning, highly adaptable, efficient open source game engine for game developers to use.

Brief History

Development on Duality (according to the website) was started in 2011.  The actual first GitHub commit was July 21, 2013.  The most recent GitHub commit was authored about 4 hours ago from the moment that this sentence was written.

Who Approves Patches?

Despite the high amount of commits and changes submitted to Duality, actual patches do not go through until they are approved by the single entity known as "Adamslair" - aka all patches must be approved by 1 person.

Who Has Commit Access?

Although people can freely submit commits, only 3 people have had their patches accepted.  These people are: 

Who has the Knowledge?

Overwhelmingly, the knowledge and information for this project is stored inside the mind of Adamslair the primary developer.  The 2 contributors listed above BraveSirAndrew and fireDude90 also likely have some unique knowledge on the project.

Calloway Coefficient of Fail?

The Coefficient of Fail that we calculated using this test: http://hfoss-fossrit.rhcloud.com/static/books/tomspotcallaway-howtotellifyourfossprojectisdoomedtofail.pdf was a 265...being that this is above 135, this would be described as "So much fail, your code should have its own reality TV show."

Turnover in Core Team?

Short answer - no.  The core team is basically 1 man.  He is the lead developer, contributor, and basically complete creator of this project.  Overtime it is nice to see that the other 2 contributors mentioned above managed to patch 4 commits to the engine, but no real changes to this 1 man team.

BDFL?

Adamslair is indefinitely the benevolent dictator for life, of this project.

Front End Back End Work?

Essentially all work done both front end and back end is done by Adam.  Aside from Adam, fireDude90 implemented a feature affecting both the front and back end of the program, and contributor BraveSirAndrew worked on the front end with his 3 commits.  BraveSirAndrew also fixed a couple of bugs.

Bugs?

Unfortunately, because of the infinitesimally small development team, this project has encountered many bugs.  Most of these bugs look like they fall in the genre of improving things by making them more efficient.  The head developer also appears to want people to just use his engine more.  All bug fixes must go through Adam.  Adam also is in charge of quality control and appears quite hesitant to accept any contribution, unless it meets all of his standards.

Trending Project Participation?

Although actual outside contribution to the project is very low, the project has been forked 56 times and has 233 stars.  This implies that the project is actually very trending and people see a lot of potential in it.  The game engine itself appears very polished and far into the development process which probably accounts for why people like it so much.  Not to mention the fact that the main developer Adam constantly works to update the project.

Raptor Test?

This project would be doomed if the BDFL Adam were eaten by a Velociraptor for numerous reasons.  In this project, basically all of the knowledge both unique and not, is held by Adam.  Also, Adam is currently the only person who oversees the project in terms of accepting bug fixes and patches and knowing the requirements to really get a patch through.  If Adam were eaten by a Velociraptor, the game engine could probably still prosper because it seems far in development, but it's likely that evolution of the project would completely halt.

Git by a Bus?

Being that the lead development team consists of one BDFL and 2 minor contributors, it is very likely that the project would not survive if this collection of people was hit by a bus.

Onboarding?

Luckily, there is an official onboarding process for this project.  The lead developer is very responsive to anyone who contacts him, and he seems eager to have people contribute to his project.  The project also has its own wiki and readme file to introduce people to the project.  Having said that, the project seems pretty complex so it may take some time to really get involved in it.

Documentation?

Documentation for this project is limited.  Most of the documentation is about how the game engine can be used as opposed to how people can modify and adapt the source of the engine.  There is a wiki and a website for the game engine and people are encouraged to contact Adam for any questions.  A lot of bugs and issues are documented well, so there are things to work on.  There are not many code examples.

Contact

If I ever found myself needing any kind of information on this project of any kind, I would contact Adamslair - http://forum.adamslair.net/ via his forums, or on GitHub.

Structure and Opinion

Based on all of the above, I would say the structure of this development community is based around a single ruler in the entity that is "Adamslair".  This is a monarchical structure and all decision making is done by Adam.  Personally, I think this is not a very ideal architecture for an Open Source project, as although Adam appears to be opening up his project for others to contribute, I don't think he does a great job providing them with enough up front information to get started, and it appears to be pretty difficult to get a patch through to the core project.  I can see reasons for making an architecture like this for example, if it is an architecture built around a very personal project that one would show great pride and possession in, but I don't think I would like to work on a project like this.  I think the biggest problem I would have working in this type of structure would be that I would feel that I would be putting in a lot of work for no reason because it is unlikely my contributions would actually make it through to the core - that's if I even managed to fix one of the many complex bugs.


Sunday, September 28, 2014

Weekly Blog 5

Well, this was a pretty eventful week for me!  As I said in my last weekly blog post, there was a lot for me to "look forward" to doing, and I was absolutely right.  I worked like crazy to get all of my work done.  It was almost like my teachers had their work buttons turned off until this week, when they apparently decided to crank them full blast.

One of the black holes that sucked up all of my time this week was a video art project that I had to complete by Thursday.  The purpose of the assignment was to use what we learned in class so far to create some kind of video art piece that "disrupts the medium".  For my project, I created a split-screen video that displays one side of the screen as a first person view of someone walking forward, while the other half of the screen shows the behind view.  This project took me an enormous amount of time because I had to experiment with manipulating 2 iPhone cameras around various spots on campus to get some footage that I liked.  I wanted to challenge how viewers perceive the world and show them that they do not take the time to admire what is around them, as they are always looking ahead.

The other project that I had to work on was a board game that I had been producing in a team for my Game Design class.  Specifically, I had to create a highly visual one page design document for our game.  This took me a long time because I had to fit a ton of information on one page.  While I worked on this, I also programmed a space shooter project for my Rich Media class.  Lastly, I worked on a team proposal for my Open Source Software class.  You can read about that in my previous blog posts though.

Although I did a lot of work this week, it definitely felt great to accomplish so much.  The other nice thing about all of this is I can finally slow down and relax now that all of the hard work is out of the way.  As for this coming week, I can "look forward" to performing a community analysis and giving a presentation on the "Duality" open source game engine.  I also get to start programming a digital game for my Game Design game.  I'd say I'm super excited, but really I'm only moderately excited :)

Thursday, September 25, 2014

Team Proposal

List your other team members below:

Nicholas Gallagher - npg3253@rit.edu - Handle: MrNex
Josh Davis - jad2828@gmail.com - Handle: Dtendr

Which Project did your team choose?

My team chose to work on a project called "Duality" (https://github.com/AdamsLair/duality) .

2-liner description of the project?

"Duality" is a "2d Game Development Framework" which appears to be very similar to a game engine.  Specifically, it reminds me of "Unity" (http://unity3d.com/) .

"Duality" is programmed in C# and implements OPENTK (http://www.opentk.com/) which wraps OpenGL, OpenCL, and OpenAL.

What will each team member's role be?

Team roles will be determined.

Source Code Repository URL?


List your upstream Mentor's below:

Adam from "AdamsLair" - adam@adamslair.net

Other mentor's from Github include: fireDude90 - fireDude90@gmail.com
and BraveSirAndrew - andrew@batcatgames.com

How will you communicate with them?

Adam prefers to be contacted via his forums here: http://forum.adamslair.net/
The others we will contact via Email and IRC if possible.

The Easy Parts

  • Judging by his contribution, the main developer Adam seems extremely invested in this project, and he has done a good job organizing everything, especially information about current issues.
  • My teammate and I already know each other and live together, so communication between us should be very easy.
  • Being that my teammate and I have both programmed extensively in C#, we should be pretty familiar with the programming used in this project.

The Hard Parts

  • We will have to juggle a lot of other work on top of this project.
  • The fact that this is a game engine implies that it is very complex.
  • We don't know how picky or trusting the main developer is about his project, so he may be reluctant to how we want to change things.

How will you overcome both?

Overcoming obstacles will involve communication within our team, but also with the contributors.  It will also require a lot of diving into the code.  Lastly, I think we will need a positive attitude and some good structure and organization.

Milestones:
  1. Familiarize ourselves with the code, contact Adam or contributors with specific questions
  2. Address exactly what we want to work on to narrow down and be more specific
  3. Make sure that what we want to work on is worth the time and effort
  4. Actually start working on the issues - this will likely be a different process entirely
  5. Get some commits up
  6. Continue conversation to make sure everything is coordinated
  7. Eventually finalize what we have done
  8. Testing changes
  9. Reflect? Maybe?
  10. Profit.

Bug Fix

Although I have had to fix numerous bugs in my own projects, this past week for the first time I got the "pleasure" of squashing a bug that was not of my own creation.  This experience had terrible moments, enjoyable moments, and moments of fear.  I say "fear" because I was afraid I would not be able to find a bug to squash in a week.  Despite the mixed feelings involved in this experience, it was nice to feel like I helped contribute to a project being developed by an active team of people.

I began my search for a bug to fix on the homepage of Github - https://github.com/ .  Unfortunately, I immediately did not have luck finding an easy bug to fix.  I thought it would be cool to look for 3d Modeling projects to work on, but quickly realized that most of projects involved 3d printing, which I did not really feel like diving into.  I thought maybe my luck would increase if I searched for projects in languages I had a lot of experience with, so I searched for projects in Java.  Unfortunately, I found that the bulk of these projects were in the field of Android development, which I really don't know much about.  I checked out this project here: https://github.com/CovertJaguar/Railcraft/issues because I thought it might be cool to work with a Minecraft mod, but I could not find a bug that I was confident that I could fix.

Finally, I consulted my good friend MrNex (blog here: http://nexleveldevelopment.wordpress.com/) who told me that he found a lot of issues in a project called SIPp on GitHub.  What was great about this project, was that the developers labeled which bug fixes were good for beginners.  SIPp is an open source project developed to help users test their SIPp systems.  Here's some specific information about the project if you're interested:
As you can see through the issue link, someone asked for help getting started on a bug fix and no one responded to them.  This implies that the contributors are not going to waste time helping someone with such a vague question, but luckily, the readily available information on the issue was more than enough for me to attempt to fix the bug.  In fact, I did not really need to contact the community until I sent the commit saying I tried to fix the bug. 

All in all, to fix this specific bug, I had to reference a commit that someone else had made to their local fork of the project, and implement it into the main original SIPp.  This really was not very difficult and required that I copy, paste, and adapt about 36 lines of code.  The fix was used to "Implement a better log when receiving an unexpected response but expecting a request."

Once I finally contacted my friend and found a suitable project to work on, this experience really became about 100 times easier.  The major difficulty was in initially finding a project to work on, and then finding a bug in that project to squash - but I guess that could just be because I am a picky programmer :P

Sunday, September 21, 2014

RocPy!

This passed Tuesday I got to attend a RocPy group meeting at the University of Rochester with my Humanitarian Free and Open Source Software class.  The meetup took place from about 7-9pm and details on the group can be found here: http://www.rocpy.org/

The meetup was extremely fun and equally as informative.  There were several lightning talks given by members of the group.  I found these presentations to be interesting because I am not a big user of Python, but I got to see what Python can be used for.  I learned how helpful Python can be as a programming language and I also learned how many different ways Python can be used.  I was also shown some ways in which Python can be used in a similar fashion to other programming languages such as Java or C.

I did find it difficult to comprehend some of the topics discussed in the meetup because I really don't have any knowledge using Python, but it was interesting to get a glimpse of how the members of the group utilize Python.  A lot of the meetup involved discussing new topics in the Python realm.  I found these new features to be cool, and I like to see how programming languages evolve over time.

One thing that I found especially intriguing was the hacks and tricks that some members of the group showcased in lightning talks.  For example, one member showed how he was diving into Markov Chains: http://en.wikipedia.org/wiki/Markov_chain through programming.  He then showed how the Markov Chains worked with his blog WuPotus which is an awesome Tumblr that mashes up speeches by Barack Obama and Wu Tang Clan lyrics.  Check out WuPotus here: http://wupotus.tumblr.com/ .  I found this to be hilarious, but on a more serious security side, another member of the group showed how to hack websites on Git using an exploit he found involving (I think) the .git folder.

In terms of recommendations for getting more people involved in the club, I found the more humorous or more hacking related projects to be the most interesting.  I found that the group really does not appeal heavily to people who don't have any interest in Python programming, but for people who are interested in getting involved in the Python community, the group is fairly appealing.  I enjoyed the lightning talks, but I agreed with what one participant said in that it would be cool to have work sessions where members can come to work on their projects and get help on problems they are having.  I think this would really strengthen the community and help out a lot of people.

All in all, I thoroughly enjoyed the RocPy meetup, and although I don't know how interested I would be in getting involved in the Python User Groups, the experience definitely made me want to get more involved in groups that focus on programming languages that I do make heavy use of.

Weekly Blog 4

This 4th week was pretty good!  I got a lot of work done.  As for exactly what I worked on this week:

  • I programmed an audio visualizer in html5 with Javascript.
  • I learned about using vectors, homogeneous coordinates, and quaternions in C++.
  • I went to a RocPy meetup which you can read about in my next blog post.
  • I helped finalize a board game that centers around launching folded papers with rubber bands.

Unfortunately, along with getting a lot of big projects done, I was also assigned a lot of work this week.  Here are some things I have to "look forward" to next week:
  • I have to create a C++ program that converts vectors, homogeneous coordinates, and quaternions.
  • I have to create a highly visual design document for the board game mentioned above.
  • I have to write an essay on a piece I would create in the realm of Video Art.
  • I have to perform a bug fix on an open source project and then describe the experience.

In other news, I was extremely happy that I got to drive home for the weekend and see my family.  My uncle is visiting from California and my sister came home from college.  I was delighted to see everyone.  Unfortunately, I am not delighted to have to drive the 6 hours back to Rochester tomorrow.

Despite the hard work I fear I am going to have to put in this week, I am looking forward to getting a lot done.  I hope I can continue to do well and hopefully have a great semester!

Sunday, September 14, 2014

Microsoft Coding Competition

This past Wednesday 9/10 Microsoft hosted a Coding Competition at Rochester Institute of Technology.  There were 2 prizes at stake: a $100 gift card for first place, and a tablet decided by raffle.  My friend and I jumped at the idea of winning a prize and getting to test our programming skills, so we enrolled about a week before the competition.

I had never really spoken to anyone about programming contests before so I honestly had no idea what to expect.  I joined hoping that we would not have to present anything or have our code looked over.  I remember reading the email which said something along the lines of "Think your the best coder here?  Here's your chance to prove it!".  Admittedly, this made the competition sound very difficult, and I definitely did not join thinking I was "the best coder" at RIT.  I mainly joined because it sounded like a friendly, no pressure competition, and I hadn't gotten a chance to really test my coding skills in awhile, so I looked at this as a way to refresh and test my skills.  Also, I would be lying if I said my friend didn't completely pressure me into doing it.

The competition kicked off at about 7pm in the Xerox auditorium on campus and there was a little over 100 people there.  For those of you who aren't really interested in a technical overview of what a Microsoft Coding Competition is like, just skip this paragraph.  Basically, my friend and I entered the auditorium and snagged a seat in the back next to a power outlet.  There was free pizza and soda that I more than helped myself too.  I had to text my roommate and ask him to run a notebook over to me because I thought we could benefit from being able to write any complex programming ideas down physically.  Once everyone was settled in at about 7, the workers from Microsoft introduced themselves and told us how the competition was going to work.  Everyone in the room had to join the coding competition's website via a Microsoft Live account.  On the website, we were presented with 6 problems that gave us some background on a topic, and then asked us to write a program to accomplish a specific task based on the topic.  Each problem was worth either 1, 2, or 3 points based on difficulty, and upon solving a problem, our team would be awarded the corresponding points.  To complete a problem, I would have to select a "compete" tab on the website where I would be given an input text file.  I would copy the contents of the text file and paste the input into my program.  I would then copy the output from my program back into a textbox region on the website and submit my answer.  If my program was able to produce the correct output, my team would be awarded the points.

Personally, I thought the problems were all quite challenging.  The highest valued 3 point problem involved using binary trees and searching using in-order and post-order traversal.  I actually remembered learning about the topics for this 3 point question in my classes, but I recognized that the problem was extremely difficult, so I suggested that my friend and I deal with it later.  The problem my friend worked on dealt with taking some text or word as an input, creating a word search puzzle with the input text, and then having the program solve the word search from top left to bottom right.  The program then had to replace the chosen path with periods, so others could see the way through the puzzle.  The problem I worked on was a palindrome problem where input was given in the form of sentences.  My program was then supposed to find all palindromes in the text and return only the longest palindromes in each line.  If there was no palindrome, my program would return a blank line.

At the end of the competition, our team "Nex Level Development" came in 16th place with 2 points.  I think I speak for both of us when I say we were very happy to be visible on the score board throughout the whole competition.  We actually did better than the majority of the other competitors.  Unfortunately, I was not able to get my problem completed, but my friend/teammate did complete his 2 point question, which was awesome!

Overall, even though we did not win first place, and neither of us won the raffle for a tablet, I think I speak for both of us when I say we were glad to have participated.  I got to program in Java, which I hadn't done in years!  I also got a great mind workout in by doing some difficult problem solving and programming.  I had a ton of fun competing with my friend and I think we'll definitely be keeping our eyes out for other coding events like this in the future!

P.S. If you're interested in the palindrome problem that I had the pleasure of trying to tackle, here is a source I found extremely helpful:  "Manacher's Algorithm" http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html

Weekly Blog 3

This 3rd week was actually quite eventful!  I didn't have to worry about much homework and one of my classes even got changed to an "at home reading day".  I did manage to make a lot of progress on my longer term projects.

Mainly what I worked on this week was my Rich Media homework project.  The assignment was to develop an interactive drawing application in html5 and javascript.  It wasn't very difficult but it was time consuming.  I enjoyed modifying the code after I finished the base project to add more features to the program for bonus points.  I also learned a lot about video game physics in my Data Structures and Algorithms class.  Lastly, I helped my group progress in our creation of a board game for my Game Design class, and I got away from all of my Game classes by learning about Video Art in my Special Topics in Fine Arts class.

Aside from my work on class projects, my friend Nick and I attended a Coding Competition run by Microsoft, but I'll save the bulk of that for my next blog post.

In my Open Source Software course, I finished reading some articles and I learned a lot about what Open Source developers do and how the Open Source process works.  One of the resources I read regarding the "Open Source Way" can be found here: http://opensource.com/open-source-way.  I even took a quiz on these readings, which can be found if you look down at my last blog post!

I am enjoying my classes so far, and I really look forward to our Open Source Class field trip to the RocPy event at U of R: http://www.rocpy.org/ on Tuesday!

Hope to see you there!

Thursday, September 11, 2014

TOSW Quiz

In Chapter 3 of Stephen Weber's The Success of Open Source, there was a listing of eight "General Principles" contained within the chapter.  Last week, we discussed in class the five pillars of "The Open Source Way."


1. What are the titles of each Pillar?


1. Open Exchange - This pillar states that we are able to learn much more when information is freely and openly available, and that this is crucial to establishing an environment for people to learn and build on existing ideas.

2. Participation - This pillar states that when we are able to work with each other freely and voluntarily, we can create more, and with enough collaboration, even the biggest problems can be solved

3. Rapid Prototyping - This pillar states that by constantly releasing what we have, we can test the product and find and solve problems faster.

4. Meritocracy - This pillar states that it is important for the best ideas to prevail, that way the best work is pushed to production.

5. Community - This pillar states that by building a community, we can maximize our ability to create because a large group can quickly accomplish things that an individual never would be able to.


2. What are the titles of each General Principle?


1. Make it interesting and make sure it happens - contributors must express their ideas in a way that makes others want to get involved.

2. Scratch an itch - contributors will work on something to make it better for themselves or to adapt something.

3. Minimize how many times you have to reinvent the wheel - contributors will work on something to minimize how many times the same process must be done.

4. Solve problems through parallel work processes whenever possible - Multiple contributors working on different problems simultaneously greatly increases how quickly work can get done.

5. Leverage the law of large numbers - Contributors use their large numbers to accomplish great feats.

6. Document what you do - Contributors will document their work for others to understand and look back on.

7. Release early and release often - Contributors will release what they have as soon as possible to test and fix bugs quickly.

8. Talk a lot - Conversation allows contributors to efficiently collaborate and understand the direction of a project.


3. What are the similarities between Weber's eight principles, and the five pillars?


   Weber's eight principles and the five pillars go hand in hand.  They are very similar and touch on a lot of the same points.  The eight principles discuss what people need to do when involved in the creation of open source software, and the pillars explain what good can come if people follow the principles and create open source software the correct way.  For example, the principles "Solving problems through parallel work processes" and "Releasing early and often" both support the pillar of "Rapid Prototyping".  By constantly working parallel with others and by always releasing work, the software can be rapidly tested to find and fix problems.  Similarly, the principles "Document what you do" and "Talk a lot" support the pillar of "Community" in that by documenting and discussing what you do, you help build a positive efficient community.  By talking a lot and by "scratching an itch", people also support the pillar of "Participation" by participating in working on the project.  These are just some examples of how each of the principles support each of the pillars, and how they touch on very similar aspects of open source software.


4. What are the differences?


   The main differences between the eight principles and the five pillars are in what each set actually is.  The eight principles explain what people involved in open source projects ideally do, and the pillars represent the Open Source Way.  Essentially, the principles explain what contributors are doing to the open source projects and why they are working on the projects, but the pillars describe what good comes out of open source projects and what the aspects of open source are.  Where the principles are about the people working on open source software, the pillars are about the process and what open source software achieves in establishing.


5. Bonus: Who's "keen analysis" did Weber "Draw Heavily" upon?"


Weber "Drew Heavily" upon the "keen analysis" of the open source process by Eric Raymond.


6. Double-Bonus: What was the title of this "keen analysis." (Hint: Weber hinted at the title when he was talking about Cathedrals earlier in the chapter.)


The title of this "keen analysis" is "The Cathedral and the Bazaar".


7. Triple-Bonus: Where can this keen analysis be found? (Answer in URL form, i.e. http://placeofkeenanalysisis.com/analysis)


This "keen analysis can be found here: http://www.catb.org/esr/writings/cathedral-bazaar/