Comment

Mahalo Journal: A couple of new additions

You may have already noticed but last week a couple of new features were added to Mahalo Journal:

  • Autogrowing input boxes

    Although Mahalo Journal encourages you to "keep it short and sweet" (255 characters being the maximum for each entry) I still found that there were times when sentences would get long enough that the text would scroll off screen making it hard to see what you were typing. That problem is now a thing of the past as Mahalo Journal automatically scales the size of the input boxes vertically as you type!

    Mahalo Journal - autogrowing input boxes

  • "Recently updated" stars

    Reading other people's entries can be fun and inspiring. However, until last week, figuring out when people were updating their journals could be a bit difficult. Now, if you go to the list of users you will see little stars next to people who have recently updated their journals! Also, if you want to follow someone on a regular basis, RSS feeds are available for all journals by using the "Subscribe" link found at the bottom of each user's home screen.

    Mahalo Journal - recently updated stars

  • Feedback tab

    Hearing from people who actually use the site is a big part of what makes creating it fun! Last week I added a little "Feedback" tab at the bottom right of the site (visible when logged in), where you can write your thoughts or ideas about Mahalo Journal. The posting mechanism is wired directly in to my brain so I promise no comments will go unnoticed! What would you like to see Mahalo Journal do? What do you hate with a passion or think is great about the site? Let me know!

    Mahalo Journal - feedback tab

Comment

Comment

Using Mahalo Journal with Facebook Connect

As some may have noticed I have been secretly testing out integrating Mahalo Journal with Facebook lately and today I am releasing this new functionality for public use! Mahalo Journal

Using Mahalo Journal with Facebook Connect allows you to do some cool new things:

  • Super easy signup & login If you already have a Facebook account all you have to do to sign up for a new Mahalo Journal account is to push the big blue "Login with Facebook"-button and grant permission to connect through Facebook. Your profile picture, name and time zone will all be automagically imported! You only have to verify your username and you're ready to to start using your new account. Subsequently you no longer have to remember a separate password for Mahalo Journal - as long as you're logged in to Facebook (and who isn't constantly logged in to this black hole of a social network...) you can always access your journal by the click of a button! Mahalo Journal - Facebook Connect (4)
  • Posting journal entries to Facebook Signing up through Facebook Connect will automatically enable wall posting to Facebook, so that whenever you make an entry in your journal it will also be shown on your Facebook profile page (this can be disabled from the "Settings" screen for people who just want the ease of logging in that Facebook Connect provides).
  • Mahalo Journal on Facebook
  • I already have a Mahalo Journal, how do I get in on this Facebook goodness? Existing Mahalo Journal users wanting to take advantage of the new Facebook Connect functionality can do so now by going to the "Settings" screen and clicking "Connect with Facebook" to switch their accounts to a Facebook Connect account: Mahalo Journal - Facebook Connect

As usual, any feedback or comments are welcome. Hope you enjoy it!

Comment

Comment

All Sub Delay albums now available as CDs!

With the proof copy of Subsidence having just arrived this morning, all Sub Delay albums have finally been transferred to CD and are available for purchase now! Sub Delay timeline

I find it hard to believe that we have actually been able to complete 4 full-length albums and are now working on our 5th! And all this without ever making a dime...:P Well, it's been a fun ride so far. Who knows, maybe someday we will actually be able to play that concert at Wembley Stadium we have been planning since elementary school.

Sub Delay CDs

In the meantime, the CDs look awesome and are a great way to get a cool Sub Delay keepsake and support us at the same time, so head on over to the album section and grab a disc (or four)!

Comment

Comment

Introducing Mahalo Journal

Mahalo Journal is a new web application I've been working on the past 2 weeks that allows you to keep a "gratitude journal" online. Today, I think it has reached a point where it is ready to be released for public use (although I am still making tweaks here and there)! Mahalo Journal (top page)

The idea for the site came to me after watching this video, where Harvard professor Tal Ben-Shahar briefly mentions the concept of keeping a gratitude journal, and how doing so can have a dramatic impact on your overall happiness.

The idea is simple: Each night before bedtime you type in 5 things, small or great, that you are grateful for. Doing this on a consistent basis will get you into the habit of noticing things that make you happy and gradually shift your focus to a more positive outlook.

Mahalo Journal (main screen)

Having used Mahalo Journal for a while now, "5 items a day" seems to be a good number as there are usually 2-3 obvious things that you think of right away, but filling out the remaining items really forces you to think through your day (and life in general!) and I feel like this process is making me better at finding joy in the small things.

Mahalo Journal (calendar screen)

If you're wondering: "Mahalo" is a Hawaiian word meaning "thanks, gratitude, admiration, praise, esteem, regards, respects" so I thought it would make a good name for the site!

Mahalo Journal)

