Heroless
Posted on by Matt under Life Lessons.

So, I’ve had some time to think and realized that these words are very misused. If you know any alternatives or other abused words, please leave a comment.

Depressed

You aren’t depressed, you’re just sad. We throw this term around at the slightest bit of unease. Real depression is serious stuff. The kind of situation you need to be medicated for, not want to be medicated for. Using it as we do devalues the struggle to get through the day when depressed.

Regret

A word I didn’t fully understand until recently, regret is often used dishonestly. Regret is a strong emotional term. It’s the feeling of failure, of owning up to an intractable mistake. No take backs. When a business says “we regret to inform you”, it’s usually BS meant to make you feel better. The CEO isn’t having any sleepless nights over your plight, and definitely doesn’t feel they made a mistake by placing you in it.

Regret is quitting your job and realizing the next day you have nothing lined up and no money in the bank. Regret is not using a condom that one time and getting stuck with an 18 year long debt you can’t afford. Regret is breaking up with someone over an affair that you later find out never happened. Regret is not a trifle.

Love

Love is between two people in a relationship… or is it strong friendship… or is it duty to one’s parents and family… or is it an awesome song you like… or the comedian you think is super funny… or that pair of shoes… I could go on forever.

Key point: I would jump in front of a bus for my lover or best friend, but not my iPhone.

With family, I can’t say I love my mother, because I’m not Oedipus. I don’t want to marry her, or have kids with her. If you do, you’re sick, and it’s one of the few situations where I don’t feel guilty for judging you. I appreciate the effort she put in to keeping me from dying on a daily basis, but we barely know each other. There’s no malice like some people feel, just respect and admiration. So what do I say to her?

We have this stigma built up around not “loving” you parents, but it’s not the right word anyway. The right word unfortunately doesn’t exist.

Leave a comment

I started writing this quite a few weeks ago when the announcement was made that Adobe will no longer support the mobile Flash player. Since Flash is something I use on a regular basis I wanted to weigh in on this development, but bear in mind this has been mostly picked apart by analysts with similar conclusions.

On the web

HTML 5 is ushering in a new enthusiasm for web development. People are excited to quickly adopt the new tags and features, even though it’s an unfinished spec from my understanding. The Flash player is likely to lose out in this space and overall. HTML 5 builds the important features of Flash player into modern browsers with fairly straightforward markup and no need for the user to think about it. This site has some HTML 5 features tucked into it if you’re inclined to look, nothing too fancy though.

In games

I’m fairly convinced that Flash player games themselves will decline. As a proprietary part of some game engines it’s hard to say. Game developers require such turn around that it’s not as likely for that switch to happen in large studios that depend on it. In those cases though it’s so warped to the games needs that it’s hardly Flash at that point.

Why I keep saying flash player

Flash as a tool won’t go away so quickly. The key field and area where Flash excels is animation and that distinct advantage isn’t countered in HTML 5. Editing animations in code is really annoying by comparison to scrubbing a timeline and seeing the results in real time. Adobe will inevitably integrate HTML 5 into their products and continue to bring value to it’s customers. Another company could write a tool to fill that role, but Adobe has a nice head start.

Conclusion

The key point is to become familiar with HTML 5 and Javascript. Flash skills will likely remain valuable for artists and animators.. Try to follow developments as the HTML 5 spec evolves and create some small projects to be ready.

Leave a comment
Posted on by Matt under Life Lessons.

I hate physical activity of all kinds. That was my starting position at the start of January. On the other hand I also hate the results of that hatred, those being a lack of energy, health, and attractiveness. So I set out at the beginning of the year to try to get into shape and change the way I live day to day. Everyone talks about P90X as this great thing that can help make that initial push, and after looking around the web it’s easy to see why.

I decided this is worth a shot and wanted to go into what it’s been like. I’ll go into different aspects of the program and what I think of them. We’ll start with the most important part.

Nutrition

