Category Archives: Software

Software-related information

The Power of “Hello World”

Hello World!

There’s a long-standing tradition in computing which compels beginners doing anything new to print out these words. It goes all the way back to 1974 from an internal memo in Bell Laboratories, written by Brian Kernighan:

Handwritten hello world, by Brian Kernighan (courtesy artsy.net https://www.artsy.net/artwork/brian-kernighan-hello-world)

While the origin of “Hello World” starts before most of us were even born, we each carry it on today. There have been a few times I’ve seen the “Hello World” concept derided by those who say it’s not a good way to learn a new programming language, platform, or framework. That is true. But it’s a start, and a lot of the time, the start of something is the most important part.

It’s important to celebrate these small victories along the way. If Malcolm Gladwell’s 10,000 hour estimate for mastery of a subject is true, one needs several tools to help them retain their bearings through any such journey:

1. Interest

It all starts with this: being interested in something enough to try it out. That’s what gets you started. If you can think back to anything you’re good at doing, I’m sure you can remember the place where you started, and I’m almost sure you started for the simple fact that you were interested.

2. Accomplishment

What did it feel like when you wrote your first “Hello World”? It felt like you were getting somewhere, right? I remember the first programs that I ever wrote on my father’s Commodore 64. They certainly weren’t anything special, but they were my code. And I was learning and doing things I had never done before.

3. Encouragement

Here’s where one can really help others. When you write something like “Hello World”, you know you’re just barely scratching the surface. When you start to realize how much more there is to learn, it can become very disheartening. Even the smallest gesture from someone who’s done it before can really help you keep going.

4. Determination

This one only occurs after some experience. You have to be able to draw from your past experiences where you’ve met similar challenges and succeeded. Sometimes you can use the same tactics you used then, sometimes you just have to keep plodding forward because you know you’ll eventually conquer this challenge, too.

Motivation

All of this cultivates to one’s motivation to keep going, keep learning, keep doing. That’s the most important part of learning. The more I’ve seen in life, the more I believe in the human ability to learn almost anything. I’d be willing to say that–barring biological capabilities and challenges–one’s ability to master a subject is 90% learning and maybe 10% natural ability.

And that’s why it all starts with “Hello World”. It’s that moment that captivates you, when it clicks for the very first time and you’ve created something new for yourself. “Hello World” stands for something larger. It means “I’m just learning this new thing. I can’t do anything amazing just yet, but this is my first step.” And first steps are very important, for none of the steps following matter without it.

Back to the game!

Now that robotics season is completely over, and life has returned somewhat to normal. Back in December, I was working on my very first video game to release, and I said I would return to it when the robotics season was over. And here I am, after our last competition for the year.

Since I’ve turned my thoughts back to the game, I’ve decided to also do the artwork for it. This isn’t too brash of a decision for me for a few reasons:

  1. I’ve got passable experience working in Photoship/GIMP.
  2. I’ve got some recent experience in Illustrator/InkScape.
  3. The graphics for this game should be clean, simple, and uncomplicated.

So, I feel I’ve got a fighting chance here. If there were any more complications in the artwork, I would definitely be seeking help in this area. As it is, I’ll be having a couple of artists review and critique my work before I get too far anyway.

Behold!  My mediocre artistic drawing skills!

flying saucer - concept art for lander game
flying saucer – concept art for lander game
alien family - concept art for lander game
alien family – concept art for lander game

 

Well, I guess that’s all for now.  I’ll post more updates as we go!

–Kevin

 

 

FIRST Robotics Season 2015

Lots has happened since the last post at the beginning of the build season. The team has completed a robot, completed a practice robot, went to regional competition and learned quite a lot. I’ve learned quite a lot, too.

[Want to see the team’s progress? We have video updates here on YouTube.]

Our team, System Meltdown (FRC 2357), did great at competition this year.  They really came together as a team at the end.  We ended up moving on to the playoffs and making it to the quarterfinals.  We almost made it to the semifinals as we tied for points.  The best part was that our team and our robot performed very well in the playoffs especially.  It was the other teams who had trouble this time.

Aside from the expected learned bits of taking more time and commitment than expected, navigating the politics of the local school system, and keeping teenagers on task, there have been some unexpected lessons:

  1. Parental support makes a huge difference.

This one is a little obvious if you think about it, but other than bringing kids and picking them up, our team parents not only bring food to each of our shop sessions, but one of them organizes the whole effort of doing so.  They show up in large numbers to any outing we have, help mentor the team, and donate everything from cleaning supplies to workbenches.  Amazing.

  1. There’s a wide spread of commitment between students.

Some students are very committed and productive, but others are only casually there.  I figured this would be the case, but there really is a very stark difference.  However, there were a few cases of students who just needed some direction and latched on as soon as we found it for them.  In many cases, the age of the student matters little.  We have some very committed freshman, and some marginally committed seniors.

  1. This would use almost every facet of my engineering knowledge.

I naively thought that the technical leads from previous years would have this down by now.  But they all still need help somewhat to fairly frequently.  Within a single shop day, I would find myself helping with software, explaining the actions of mechanisms, demonstrating how to solder wires, how to work a spreadsheet, and checking for essay grammar.

  1. There are teams out there who work with much less than we have.

I knew we had it pretty good with the financial support we get from our school district.  However, we really don’t have enough space for all 35+ students trying to make a shop, computer lab, etc. out of a standard classroom.  But at a scrimmage this year, I spoke to a mentor who said their team stores their robot and equipment in the science classroom closet, and getting zero support from the school district.  Talk about making the best of your situation!

  1. Goals are important!

Last but certainly not least.  It may seem obvious, but I believe this point cannot be overstated.  Our team had 3 goals this year.  We achieved two, and almost the third.  However, the overall success we realized was definitely a result of working toward those goals.

And that’s it for this competition season.  But it doesn’t stop here.  I will continue to keep meetings going in the off-season and we will continue to work on projects for fundraising, community outreach, team training, and other technical activities.

Catch ya later!

–Kevin

FIRST Robotics 2015

Yesterday was the 2015 kickoff of the FIRST Robotics Competition. What’s that, you say? Well, watch this video and listen to the soothing voice of Morgan Freeman while he explains it to you:

Don’t worry, I’ll wait for you to finish before I continue…

…done? Okay.

FIRST Robotics is a way for me to give back to the community, and a way for me to help further Science and Engineering in the U.S. You see, for a long time I’ve read the articles and seen the statistics of the state of decline of Science and Engineering within the U.S. and how all these jobs and proficiencies are going off-shore. It’s disconcerting, to say the least. Then I came to the realization: What am I doing about it? I’ll save you the platitudes about how even one person can make a difference, blah, blah, but the fact remains that if I’m not doing my part, I can’t get all preachy about other people not doing theirs. That would make me a hypocrite, which is something I vowed I would never be.  It’s a worthy goal, and lots of people in the public eye agree, for once.

Who would have thought you’d see Snoop Dogg and the like bestowing the virtues of Science?  Did I mention that Will.I.Am performs at the FIRST Robotics Championship basically every year?

He’s doing his part.  I guess I should do mine.  That’s why for the last 2 years I’ve been involved in FIRST Robotics as a Judge and a Mentor.  That’s also why this year I accepted the primary coach position for the Raymore-Peculiar High School Robotics team, at which I’ll be spending at least 3 days a week coaching and mentoring 30-40 students every week, getting ready for the Kansas City Regional on March 13-14.

More on the actual kickoff and design later!

–Kevin

Mobile Game Concept

So, ever since I vowed to start my own mobile game last summer, I’ve been working toward that goal whenever I can. Here’s my progress so far.

  1. Compare game frameworks

I started out looking at several frameworks, and then trying out a couple. I looked at Corona, Marmalade, Unity, Unreal Engine, Cocos2D, Gideros, and a few others.

  1. Try out frameworks

Here I chose Marmalade first. This is the framework that was used to make Plants vs. Zombies, Cut the Rope, Draw Something, and others. So I figured it was a good place to start. Marmalade is a cross platform game engine, and I opted to use Marmalade Quick, which is a 2D-only Lua-based SDK.

Problems with Marmalade: Support wasn’t very good and there were several places where the documentation didn’t match the actual code. Also, quite a bit of the game development process was still left to the developer to handle in Lua.

Second, I chose Unity. I didn’t choose it before, because the 2D support is still new. However, there is one single largest benefit to Unity, and that’s the Editor. The Unity Editor is so amazing it becomes the central point of driving the development process of the game, which puts your code in specific buckets called scripts. You also have your choice of C# or JavaScript for your code integration. I’m familiar with both, but enjoy the structure of C#, so I started using that.

  1. Select the idea for the Game to do first.

Although I had several ideas for games that I’ve collected for future use, I’ve settled on one that will be fairly easy to implement.  It’s an addition to the “lander” genre, if you know what that is, but my goal is to make it a game that anyone aged 8+ can play (because that’s the age of my youngest daughter.)

  1. Start development on the game.

This started out with working out the game mechanics and going from there.

So, where am I now?  Well, this video was from last October and shows some of the functionality I’ve implemented so far.

  1. What’s next?

Well, I wish I could say I’m finishing this game very soon, but I’ve got some higher priorities coming up for the next few months as I’m now the coach for the local High School’s FIRST Robotics Team.  But more on that in the next post.  I promise it won’t be so long until the next one!

Cheers,

–Kevin

 

A Trip Down a Programmer’s Memory Lane.

[This is a post I wrote on my old blog July 31st, but I felt it was relevant here as I’m still working on this project–stay tuned for updates!]

The other day, I was listening to the Ruby Rogues Podcast: Episode 154, and they start talking about something that has absolutely nothing to do with the normal Ruby topics. They were talking about game development. Within the first few minutes, James Edward Gray says:

It seems to me that when I talk to lots of programmers, and they give me their origin story, it somehow includes “Oh yeah, I got into programming because I wanted to make games.” I swear a strangely high percentage of people say this. And then I talk to them and say “Awesome! What have you made?” And they’re like “Oh, nothing. A little something, but yeah, nothing.” And I think this is kind of tragically sad.

Ouch. That hit way too close to home for me. I originally really got into programming when I was middle school aged, playing in qbasic (or Quick Basic 4.5, that I bought from Babbage’s). Then later in high school I taught myself C++. The whole time, I was making games–or trying to. In reality, I would do clever things with graphics libraries, try to tie them together into a game, then either hit the ceiling of my technical ability or just lose interest and move on to something else. In almost every case, I had a vision that was much larger than I was willing or able to follow through upon. In college, I modified a CircleMUD codebase in an effort to make my own MUD, but again, it eventually fell by the wayside even though I had several really cool things that I did with that code. At some point after, I converted to programming for a living and never really attempted to write another game from that point on.

Upon this reflection, I think I’ve learned two lessons:

  1. I shouldn’t berate myself for these unfinished projects. Although I never completed them, I learned so much. And what I learned eventually translated into a fairly good living with a job I enjoy.

  2. I should choose less ambitious side-projects, something more achievable, where I can build something that I can actually show to people in its completed form.

  3. I should write and complete a game. It was always one of my dreams to complete a game. It’s definitely within my abilities. And I still kind of feel guilty that I never achieved this milestone in my life.

So, here it is. I will set forth an immediate side-project goal of creating and completing a game. Right now, it seems like the best place to start is with a mobile game. These games can be simpler and there are several frameworks available to speed development of such games. In fact, I’ve already begun reviewing several of these frameworks. I’ll post a summary of my findings on each of these frameworks on the next post. In the meantime, send me a tweet with your thoughts on this subject! Did James Edward Gray’s statement resonate with you as well? Have you done this before, or want to? Would you like to point and laugh at my first attempt? Talk to you soon.

–Kevin