Mahalo Journal is available now in 3 languages at www.mahalojournal.com!

Comment

2 Comments

Low Ground - Brand new album from Sub Delay released!

Sub Delay - Low Ground After 7 years of silence (well, disregarding the two side projects "Live at Enyen" and "Zonelet") we have finally been able to release our desperate grip on 9 new songs and set them loose upon the world. Here is the track list for the new album:

  1. Sleep in Secret
  2. 100 Thirty Five
  3. 67 Times
  4. Hotand
  5. Smile
  6. Kiddo
  7. Slide Off The Map
  8. Surfing
  9. New Skies

Sub Delay - Low Ground

7 years is a looong time to work on an album, but I think we finally have the "how to make music while being separated by time and distance"-thing sorted now. Anders being based in Denmark and me (Jens) currently living in Japan, the making of this album involved a lot of digital data traveling back and forth over the internet web tubes and a lot of e-mail and skype-meetings. All vocals were recorded by Anders in Denmark and sent to me for further production, with the result that I haven't actually ever met any of the vocalists in person! I hope I will have a chance to put a face to the vocals sometime.

On that note, many thanks to all the musicians who participated on this release:

  • Jana Oberender
  • Marie Raabye
  • Anke Struve
  • Karen Poulsen
  • Joannes Holm
  • Christian Meyer

The album is available as a digital download from www.subdelay.com now so go check it out! CDs are currently in production and links will be posted on the site as soon as they become available.

...and on a final note, we promise, PROMISE, that the next album won't take another 7 years to see the light of day...:P

2 Comments

1 Comment

Wishlist - Christmas 2009

I was asked to put up a wishlist for this year's Christmas so here it is!

  • LiveScribe Pulse Smart Pen

    Livescribe :: Never Miss A Word

    A pen that records your writing as well as sound. Jamesbondarific!
  • Reveal iPhone case (black)

    Griffin Technology: Reveal - Ultra-thin protection from bumps and scratches

    The iPhone looks its best without any cover at all but since I don't want to break because I dropped it or something, this ultra-slim case might just be the thing.
  • Headphones MacStyle Skin (13'' MacBook Pro Unibody/Battleship Grey)

    Headphones MacStyle | MacBook, MacBook Pro, Powerbook and iBook Skins

    This would look great on my MacBook (I hope).
  • Bicycle computer

    Any kind would do really, as long as it is wireless and shows me how far I have gone :P
  • Beatport t-shirt (Size L)

    I Love Beatport T-Shirt | Beatport Brand Shop

    I spend way too much money on Beatport...Maybe I shouldn't be turning myself into a walking advertisement for them?
  • Bicycle pump

    One that works with road-bike tires that is (I forget if they are "French" or "German" or whatever). I have a small one for emergencies but using that every time I need to pump my bicycle tires is a bit of a chore...

Hmmmm....can't think of anything else right at this moment...Except for crazy expensive stuff. Guess I'll update this post if I think of more!

1 Comment

3 Comments

Easy version management for Rails apps using VersionMaster and Capistrano

Working on the new version of subdelay.com I came up with a couple of plugins for Rails that although functionality-wise are dirt simple turned out to be rather useful. Therefore I have decided to open source them on GitHub and also do a little writeup here on the blog. VersionMaster

Sub Delay Version Number

First up is VersionMaster. I needed a simple way to manage a version number (eg. "v1.0.8" etc) for the site, in order to keep track of minor and major updates as I changed things around and added new features. More importantly, I wanted to have this happen automatically whenever I deployed a new release using Capistrano. I first took a look at toland's app_version but it didn't quite do what I needed so I came up with my own little implementation.

Using VersionMaster

Install the plugin using

script/plugin install git://github.com/balvig/version_master.git

The file "version.yml" will be copied into the config directory:

You can edit this file to manually set the version number or use the rake tasks below:

You can also use the built-in Capistrano recipe to update versions when deploying (which is how I use it):

You can then use the constant APP_VERSION in your views or elsewhere to display the current version.

Get VersionMaster from GitHub.

3 Comments

Comment

Sub Delay 3.1 released!