The P90X nutrition plan is fairly generic and difficult to follow so I was glad when I found a site that could help, MyFitnessPal. The nutrition plan gives a starting point to the breakdown of what and how much you should be eating, but the given foods are very limited. Using MyFitnessPal I was able to use the nutrition plan’s starting numbers in combination with the recipe’s I knew I liked or had available to plan out meals that worked for me.

When you’ve never cooked much, planning meals in advance is hard. I’m still trying to work out ways to cook everything I need at once and just freeze it for the week. The only complaint I have for the P90X plan is the initial amount of protein they want you to have. I could get up to around 200 grams of protein, but the plan wanted 300. The only way to meet that would have been supplements and that’s not a road I wanted to go down. Also be aware that eating more vegetables means more fibre. Try not to eat a straight week of chilli is what I’m trying to say. It won’t end well.

In the end switching to a whole foods mindset helps a lot. I’m honestly feeling that as long as you eat real food 90% of the time and get a vague sense of how many calories are in things versus what you need, you’ll be well on your way. They say six packs are made in the kitchen after all.

Routines

I won’t break down every routine because that’s silly. Suffice it to say it’s six days a week, with each day being cardio or strength, alternating. All of the routines are about an hour, save for two, Ab Ripper X at 30 minutes, and Yoga at a whopping hour and a half. Suffice it to say I don’t have time for Yoga and very early switched it with different cardio / stretching. I also started with a large gut, making the ab workout impossible.

The program goes on about this idea of “muscle confusion”, which I think is completely marketing driven. From what I can tell the idea is really just preventing boredom. If the average person does the same thing everyday, they’re likely to get bored and quit before they start seeing results. Switching up the workout is a way to try and fix that. Makes sense, I get it, but every time I hear “muscle confusion” I cringe.

As to my experience with the workouts, I’m generally fine with them. It definitely started out as something that was too much for me. The modifications and general attitude that doing what you can is good enough really drove me to keep going though. It gradually got easier, and eventually I could keep up.

Future

I think the next step is to come up with my own system. This is great and all, but an hour plus each day is a lot of potential time gone. I could use that hour to listen to podcasts and audiobooks, or think about things. Eventually P90X does gets repetitive; “German potato soup” comes to mind. From what I can tell there are also more efficient ways to do strength training and cardio if you have the gear or access to a gym. I just didn’t want to invest that heavily at the outset in case I bailed.

I recently started cycling to work and I’m gaining confidence that it’ll be a good avenue to pursue combined with weights and pull-ups every other day. P90X has been the start that I needed and It’s taught me techniques that I can keep using going into the future.

Leave a comment
Posted on by Matt under User Interface.

There are plenty of people who like the Kinect judging from sales data. I’m a bit ambivalent but I think there are great experiences to be had with the device. The one thing that does get me going however are Kinect menu systems. I think we’d all be better off if people could only pick up the controller and use voice commands. The developers are not to blame for this by the way, they do what they can.

General failings

First off there’s a significant amount of lag that’s just there, from 120 to 200 ms at best. That doesn’t sound like much but you feel it, not only in the skeletal tracking, but in the voice as well. As to the voice recognition, if you’re in an environment that isn’t just you, it’s useless; except to give you free reign to tell your friends to shut up.

The tracking also has a tendency to bug out at times and treat you as a part of the background, throw your legs over your head, or suddenly say that you have no arms. Not to mention the space constraints that affect developers just as much as the poor apartment dwellers who have to kneel on their couch. Working with the Kinect would mean a large amount of office space would have to be set for it and measured appropriately.

Dance Central

Often hailed as the best UI on Kinect, the game is still finicky and better off with the controller. This is because of arm drift. The arm naturally moves in a lazy upward or downward direction when selecting items, so it’s quite easy to move up or down the list mid-motion and mis-select something.

Also the large song list moves at a speed which is initially hard to adjust to. These are difficult problems to mitigate given the speed/quality of data Kinect provides. In Dance Central 2, the addition of voice commands and some improved tweaks have made the experience better, but it still pales in comparison to just pressing a button.

