## Concise Implementation of Minimax through Higher-Order Functions

The Minimax algorithm is the core of several game-playing AI for making decisions on the best move. This algorithm finds the best move for an AI on a two-player, combinatorial game state on games such as Checkers, Chess or Othello. In this post, I assume that the reader is familiar with the algorithm and its [...]

## MinDispatch: Event-Driven Framework In Java Part 2

From the last post in this series, we developed a fixed, event-driven chat simulation. In this post, we will extend this example by refactoring. The objective of this tutorial is to teach effective design patterns in an event-driven model. First we will begin by designing the structure and behavior of the user and chat to [...]

## Partioning Discussion Sections for Lecture-Hall Sized Classes

Eric Hennigan had recently pitched a new partitioning problem to ACM: partitioning his discussion sections among two TAs such that students are equally distributed to each TA. Although the problem may be trivial to do by hand, it’s easy to decompose into discrete mathematics, and therefore, easy to analyze.

## Writing a Lexer in Java 1.7 using Regex Named Capturing Groups

One of my favorite features in the new Java 1.7 aside from the try-with-resources statement are named capturing groups in the regular expression API. Although, captured groups can be referenced numerically in the order of which they are declared from left to right, named capturing makes this more intuitive as I will demonstrate in the [...]

Posted in Ingenuity | | 3 Responses

## Round-Robin Scheduling Algorithm for Group Looting

In my previous post, I mentioned the Round-Robin Scheduling algorithm which was an alternative solution to the Josephus Problem. Although the algorithm is slow for the Josephus Problem, it excels at fair scheduling; so, I’ll describe how the Round-Robin Scheduler can be used to equally distribute a finite set of resources such as Group Looting [...]

## A Dynamic Programming Solution to the Josephus Problem

I found an interesting problem in the book Data Structures and Algorithms in Java known as the Josephus Problem. In the book, there is a naive solution using the Round-Robin scheduling algorithm; however, I considered dynamic programming to solve this problem discretely.

## Bypassing UCI Resnet’s Cisco NAC Appliance for Windows Users

On a school night, homework piles up, stress accumulates and the Cisco NAC Appliance denies you Internet Access because “your virus definitions are out of date.” This obnoxious, little appliance consumes precious time from college students for trivial problems such as Microsoft updates. To bypass the Cisco NAC Appliance, simply change your user-agent on either [...]

Posted in Ingenuity | | 2 Responses

## MySQL Database Creation for Web Hosts on Ubuntu 11.04 using Python

Following up on my recent studies with Python for system administration, I learned to handle database creation through Python. Database creation and MySQL user management are common tasks as a web hosting provider because many public websites use MySQL. Most web hosting providers already enable the creation of databases through an interface but I’ll focus [...]

Posted in Ingenuity | | 1 Response

## Creating Simple File Templates in Python

I manage hosting for all sites networked within MetaZaku but the servers themselves are unmanaged; thus, I must manually configure all hosting accounts. Administrative tasks such as this become tedious. We should automate it using Python.

Posted in Ingenuity | | 1 Response

## Overcome DNS Propagation Time with Hosts File Hacks

Many new sites joined the MetaZaku Network and many of them migrated servers. Standard migration routine: Copy all files and change the nameservers. Unfortunately, DNS propagation recommends at least fourty-eight hours (two days) before the changes are seen by all regular visitors. Developers won’t be productive for two days. Fortunately, we can quicken the propagation [...]

Posted in Ingenuity | | 2 Responses