Hurray! The new version of www.subdelay.com I wrote about a while back is finally done. Visually I have kept it in the same style as the previous version so the overall feel of the site should be familiar, albeit with a few notable changes: All music is free

subdelay.com album page

Yep. All of it. Full-length streams and downloadable 192 kps mp3 versions of all tracks are now available for free. Tracks can be downloaded individually or as an album package complete with full-color artwork. I encourage everyone to download and share the free mp3s with as many people as possible! Of course, for those who care a little bit about sound quality, high quality 320 kps and FLAC versions are also available as paid downloads, with CDs going to become available soon.

Blog & Twitter aggregation

subdelay.com top page

Anything posted on the blog, Facebook or Twitter related to Sub Delay will be aggregated and shown on the site so you can also stay up to date with the latest Sub Delay news.

New artwork & albums

Sub Delay in iTunes

As mentioned, we are consolidating all our music under the name "Sub Delay" and the artwork for the albums has been redone to reflect this fact. The two Zonelet EPs have been combined into one full-length album including a new track "Inlet". Also, album covers are now embedded into the audio files so they look great when played in iTunes or on your iPod/iPhone/iThing.

iPhone optimized interface

subdelay.com iPhone interface

I love my iPhone just as much as the next guy so it only seemed natural that the new site should support this format. Accessing the site with an iPhone or iPod Touch will present you with an optimized interface that takes advantage of the device's touch screen capabilities.

No more Flash

A bit ironic given it seems like only days ago I was writing about implementing the site using Flex, but even though a working Flash version was almost completed, after a while I realized that it would be much more efficient to do the whole thing in good old HTML (thus the 3.1 version number).

If you haven't done so already go and check out the new site (and music!) at www.subdelay.com (if the new version doesn't show up at first try refreshing your browser a few times).

Comment

Comment

MapDiary 1.2.2

Version 1.2.2 of MapDiary is now available in the iTunes App Store. This is a maintenance release that resolves some memory issues that could otherwise cause trouble for people running iPhone OS 3.1.

Comment

Comment

MapDiary and time zones

MapDiary now correctly calculates and displays local times based on the actual geographical location of your posts. This feature currently relies on the free Geonames web service which can be a bit unstable at times (a fact I found out the hard way...), thus when this service is unavailable the application falls back on the time zone set in your Twitter settings. Thanks to everyone currently using MapDiary! Seeing posts pop up from all corners of the world on my little app is great fun. :)

Comment

4 Comments

Applying DRY principles from Rails to Flex + Cairngorm

I am currently in the process of re-building www.subdelay.com in order to accommodate some of the changes I mentioned earlier and also to make the site more maintainable and easier to expand upon than the current version. The original site was created in Flash 7, meaning that everything was done in "good old" Actionscript 2. The second incarnation of Actionscript never really had a good structure for keeping code organized and this paired with the fact that I at the time to be honest didn't really know what I was doing and was picking up things as I went has resulted in a...shall we say less than pretty codebase, that wouldn't be much fun to try and clean up and re-use at this point.

Hence the decision to completely rewrite the site, and in an effort to keep things a bit systematic I have been using Flex for the task this time around. Also, while the original site uses PHP as its backend, with all the Ruby work I have been doing lately it only seemed natural to have the new version run on Ruby on Rails.

I am however a newcomer to Flex and have been relying on the book Flex on Railsfor support. The book does a fairly good job of explaining how to plug a Flex frontend into a Rails app, but there is one thing that has been bothering me a bit about the whole process.

Although the book touches upon the virtues of keeping things "DRY" on the Rails side of things by employing "convention over configuration" and making good use of the refactoring techniques that seem so natural when using Ruby, from reading the book it seems that these principles don't apply when writing the Actionscript 3-based Flex code.

In the case of subdelay.com I am using the Cairngorm framework, and from reading through the examples in the book, it seems that the way to do things is to:

  • Create a "delegate" for every resource you have (for subdelay.com this might be "Artists"," Tracks", "Albums", "Cart" etc).
  • Create an "event" for every user gesture/application event ("PlayTrackEvent","EmptyCartEvent","LoadAllAlbumsEvent","LoadAllArtistsEvent", etc)
  • Create a corresponding "command" for each event that tells the program how to react whenever an event occurs (thus we have "PlayTrackCommand", "EmptyCartCommand" and so on)

Now, each of these are represented by a separate file with a separate class definition, and to me this just seems like an unnecessary amount of similar code divided among an unnecessarily large number of files that you have to keep track off for something that seems like it should be much simpler.