Buttons

Many Kinect games follow Microsoft’s initial Kinect Hub approach and use large buttons that you hover over for a brief period to activate. They treat the players hand as a mouse. A lot of development work has to go into adjusting the size, shape, fill speed, and how sticky the buttons are. Buttons have to be so large to feel decent, that menus have to be simple or heavily nested. Scrolling through any list is a chore by comparison to a simple button press.

Conclusion

Kinect sucks for menu navigation, plain and simple. Sorry to be so blunt, but just let me use a controller and get on with my day. The Kinect has good points, voice looks promising, but precise control is not one of them.

Leave a comment

No this isn’t an article about determinism. I recently did some digging through youtube for advice on writing because I feel it’s a worthwhile skill for a game developer to have. A certain point made by Christopher Hitchens during an interview stuck with me and prompted me to apply it to game development. He basically said that if you have to write, that it never occurred to you that you can exist without it, then you’ll be fine because it’s what you’re meant to be doing. I would say the same about game development, or any pursuit in life.

Games are fun and ingrained as a pillar of life to kids who grew up playing them. They influence us as education, entertainment, and social identity. An entire area of conversation and language of references exist that revolve around gaming and it’s periphery. It’s not hard to see how people can feel that making games is where they belong, just from proximity. Passion is often the only trait people have when they try to get a job in games.

Then they get in and realize that it’s the programming they love, or writing, or managing people, or art. The hardships of making games drive these people out because those aren’t the challenges they’re meant to face. They conclude that games aren’t worth it and move on to a better fit for them. I’ve often seen it stated that the average length of a career in games is 5 -7 years.

That won’t be me. The reason that statement by Hitchens struck me is because this is the only thing I can see myself doing. Game development came first and programming is just how I fit in. Any time my friends tell me about working on business software, or any other field, I just don’t get it. I have no choice.

Leave a comment
Posted on by Matt under Life Lessons.

Women alone cannot make a man. This may be a controversial thought for some but it’s what I believe. I’ve reached this view after years of being completely lost in how to handle situations that call on me to present manly qualities. Qualities such as:

  • Assertiveness
  • Charm
  • Chivalry
  • Courage
  • Decisiveness
  • Humility
  • Gratitude
  • Sense of duty
  • Sense of healthy competition
  • Sportsmanship/Honour
  • Survival skills
  • and more…

These are all things that I believe a consistent male role model would have instilled in me if I had one. The only teachers who taught me anything about how to live my life were the male ones, and I’ve forgotten all of my female teachers. Not that female teachers aren’t good at their jobs, but I’ve become very in favour of the idea of separate schools for girls and boys.

The reason I say a boy needs to grow up surrounded by male role models is primarily that the sexes are different. For as much as we talk about equality of the sexes, the idea should not be that we are the same but that we have equal rights and opportunities. It feels like a large portion of society wants us the same, and think a strong woman alone can teach a boy to be a man. It’s not true in my opinion.

A common question women ask is “Where have all the real men gone?” The above is a part of the answer. Many grow up without “real men” to teach them and are raised to try to answer to a woman their whole lives. Instead of becoming an independent strong man, we remain a man-child, forced to cobble together a veiled illusion of manliness. We treat our spouses like one of the guys instead of a woman, or our mother instead of our lover.

Fatherlessness isn’t the only only reason for this. There are many who argue that feminism went past the point of equality and into the realm of male bashing, causing male traits to be vilified. The Men’s Movement is pointed to as a reaction to this attitude. Haven’t investigated enough personally but it’s worth mentioning.

Whatever you think causes the problem I think we all recognize that one exists. A generation of men who don’t know what a man is. To any other guys out there like me, there are sites and books dedicated to presenting this information. For instance, the Art of Manliness is an excellent site with many articles, a podcast and even a book.

It’s embarrassing to admit to what I would consider major character flaws. The one thing I do know though, is that admitting you’re working on problems and talking about them is way better than pretending they don’t exist.

