Programming

Programming languages, software design & architecture, code snippets and advice.

Selling Open Source Software Libraries

Programming

BatteryTech has been an interesting experiment so far. In case you don't know what it is, it's a software library I developed last year for Battery Powered Games that makes it way easier to write cross-platform games, assuming they are targeted at PC, Mac, Android and iOS. BatteryTech is not free, but instead goes for a one-time purchase with lifetime upgrades. This model is nearly opposite from most of the competing products which opt for a subscription model, getting you in the door cheap and taking that chunk of change from you each year to keep using their product. It's difficult to figure out what the best marketing strategy is for a product like this, so today I set up the $99 experiment, which I'll explain further.

Prototyping Project 7

Programming

A few weeks ago I began prototyping a new game, tentatively titled "Project 7." It's called that because it's my 7th game, but that's just a working title. This will be a featured BatteryTech game and will utilize Bullet Physics, Lua, OpenGL ES 2.0 and will run on Android and iPhone. The game idea was conceived by Ryan Foss who did the art, level design and much of the overall game design on Deadly Chambers. The idea is to have a game world where you, the player, control a race of characters that are in danger of being swarmed and killed by another, much meaner race. Originally we were going to go for Humans and Zombies but right now the art team is working on a cuter alien race vs some scary indigenous monsters. I love the art concepts they are coming up and will post some of them below. Keep reading for those and then some videos of the prototype running on Windows and Android.

My First Fully Integrated Software Shopping Cart

Programming

I've always been super interested in point-of-sale systems and e-commerce, particularly the bits around inventory management, shopping carts and really slick sales integration pieces. I've never had a really good functional reason to mess around with any of this, though, outside of when I worked at IBM on an order management system for a client, until I wanted to start selling BatteryTech licenses online. The site, www.batterypoweredgames.com runs Drupal and I had some special needs so with just a little bit of module coding, I was able to piece together a fully automated sales and checkout system that requires a webform to be completed (EULA in my case), handles payment via paypal and provides the customer with access to everything once the payment is completed. This article will outline how I did it.

A Main Loop Suitable for Stable Animations

Programming

I was recently asked how to have objects that animate themselves (change frames) in a stable way that isn't dependent on the FPS or lag of the device. There are many ways to do this but I have a simple one which uses the difference between the last tick and the current tick to count down. My example is in Java and is suitable for most games. The first step is to use a main loop which gives the updates that info. The best way to do this is to give every thing that is updating the exact same time information and have them all use that.

Choosing a President by Trusting Celebrities and Public Figures

Programming
I was at dinner with a few people some months ago when we got to talking politics.  Rather than discuss the people and the issues though, we ended up talking about the process by which people select candidates to favor.  One of the people said that his mother always picked her candidate not by reading about their position on issues or their history but instead by asking her friends who they are voting for.  We joked that this person's mother is simply using collaborative filtering to get a good recommendation.  Then we asked the question:  Why isn't this process automated?  Now it is -  The Election Recommender.  We originally had only joked about using celebrity endorsements but the results have been very interesting so far.  If you're satisfied just trying out the site, go ahead, otherwise read on for a more detailed explanation.

Object Oriented Programming Explained - Part 2 - Polymorphism

Programming
Wikipedia defines polymorphism as "the ability of objects belonging to different types to respond to method calls of the same name, each one according to an appropriate type-specific behavior."  There is nothing too fancy about polymorphism other than it's name.  All it means in layman' s terms is that you can define some common behavior for multiple types of objects and have a common codebase which may or may not care about the different variations on a type.  A good analogy would be the biological taxonomy system.  You may remember this from high school.  It has Kingdom, Phylum, Class, Order, Family, Genus and Species.  If we were to model all living things according to their taxonomy, then we could have software which behaves much like a dog kennel.  The dog kennel takes domesticated dogs.  There are many specific breeds of dogs but the kennel knows that any domesticated 4 legged dog will do and will be compatible with their kennel.  We could say this dog is polymorphic in a way.  Not only is it a domesticated dog, but it's a carnivorous canine which is an animal.  Does our software support all animals?  Maybe.  If so, this dog would work there too.

Object Oriented Programming Explained - Part 1 - The Basics

Programming
Object Oriented (OO) languages are a staple of the development community, however many people continue to argue against them, citing that they are inefficient, useless, confusing and unnecessary.  There are many real benefits to using OO even for very small projects.  It does require a different mode of thinking though to convert from a purely procedural environment into an OO one.  In this article I will show some of the values added by implementing using OO designs and what is saved in the long run.

How to write a brute-force password cracker

Programming
If you have access to a password's hash and salt, if applicable, a brute force attempt to crack it is a guaranteed method if you have the CPU cycles available to compute it in a reasonable amount of time.  Unfortunately, guessing every single permutation of characters takes exponentially longer with the length of the password used so often times you are facing months if not years of processing time on a single PC.  While there are methods to distribute the work across multiple PCs, I am only going to go over a simple brute force algorithm and will hold off on the distributed processing model for a later article.

How to start writing software: web applications

Programming

Almost anyone can write little scripts to do simple tasks or write little code snippets that print hello world endlessly but to actually develop a really useful application requires a little more time and knowledge. I've put together a step-by-step guide for aspiring programmers to follow that should help fill in the gaps with their new programming venture.

How I became a professional software developer

Programming

Many people, in their quest for a new vocation, have asked me how I've managed to land a successful software development career without proper academic background or training. While I feel like I've known how to write software my whole life, there are some key steps I took to overcoming obstacles, learning new languages, understanding new concepts and building a portfolio capable of landing you in a new career.

Syndicate content