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.