Addendum: I couldn’t figure out how to work these in but they’re some important points.

In a single parent household a child is not only missing it’s father but it’s mother as well. The mother has to work hard to keep food on the table and as a result she can’t be as present in her child’s life.

There are situations when the father being out of the picture is better, such as abuse and criminal behaviour.

There are valuable traits that I’ve gleaned from the experience, all related to not making my father’s mistakes. I still feel a strong male role model would have taught me the same things plus more.

Leave a comment
Posted on by Matt under Programming.

Elements of Computing Systems is a course developed by two professors that felt computer science students weren’t being given a practical understanding of how computers work as a whole. Many topics in this course tend to be glossed over in the current university and college curricula. Having been through college, I can fairly say we were taught practically none of this material. I decided to take this on in my down time, and can say that it’s fascinating. It fills in many gaps that I had in understanding the ultimately simple construction of these systems.

Hardware Portion

The book is structured in a bottom up style and the student builds everything themselves using simulators and test scripts. It begins by saying that the “not and” gate (Nand) and data flip flop (DFF) are built into the simulator. You then construct everything from those. First building other logic gates, then multiplexers and de-multiplexers, memory systems, ALU, CPU, and finally a whole simulated computer.

There’s an immense amount of pride, and ultimately curiosity, that comes from making something real. It was extremely tempting to unravel everything down to basic logic and build it in Minecraft, but I didn’t. Again, I didn’t know what some of this stuff was, and certainly not how any of it worked in a practical sense. Hardware is logically not as complex as we make it out to be in our minds though. This only took a few nights and was the shortest thing to implement.

Software Transition

Next you build an assembler for this simple computer. In case you don’t know, an assembler takes assembly language that humans can read and translates it into binary that the machine can understand. Another exciting experience to see how instruction encoding works, and how to do some basic parsing. I used Perl for this, because it’s good at manipulating text. This took a few days as well.

Then the only lull for me in the course comes; the virtual machine. A virtual machine is a conceptual computer, a layer between the programming language and the specific hardware you’re running on. Think .Net, though I know the course wants you to think of Java. What they get you to build is a translator from the virtual machine code, into the assembly that was used in the last chapter.

Though it felt like a bit of an extraneous step, it was useful. From implementing the virtual machine I learned how the stack works, how function calling works, and how branch instructions can turn into goto’s with unique labels. All valuable and having it in this form means it doesn’t get in the way of learning about compilation. These are all things I knew theoretically, but now have a much deeper understanding of.

The Rest (Software portion)

I’m close to done this course, and am about to do what is likely the other exciting phase; compilation. The rest of the course focuses on this compiler followed by writing a small operating system/standard library for the language. At that point I’ll likely go study some of the topics of this course in more detail.

I would thoroughly recommend this to anyone with even a basic programming course under their belt and a desire to learn more about how computers work. Even having not finished yet, I know I will soon and can’t wait to keep learning.

Leave a comment

Introduction

After a long hiatus I’m back to cover another game. This time it’s The Elder Scrolls V: Skyrim. I played on the PC version both with and without a controller. If you haven’t read the previous article on Final Fantasy XIII, let me explain what I do here.

Most reviews, game coverage, or development articles focus on graphics, story, or AI. My aim is to go through each area of a games user interface and explore it’s positive and negative aspects. It’s sort of a UI review, but hopefully developers can learn from it, and players understand why some decisions may have been made. Lets get started.

The Journal

The save system has been improved to track the last three auto saves, but saves are tricky to get right and manual saving could use improvement. Listed saves are not tied to the current character, making it possible to overwrite a second character if not careful.

The default option when saving is to create a new save. This makes the user flip through the list to find their last manual save, or clutter their system with mountains of save files. There should be a quicksave/quickload ability for the last manual save, simplifying the process. I believe this exists on the PC, but the commands aren’t shown to the player. This will turn out to be a common theme.

