Introducing NoteForge Hammer 2.4

In 2007, I started putting my marginally-useful programming skills to use building a simple Content Management System (CMS) to manage my website, similar to Drury’s CMS (named, originally, DCMS). As my programming skills improved, the CMS grew, adding modules for composition management, event notification, invoicing, and something called “Opportunity Organization” (which is directly responsible for my increased performances in 2012) among others.

The original simple CMS has evolved into Hammer, which is both a Composer Management System and a platform for building similar applications such as Keys (for private studio management), DAVID (Document Management), and a few more starting in 2013.

Today, that system, just shy of its 5th birthday, was upgraded to version 2.4 in what is the largest cosmetic and backend upgrade of the system to date. Here’s a brief look at some of the new features.

Improved Navigation

One of the complaints about Hammer 2.3 was the static left-side navigation. On modules such as opportunity organization, the user was forced to scroll up to access the main menu. This has been completely rewritten in Hammer 2.4 with the change to the Twitter Bootstrap framework with CSS3 Microsoft Modern Buttons styling. The navigation stays at the top of the page, and divides modules by category.

Smart Buttons

Another complaint of 2.3 and previous versions was unstreamlined functions. After creating a new item, the user would have to scroll up to the menu, click the correct module, and then click a link to create a new item. While not annoying for a few items, this becomes tedious when inputting a month’s worth of invoices. This has been fixed with the addition of New and View All buttons when accessing a module that allows new items.

User Menu

Building different applications on the same platform (or at least, this same platform) means that all applications share a codebase and a user database, allowing one Hammer account to access all of the applications. The new user menu allows for fast switching between Hammer applications.

Account Management

The addition of multiple applications to Hammer necessitated a rewrite of the user and configuration modules, and the creation of a permissions database. These are all controlled via the new Account application in Hammer.

Improved Search

I finally rewrote all the code to make searching possible (and useful)

UI Improvements

Like these buttons:
And these forms:

Hammer now has a consistent look across all applications, and the CSS probably sucks less.

Completely Rewritten Code

Every module in Hammer has been recoded. All of them. Every single line. While developing DAVID (Digital Access to Vanderburg Internal Documents. Yeah, I know. It’s a fantastic name) I discovered a better way of coding the modules that use 25% of the code I was using before. As in, a module with 800 lines of code can be done in just 200 lines. It’s far more streamlined, and easier to add fields.

Proprietary Hashing Algorithms

Passwords and other hashed information (such as invoice access numbers) are calculated via a new proprietary hashing algorithm.

New Lemon Scent

This might be false.

So yeah. That’s what I’ve been doing with all my time when I’m not writing music. And now, off to build more things.

Decorative element

Slovenia (finally)

I said I'd do this a couple of months ago, and I finally am. This is my account of the trip to Slovenia (finally).

So, I hadn't flown since like May of 2001. And I'd never left the country. Not to mention that I don't speak any foreign languages with any accuracy, so I was a bit, shall we say, apprehensive about the entire idea of getting on a plane (and then another plane, and then another) and going to a country that speaks a language that I don't. But nothing worth doing is ever easy (or, if this experience serves as an example, cheap), so fellow composer Dexter Ford (who was also presenting a work in Ljubljana) and I booked our flights, and left the country.

I am not convinced the plane that took us from Oklahoma City to Chicago was actually a plane at all, but rather a large bus with wings taped on. For starters, it took so long to taxi that I was convinced that the plane was going to attempt to drive to Chicago. But eventually we made it there, changed some money to Euros and Francs, and before long we were on a significantly larger plane, bound for Zurich. Eventually. As in, 14 hours eventually. I didn't get much sleep personally, thanks to the excitement of it all and the in-flight entertainment system. We finally Landed in Zurich around 10 am for a five hour layover before finally getting on a plane for Ljubljana, which was by far the best flight of the trip. Probably due to the fact we were flying over the Alps. Which are much larger close up.

2012-09-09 10.15.38

We landed in Ljubljana Sunday night, found a shuttle to take us to our hostel, and had our first experience with Slovenian drivers. I think I had a more accurate experience than Dexter, since I was riding shotgun and OMG DID WE ALMOST HIT A CYCLIST!?


