UltraMega Blog

Flavordex 2: What’s New

Flavordex 2 is a complete rewrite of the original Flavordex tasting journal Android apps. It is highly customizable and designed to work well on both phones and tablets, with a UI that adapts to take advantage of large screens.

Instead of separate apps, Flavordex 2 is a single app with customizable categories. It comes preloaded with categories for beer, wine, whiskey, and coffee. You can also add your own custom categories to fit your needs.

The app is available now on Google Play and the Amazon Appstore.


  • Customize categories by adding custom fields and changing the flavor chart
  • Add your own custom categories for any type of product you want
  • Import your existing journal entries from the original Flavordex apps
  • Everything from the original apps, including:
    • The Flavor Chart visually represents the flavor profile of an item as a radar graph
    • Record details about each product including the maker, price, tasting location, date, notes, and more
    • Attach photos to each entry from your camera or storage
    • Sort your entries by title, date, or rating
    • Filter your entries by title, category, maker, location, or date
    • Import and export entries as CSV files
Large Screen Layout

An example shown on a tablet

Flavordex Official Website


Flavordex Tasting Journals for Android

Flavordex has been updated! See this post for details.

Flavordex is a series of tasting journal apps for Android. With Flavordex, you can keep track of each product you try with stats, photos, graphs, and personal tasting notes.

As of today, you can get Flavordex for beer, wine and coffee. More versions are planned for the future.


  • The Flavor Radar allows you to record and visualize a detailed spectrum of flavors
  • Keep tabs on all the stats and details of each product you try
  • Store up to 5 photos with each product from your camera or SD card
  • Rate each product and take tasting notes
  • Sort your journal entries by name, date, or rating


Official Website
Google Play
Amazon Appstore


TempServers Source Code Released

This post is just to announce that I have released the source code from TempServers on GitHub under the MIT license. The link to the repository is below. This code has been sitting here collecting dust, so I figured I should just release it to the open source community. It might contain something useful to someone.

TempServers on GitHub


Creating A Database Connection On Demand

It may be useful to only create a database connection when you actually use it for the sake of efficiency. Here is a wrapper for MySQLi that does just that in the most simple way I could devise. A (possibly desired) side-effect is that this limits you to a single connection.

How you pass in the connection details is up to you. You can hard-code them into the mysqli initialization, put them in class constants, or pass them into a constructor that sets static properties.

 * Wrapper for MySQLi
 * Creates a database connection on demand
class DB {
    private static $db;
    private function connect() {
        if(!isset(self::$db)) {
            self::$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    public function __call($name, $arguments) {
        return call_user_func_array(array(self::$db, $name), $arguments);
    public function __get($name) {
        return self::$db->$name;
    public function __set($name, $value) {
        self::$db->$name = $value;
    public function __isset($name) {
        return isset(self::$db->$name);
    public function __unset($name) {


$db = new DB(); // functionally identical to a mysqli object
Tagged as: , , , No Comments

Create Snake in JavaScript with HTML5 Canvas

Yesterday I had some spare time, so I decided to write Snake in JavaScript using the HTML5 canvas. If anything, this is a good simple example demonstrating a use of the canvas. So, here's a tutorial walking through the creation of the game.

If, for some reason, you are not familiar with the game Snake, Wikipedia explains it:

The player controls a long, thin creature, resembling a snake, which roams around on a bordered plane, picking up food (or some other item), trying to avoid hitting its own tail or the "walls" that surround the playing area. Each time the snake eats a piece of food, its tail grows longer, making the game increasingly difficult. The user controls the direction of the snake's head (up, down, left, or right), and the snake's body follows.

Here is the final product on jsFiddle (click Result to play):

This tutorial will cover:

  • Drawing on the canvas
  • Handling events in jQuery
  • Handling arrays in JavaScript
  • JavaScript math functions

Creating a Twitter OAuth Application

Creating a Twitter OAuth Application | Nettuts+

OAuth can be a tricky concept to wrap your head around at first, but with the Twitter API now requiring its use, it is something you need to understand before creating a Twitter application. This tutorial will introduce you to OAuth, and walk you through the process of creating a basic application.

Read full tutorial at Nettuts+