Quest Screen

Streamlined Quest UI

Quests are more manageable and easier to manipulate in Skyrim. Separating the list of quest names from their descriptions, means more visible quests at once. Small incidental quests are now tracked and grouped together. This is info the user would have to remember before. All solid improvements, and good examples of keeping data organized In a quick to navigate way.

The only complaint I have is that managing the visibility of miscellaneous quests is a bit fiddly. The stats screen is loaded with interesting stuff, nothing particular here with usability. Overall the journal is quite effective.

The Map

Skyrim Map

Behold my many map markers!

I recall emphasis being placed by developers on the 3D map, and with good reason. Normally I’m opposed to 3D in UI’s; normally it sucks. That’s not the case in Skyrim’s map. The 3d here is snappy and responsive, with 2d overlays to show locations. Discovered locations are easy to distinguish from undiscovered, and marking areas as cleared helps to not retread empty ruins. The map avoids feeling cluttered due to the easy to use quest management.

The symbology used however is very unclear, with no legend that I could find. I didn’t realize at first that Markarth is just a city, and not some demon spewing entrance to Oblivion. You gradually come to recognize the symbols, but one could argue that as a benefit. The user is exploring the unknown, which is likely why a legend isn’t provided.

Leave a comment
Posted on by Matt under Programming.

I’ve been writing more seriously for the last few months. For the first time in years, I want to not just write, but improve my writing. My work is markedly better now than the first post, longer and more structured.

Looking back, I’m noticing patterns in the way I write sentences. Something about the structure and style screams programmer. Thinking about it, a programmer spends all of their time reading and writing, not just in terms that a machine can understand, but that other programmers understand.

Object oriented programming ends up being a stream of statements where the subject is first. My old posts tend to follow that structure. I define the thing I’m talking about, then make a series of statements about that thing, describing actions it takes and attributes it possesses. A lot of of “It’s”, “I”, and “The” at the start of sentences.

I wonder if functional programmers would be affected by their style. In those languages you tend to build progressively more complex statements from earlier definitions and concepts. Maybe lots of run-on sentences… joking of course.

The actions are more important then the one performing them. Maybe they have the opposing problem and barely ever put the subject first. I can’t say, since I don’t code in that style often.

Programmers also avoid frills. My writing is definitely lacking in variety and decoration. Learning colorful adjectives wasn’t an activity I engaged in, but now it seems like the next step towards improvement. Life is vibrant, so language should be as well.

Bare in mind this is all opinion and speculation based on my own experience. There’s likely some influence on normal writing as someone who writes code. If any other coders notice a similar style with their own writing I’d be interested to hear about it.

 

Leave a comment
Posted on by Matt under Programming.

* Note: This isn’t a swearing blog, but that’s the name of the language; no point sugar coating it.

For those that haven’t heard of brainfuck, it’s a terse programming language designed to have the smallest compiler possible. Useless for production, brainfuck is still a fruitful language experiment and entertaining oddity. The language consists of:

  • a block of data (memory)
  • a pointer to that data
  • a pointer to the current instruction
  • a way to do I/O
  • 8 instructions represented by single ASCII characters

Though difficult to read and write, you can theoretically create any program with this simple set of features. It’s a fun and compact concept. Many compilers and interpreters for brainfuck are miniscule, under 200 bytes; note the lack of prefix there.

I decided to kill some time one day by writing an interpreter for this language in Perl. The script is small enough that I could add it to the post, but the formatting breaks at the moment. Here is a link to it, with test code that spits out “Hello World!”.

The interpreter is quite simple. It sets up the variables, strips out the invalid characters using regular expressions, and runs some code on every character. Whille not as compact as possible, it works well enough for me.

Writing and testing only took an hour and a half, any programmer could do it. Having written a simple interpreter, it’s tempting to do something more complex and useful. Maybe you could design a domain specific language, or integrate Python or Lua into your game engine. Learning about languages opens doors.

Leave a comment