(We didn't actually hit a cyclist. Though I'm not sure how). We made it to the hostel with no problems, other than we had to pay in cash for the entire stay (“Where's an ATM? And how much is that in real money?”) And then we tried to make it to the opening concert of the International Computer Music Conference 2012. I should probably mention at this point that the ICMC was all over Ljubljana. There were 3-4 venues all over town. None were particularly close to each other. So after roughly 30 hours of travel, we dropped our bags off at our hostel and armed only with a roadmap (in Slovene) we attempted to walk to Kino Šiška. I shouldn't say attempted, we found it…eventually.

2012-09-12 06.13.31

This is the same venue that would host my international debut the next day. But before that, we had to make our way back to our hostel. In the dark. Have I mentioned that the only map we had was in Slovene? “What street are we looking for?” “I wish I could tell you. I really do. It has a lot of consonants.”


The next morning we made our way to the Stara Elektrarna (the old power plant) which had been turned into a gallery/performance space, for registration and picking up the program/nametags and the opening paper talks. Luckily this place was far closer than Kino Šiška was.

2012-09-12 18.04.14

I'd have to check, but I think the fact that they listed my publishing company makes me totally legit now. Sweet. Anyway, after that collection of paper talks, we went to a Live Coding session at DDT, a seasonal hostel a few blocks from Starna Elektrarna. And after that, Dexter, Andrew (Lambert, whom we had met at the previous session), and I went for lunch at a place that I can only describe as part diner and part coffee shop that didn't sell food. I hope that is as complicated for you as it was for us. After that I headed to Kino Šiška to check out my piece, only to find out they didn't have a complete version somehow. So we postponed that for Wednesday, and I walked to Španski Borci in time for the keynote by Seth Kim-Cohen, who spoke on non-cochlear sound art. Dinner happened after (where I discovered what a kebab is), and then back to Kino Šiška for the evening concert. There were late-night concerts that happened later, but I went back to the hostel to work on Pipe Dreams and, you know, sleep.


Tuesday was the day that we discovered Ljubljana's bus system. I'm from the midwest, okay, I didn't realize that public transportation was a useful thing. Tuesday was a lot like Monday, only with less travel time since we were no longer walking. The morning started with a paper session on Analysis/Synthesis, which was pretty great and included a presentation by Richard Dudas (who is kind of a big name in the MaxMSP world). I roamed around part of the old town for a while and had lunch at–where else–McDonalds. Just to see if it was the same as back home (it was). That afternoon I attended an improvisation paper session at DDT again, and headed to Španski Borci for the evening's afternoon concert/lecture. Dinner that night was at an open-air traditional Serbian restaurant, Gostilna Dubočica. The evening concerts were once again at Kino Šiška, and once again I skipped the late-night concerts in order to work on homework.


Wednesday morning started with a session on computer interaction, where Andrew had his paper, “A Stigmergic Model for Oscillator Synchronization and its Application in Music Systems.” Then I hopped on a bus and went over to Kino Šiška for the performance of Creatures from the Black Bassoon in one of the listening rooms. The listening rooms are set up to where people can come and go as they please, but my piece was well-received I wish that I could say that I went to the afternoon's paper sessions, but instead I spent a good chunk of the afternoon exploring the old city. Ljubljana is an eclectic mix of traditional, old European buildings, and Cold-war era eastern-bloc style buildings. I mean, you'd be walking around and find squares like this:

2012-09-11 06.55.46

and then you'd cross the street and find all of these buildings from the 1960s (which I didn't take a picture of).

Oooh, also, there were dragons. Our hostel was just down the street from the Dragon Bridge.

2012-09-10 07.26.28

After exploring, I went to the afternoon concert at Kino Šiška, but left early so that I could make the 6pm tour of the Ljubljana castle. Which was pretty epic. It's built on top of a hill in the southern portion of the old city, so the views were spectacular.

2012-09-12 12.06.54

This is my desktop background at work. Note the big pink church in the left center of the picture. That's the same church which is on the left side of the picture above the dragon. Also, I'd happened to pick the castle tour that serves champagne at the top of the tower. Yeah. I drank champagne on top of a castle. And then I went back to the hostel and finished writing Pipe Dreams. Overall, a good day.


Thursday was a very long day. Dexter was to perform his piece for voice and live electronics, Wall, and so we went over to Španski Borci for a rehearsal. Which went on. And on. And on. Mostly due to there being some miscommunication about what equipment we had, or didn't have, or something. After working on a number of solutions for Dexter's piece, we found one that worked, and somehow in the process I convinced the soundguy that I knew how to do things. So whenever there were problems during the concert (and there are always technical problems during computer music concerts) he would come up to me and ask for help. I'm pretty sure he only woke me up once. (um, jet lag? Or boredom? You be the judge).

2012-09-13 09.50.22

This concert was probably my favorite from the entire conference. It was just full of good stuff. Also, lunch that day was at a place named Dok 19, which had a selection of burritos, pizzas, pasta, steaks and a full English breakfast. I had a Slovenian Quesadilla. This was by far the strangest thing I ate while in Slovenia. I vaguely remember going to the evening concert.


Friday was mostly travel. Get up early (or rather, don't go to sleep), catch the shuttle at 6am, arrive at the airport at 7, depart at 8, and then hit Zurich (again) and Washington DC before finally arriving in Oklahoma City at 8pm.

So overall, it was a blast. The conference was alright, but the travel and the getting to see new places was fantastic. The language barrier wasn't nearly the problem I feared it might be (the majority of people are bilingual, and Coca-cola is a word in any language). Perhaps the most interesting part was how…not abnormal it felt. I didn't feel out of place. (well, unless I was wearing my OU sweatshirt). It was a great time, and I look forward to going back someday.

Decorative element
Kyle Vanderburg