The part where it gets particularly weird for me is when creating the delegates. You are basically creating a class for each resource you want to access on the Rails side, but the code in these files end up being almost completely identical since all they do is expose the typical REST-based methods ("index","show","create","destroy","update") for different Rails controllers with only a few variations for the controllers that have additional non-standard methods defined (such as the method "recent" in my case, for loading only the most recent albums). Using subdelay.com as an example you then end up with a file structure that looks something like this:

So many delegates..

This just didn't seem right to me, so I went ahead and had a go at replacing all the individual delegate classes with one generic "RestfulDelegate" class, which works with any Rails-based resource I care to throw at it and contains the 5 basic REST methods as well as a 6th generic method that allow the use of any custom methods as needed.

When calling out to your delegates from a Cairngorm ICommand you would usually write something like

var delegate:AlbumsDelegate = new AlbumsDelegate(this);

and have AlbumsDelegate hardcoded to use the "albums" service. Instead, when using RestfulDelegate you simply write:

var delegate:RestfulDelegate = new RestfulDelegate(this,'albums');

Passing in "albums" as the second argument ensures that the right service is selected (configured in Services.mxml) and therefore only one class is required for all resources exposed in the Rails app, and I don't have to create a new file for every new resource I add. Having the generic "send" method also allows me to deal with situations where I have added custom methods to a controller. So for example the "recent" method found in the AlbumsController can be called in the following way:

public function execute(e:CairngormEvent):void { var delegate:RestfulDelegate = new RestfulDelegate(this,'albums'); delegate.send('recent',{limit:5}); }

I guess I could even have gone as far as to replace all the other methods with this one method to even further reduce code, but for the time being I kinda like the idea of having the basic bread/butter methods hard coded.

It's all very basic but I am wondering, is there something I am missing here? Am I doing something that will get me in trouble later?? :o I realize there might be some sense in having a separate delegate for each resource if you are planning on replacing the Rails backend for that resource with an external API or something like that at a later stage, but apart from that I don't really see the advantage of having to deal with all those files and classes.

I am currently trying something similar to reduce the amount of code repetition required for events and commands, but haven't yet figured out the best way to go about it. Will let that be the subject of a future post I guess!

4 Comments

1 Comment

Swallow's nest

With all the terrible stuff that goes on around the world these days, it can sometimes be hard to see how the words "human" and "humanity" are related, but here is one thing that restores my faith in mankind: Swallow's nest in Tamagawa

...If a bird's nest providing shelter for a couple of newborn chicks is discovered on top of a train station sign - right in front of the ticket machines no less - we don't climb up there and dispose of it. Rather, we let them mind their own business and put up a big notice warning people to "watch their head".

Swallow's nest in Tamagawa

1 Comment

1 Comment

MapDiary 1.2.1

MapDiary 1.2.1 is currently awaiting approval for release in the iTunes app store. Apparently the previous version had some trouble connecting to the internet - sorry for any inconvenience this might have caused! :( The new version fixes this problem and also ensures compatibility with the new 3.0 iPhone OS so here's hoping Apple will be quick with their review process. Scheduled for the next release is:

  • Realtime maps Taking advantage of 3.0's new map functionality to make tracking your location work more smoothly.
  • Embedding Show MapDiary entries within your own blog posts or site.
  • Dates ranges Show logs for a range of days rather than one day at a time, for looking back at say, a longer vacation. (see a screenshot of this work-in-progress functionality below)

MapDiary ranges (work in progress)

1 Comment

2 Comments

Using MapDiary with an iPhone/iPod Touch

MapDiary works best when used in combination with one of Apple's sleek little touch screen devices, since they come equipped with all the basic functionality that makes updating a breeze. MapDiary iPhone app screenshot

Using the application is a simple as it gets: When running the app for the first time, you are prompted for your Twitter name/password. After logging in the main screen is shown consisting of 3 basic elements:

  1. A map, showing your current location as determined by the iPhone/iPod Touch's GPS and triangulation system. You can update your position by clicking the top-left button or the map itself.
  2. An empty frame, that when clicked give you the option of selecting a picture from your archive or taking a new one using the built-in camera to upload along with your message.
  3. A text input box, for typing a short message.

Upon pushing "Send", your location, text, and picture (if one is selected) is uploaded to www.mapdiary.com and subsequently posted to Twitter. The results can be seen instantly:

jbalvigs log for 2009-05-10

That's it! Should anyone be interested the app can be found in the iTunes App Store.

2 Comments