Not Dead Yet


Yep. I’m still working on GlassCalc 2. Here’s what’s new:

It won’t be called GlassCalc

I don’t know what it will be called yet, but glass is no longer prominent in the UI, so I don’t think it should be prominent in the name. Please tell me if you have ideas.

I know what it’s going to look like

Here’s a mockup of the new UI. (You’ll need to use Opera 15+ or Chrome to get anything other than a garbled mess.) In general, all of GlassCalc’s features are there, just in different places.

New UI stuff:

  • Clicking the deg/rad button in the upper-right toggles between degree and radian modes.
  • The “decimal” dropdown in the upper-right changes the default output format. You’ll be able to choose from decimal, scientific, fraction, hexadecimal, octal and binary.
  • The interface is now broken into tabs.
  • Menu gets you to all of the settings that you shouldn’t need to change often.
  • Calculate is the main view. It should be pretty obvious what this one is for. The new layout is inspired by Soulver, and anything that can be evaluated without changing variables will be done as you type.
  • Copy displays the calculator history as plain text, so you can easily copy any section of it.
  • Graph lets you graph functions. This one might not make it into the initial release.

Things that are the same, but different:

  • The input box at the bottom is gone. The calculator history itself will be editable.
  • The variables panel only shows user-defined variables and functions now. Built-in functions and constants will be found in a help window, which I haven’t designed yet.

How much is done?

  • The UI design
  • Most of the parser (I’m using Irony now)

How much isn’t done?

A lot. Don’t expect it to be done soon.

  • A few parser features, like unit conversion
  • The interpreter
  • The extensions system
  • An initial command line UI
  • The Windows UI

Currently, a Windows 8 UI isn’t possible because the Windows 8 API lacks a few features used in Irony. It might be possible to write replacements for those features, or modify Irony so it doesn’t depend on them though.

Also, since nothing in the parser/interpreter should be Windows-specific, it might be possible to get this running on Mono. I won’t be making UIs for Linux or Mac, but the command line version should run. I plan on making everything open source once it’s mostly functional, and I certainly won’t stop anyone from making UIs for other OSes.

New UI for MotioninJoy


If you use MotioninJoy to connect Playstation 3 controllers to your computer as gamepads, then you are probably well aware that the configuration utility is far from pretty or user-friendly. I just finished rewriting the UI to not suck. Check it out at the link below, then come back here to tell me all the things I broke so I can fix them.

MotioninJoy UIRewritten, offline UI for the Playstation 3 gamepad tool, MotioninJoy

%AppData%: Use it.


Dear developers of cross-platform software, I love your software, but there is one thing about Windows you need to learn:

On Linux, application data goes in folders in your home directory. These folders are named after an application and preceded by a period. On Linux, folder names which start with periods are hidden. I don’t see hidden folders, so I don’t see all the config files. I am happy.

On Windows, application data goes in the %AppData% folder, or for large data files, the %LocalAppData% folder. These folders are hidden by default. Config files don’t clutter up my home directory. I am happy.

Here’s the problem: on Windows, application data does not go in the home directory in folders named after applications and preceded by periods. On Windows, folder names which start with periods are not hidden by default. Furthermore, the home directory is not the appropriate place for config files. I see lots of dot-folders cluttering up my home directory. I am unhappy.

In my crusade to put things where they are supposed to go, I have learned a couple things:

  • Some applications have config files which let you change where they put their config files. Others use environment variables. I will list the modifications necessary to fix certain applications below. If you have a fix for an application I haven’t listed, please tell me in the comments and I’ll add it.
  • Some applications are beyond help. In this case, you can hide the files yourself from a command prompt with the following command:
    attrib +S +H "file or folder to hide"

Android SDK

Set an environment variable named ANDROID_SDK_HOME with the value C:\Users\USERNAME\AppData\Local and move the .android folder from your home directory to the local appdata directory. If there are any .ini files in the .android\avd folder, open those and check for any paths that need to be updated.


The newest version of Netbeans finally uses AppData! For older versions, open C:\Program Files\Netbeans\etc\netbeans.conf in a text editor with admin rights (the actual directory may depend on your version of Netbeans). Change the value of netbeans_default_userdir and add a -J-Duser.home property to netbeans_default_options like so:

# ${HOME} will be replaced by JVM user.home system property
# Options used by NetBeans launcher by default, can be overridden by explicit
# command line switches:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true -J-Duser.home=C:/Users/USERNAME/AppData/Roaming/Netbeans"
# Note that a default -Xmx is selected for you automatically.
. . .

Flickering City


There is a wrong note in the piano part of the score, but I can’t fix it because I lost the Lilypond source. I fixed the error in the piano version’s score.

Download MP3 | PDF score

Fantasy Dance


Fantasy Dance is a fairly liberal arrangement of a piano song of the same name by Robert Schumann. The opening is a paraphrase of the original piano piece. The ending sounds like Halo. I had fun with my orchestral sounds with this one.

Download MP3