Archive for the 'Computer Science' Category

Behavior of Ant Foraging Algorithms, and their Application to the Knapsack Problem

This is a paper I did for my artificial intelligence class. It’s an area I would like to explore further some time. AI and emergence algorithms fascinate me.

The way the OOP on this turned out was pretty good,  but I think I used too many concrete classes and not enough interfaces. But then on the next java project I did, I used too many interfaces and had too much structure, without enough code. Didn’t follow the PMF pattern ;) . I’ll find a good balance eventually. Continue reading ‘Behavior of Ant Foraging Algorithms, and their Application to the Knapsack Problem’

PHP coders have no class

I started web programming like many others: modifying code packages such as wordpress, joomla, and drupal. I was just getting used to coding paradigms (and have since gone from 20 cents to several dollars of techniques) and was doing more hacking than designing. Since then, I’ve learned to OOP, and have learned its elegance. Sadly, legacy projects that are more procedural have not developed in the same way I have, especially in the realm of PHP.  Andrew Rickmann elaborates:

Andrew Rickmann — WordPress coders have no class.

Although from a code aspect wordpress may be somewhat behind, I find it is incredibly useful and elegant from an interface and usability perspective.

Computer Science Axioms

There are certain principles in computer science that are essential if you wish to be an agile, innovative programmer. I’ve picked up on many of them over the years, although I’m sure there are many more (of varying subtlety) I have yet to learn.
Kevin Kelly learned these when teaching his kids computer literacy (I emphasized my favorites):
  • Every new technology will bite back. The more powerful its gifts, the more powerfully it can be abused. Look for its costs.
  • Technologies improve so fast you should postpone getting anything you need until the last second. Get comfortable with the fact that anything you buy is already obsolete.
  • Before you can master a device, program or invention, it will be superseded; you will always be a beginner. Get good at it.
  • Be suspicious of any technology that requires walls. If you can fix it, modify it or hack it yourself, that is a good sign.
  • The proper response to a stupid technology is to make a better one, just as the proper response to a stupid idea is not to outlaw it but to replace it with a better idea.
  • Every technology is biased by its embedded defaults: what does it assume?
  • Nobody has any idea of what a new invention will really be good for. The crucial question is, what happens when everyone has one?
  • The older the technology, the more likely it will continue to be useful.
  • Find the minimum amount of technology that will maximize your options.

via The Way We Live Now – Home-Schooling for the Techno-Literate – NYTimes.com.