Category Archives: Personal

Juju in the cloud with charms

I’m doing something of a tour of the in-house PaaS world at the moment. And in my quest I stumbled upon Juju, which at first seemed like a PaaS solution to me. It is not. 🙂 I just found the concept interesting so I’ll do a short write up.

It can resemble a PaaS in many ways, but it is also different in certain areas you would expect from a PaaS. I’ll get back to that.

I have only done some basic testing of Juju, so let me know if something is off. This is just an initial summary of my thoughts.

The Platform

Juju is a tool for automation of provisioning and deployment tasks from Ubuntu. It seems to have been around for a couple of years, and they just recently launched the Juju Charm store. Which is awesome. It is a flexible solution, but also quite low level. You can check out this post for more details around the launch and thoughts about usage .

Main concepts

A Juju Charm is basically what you deploy in Juju. You can find a list of pre-existing charms at (http://jujucharms.com)[http://jujucharms.com] . It is just a package of files where some names have special meaning (comparable to DEB or RPM in some ways) and contain scripts or files that contain meta data. metadata.yaml is the descriptor for the package and Hooks are specially named scripts that will be triggered at different times in the life cycle. The usual ones are start, stop and install. The scripts can be written in most “executable” languages in Linux meaning Bash, Python etc.

All features of Juju are deployed as charms. So wether you would like to provide MySQL to your applications, or deploy your own Java application it is deployed and built as a Charm. By default Juju orchestrates the platform beneath (MaaS or Iaas) so that each Charm is deployed to a separate machine/virtual machine. Now that is only half right; as you can also add an extra unit to a deployed Charm which also becomes another machine. This is the way you scale in Juju.

When you need to use MySQL from an application you tie a relation between them. The same goes for using the HAProxy in front of your application. When you tie a relation you can use hooks on either side to perform operations. So when you add a relation to HAProxy, the proxy is updated with the address of the web application to serve. The same relation-hooks will be triggered if you add another unit to the web application (scale out).

If you deploy MySQL in three units that equals three VMs on Amazon. This makes it a bit slower at scaling out than other solutions where they utilize free resources on (bigger) already existing VMs.

Getting started

It is quite fast to get started on AWS. It is just an easy install via gems, and a bootstrap command. It bootstraps a single node for control and creates an S3 bucket for state. You can find a quick and easy getting started guide here. Nodes are not provisioned before you deploy each charm. This makes it a bit slower in deploying the actual application, but the boot up time (plus whatever you need to install for that application) for a new VM isn’t too bad actually.

The whole deploying a Charm process is a little too quiet, and I can’t find a way to make it more verbose. You can peek into the platform with juju debug-log, but it is still hard to debug failing relationships.

The concepts seem flexible, but basic. Juju doesn’t monitor and keep your Java processes alive like most PaaS solutions would. This goes for both a node that goes dead or a process that dies. I do think Juju could benefit from some more monitoring and recovery even though it’s not meant to be a PaaS.

My thoughts

I find the concept of Juju quite intriguing, and it is very flexible. You can use it as something to deploy your Java application or you can use it to deploy an Openstack IaaS. The relations hooks is a good concept, and the ease of getting started is one of the best I have experienced for this kind of product.

The number of charms available is limited, and the quality varies. I tried some charms, and while they seemed to deploy correctly I could not get stuff really working (some worked). I tested WordPress, MySQL, HAProxy, Gitlab, Openstack and Jenkins. So good concepts, but so far it seems a bit lacking in execution. It really is easy deploying all those services, so if the guiding/installation/implementation worked it would probably rock.

The relation hooks are a quite good way to handle dependencies and relationships but I really would like it to install and configure MySQL as well when it is actually required for WordPress. Right now this is three separate commands. This is probably because they have a concept where the dependency can be satisfied by several products (DBs in this case), but for ease of use it should be possible to specify a default that is set up automatically if nothing else exists.

You can also combine Juju with something like Puppet easily, but it will probably have a much smaller part to play as Juju essentialy focuses on small use-and-throw VMs. There is an addition called Jitsu that lets you deploy multiple Charms on fewer machines. But I actually think that would move Juju into a PaaS area, and one quite lacking in features (guaranteed isolation, dynamic re-allocation and monitoring).

It does not handle processes and dynamic re-allocation which is an important part of what we look for in a platform, so as a general purpose platform for running Java apps I would not choose it. Most PaaS solutions seems like a better option. I’ll get back to some of the PaaS alternatives in-house in another post. To be fair: Juju doesn’t seem to target that kind of deployment either, it’s just not what I am looking for right now.

It is probably a tool I will keep using though. As I am writing this I am spinning up a Puppetmaster and a couple of Puppet slaves on AWS for some testing. It’s quick and easy, and I hope the number of charms increases moving forward. I´ll keep checking back on this one as a tool in my toolbox.

Spotify tips and websites

Spotify has been released in the US, and I´m really hoping for their success. I´ve been a proponent of Spotify since the very beginning, and cheer them on for pushing real change in the record industry. As the US is coming along I just wanted to share some tips and sites I´ve found that makes the experience better. The client is super for the features it implements, but lacking some features. Luckily they´re pretty open, so it seems like it´s easy for others to extend and build on the platform.

Tips and habits

  • Buy premium. Seriously. 🙂 Having all the playlists updated across computers and mobile devices is the killer feature for me. Offline is super if you have data constraint on mobile, or for the rare occasions where you don´t have internet. Yeah, they still occur, and is usually the times when you really miss your music since you never carry CDs anymore. 😉
  • Use the starring feature to collect all your favourite tracks. This is a really feel good list for me that I don´t listen to enough.
  • Create a list that contains one song from each artist that you usually listen to. This isn´t as much a listening list as much as a list to emulate browsing your CD library. It´s much harder to figure out what you should listen to when everything is at your fingertips. 🙂
  • Keep a “new stuff” and “heavy rotation” list. I use this to listen to new music before I really decide if it´s something that I´ll include in my regular listening and library. Trash or move to heavy rotation list based on what has been the longest in your new list (sort on added time).
  • Use last.fm scrobbling. This helps you discover new music, as well as better integration with other sites. You´ll find it under settings.

Useful sites

  • Spotibot.com – Generate playlists from a given artist or your last.fm profile.
  • Pitchify.com – Discover newly released music with great reviews.
  • Songkick.com – Get notifications about concerts from artists you listen to. This is really integrated indirectly though last.fm .
  • Spotify.wearehunted.com – Nice way to discover new music, havn´t used much yet.

Tools

  • Airfoil – Best solution I have found for streaming to multiple sources (in sync). Airport Express isn´t too expensive, and AirPlay is bound to be supported in more and more Hi-Fi devices.

Let me know if you got some more tips or sites, I´ll update as I get them. I really love discovering new music, although i get round to doing it only once in a while. 🙂

Oh, and you can find my Spotify profile at anderssv . Let me know if you need an invite, still got some left.

Essential Android Applications

I have a new post on this. Go here: http://blog.f12.no/wp/2010/08/06/redommended-android-applications/

I have had my HTC Magic for a little over a month eight months now. I’m still satisfied, though I’m contemplating getting a Google Nexus One next year. I’ve updated my apps list below. Not all of them are necessary for handsets like Hero, but I’m still on Magic so I need some extra extensions. 🙂

System

  • PandaHome – Home screen replacement. Gives me as many home screens as I want and a nice dock.
  • Locale – Profiles for your android. Adjusts sound etc. based on location or other parameters.
  • AutoLock – Delays the need to draw your unlock pattern.
  • Useful Switchers – Easy access to switch on and off the things that consume battery.
  • TasKiller – Kill off tasks.

SMS and contacts

  • Handcent SMS – iPhone like SMS handling with bubbles and all.
  • SMS Popup – Popup covering the screen on SMS instead of just the top bar notifications.
  • SMS Templates – Templates for sending SMS.
  • SyncMyPix – Get profile pictures from Facebook as contact photos.

Connectivity

  • Toggle Data – If you don’t have a free data plan, you really don’t want your Android to go checking the net all the time. This lets you turn off and on data usage.
  • Wisync – Automatically turn off data sync when not on WiFi.
  • Wifi Analyzer – Nice to have when messing around with my APs to find the free channels.
  • WeFi Connect – Scan, connect and test open connections in the area until one succeeds.
  • NetSentry – Keep track of downloaded data.
  • Bluetooth File Transfer – Send and receive files over Bluetooth (sadly not standard).

Productivity

  • Share Your Board – Takes a snapshot of your whiteboard, corrects the angles, crops and increases contrast. I mail mine to Evernote for search and storage.
  • Evernote – Capture anything, for ever. It even does OCR on any images so you can search for what you have written.
  • GDocs Notepad – Notepad that Syncs to a folder on Google Docs.
  • Remember The Milk – My essential GTD app. Nice widget for displaying list of current tasks. Only works if you are a paying member of RTM.
  • Thinking Space – Easy mind maps for Android. Syncs to “the cloud”, but no alternative client for editing (yet?).

Media

  • Spotify – Music like I like it.
  • Google Listen – Podcasts
  • Qik – Stream your video live, and store them when you’re done broadcasting.
  • Shazam – Figure out which song is playing on the radio.
  • SnapTell – Snap pictures of videos, books etc. and get online quotes and links to IMDB etc. Also supports bar codes.
  • Backgrounds – Easy way of finding new ones when you get tired of the one you got.

Travel and location

  • Flightstats Lite – Not really a good app (just sends you to the web all the time), but nice shortcuts for getting your flight status.
  • TripIt – Keep track of trips and contacts trips. Nice sync option to have everything on your phone before you leave.
  • Trafikanten – Bus, train, tram and subway info for Oslo.
  • Here I Am – Send your current location via SMS or Mail.
  • My Tracks – Get the tracks and stats from your trip and export GPX file for Geotagging.
  • MyCityBikes – Status for bikes in Oslo and other cities. Lets me find nearest bike, and nearest free slot.
  • Wikitude – Augumented reality and the ultimate show off app. Can also help you find restaurants etc. near by. 😉

Misc

  • Barcode Scanner – Scan barcodes and open in browser or do a search. Eases installation of applications on the links below.
  • Seesmic – Twitter client with twitter lists.
  • Transdroid – Add and manage torrents in a variety of torrent clients on your computer.
  • Brightkite – Location based social microblogging. The best so far. 🙂
  • Bubble – Level anything. 🙂
  • Meebo IM – Connect to just about any IM service, and use the same account as meebo.com.

Anything else I should be using? Let me know. 🙂

Synchronized calendar and contacts

I’m a geek. I’m even a geek that try to stay organized, so I like to know that my data are backed up and available wherever I am. I see I still get some traffic from Google on a post that’s really not relevant any more, so this is sort of an update to that.

Calendar

Google calendar is the hub of my calendar. Even though you don’t really like or use gcal it’s a great hub because there’s support for it in nearly every program that’s available. So from/to Google Calendar you can use:

Contacts

For contacts it has always been sort of separate for phone and mail. With more and more happening on my phone it’s quite relevant to join these two registers. For contacts I guess the phone serves as some sort of hub. I use:

  • Goosync to sync contacts so they’re available in Gmail
  • ZYB to sync and clean up contacts (the merge duplicates feature is pretty nice). ZYB also has the surprising feature of updating your contacts with the latest information from Facebook. This also includes pictures, so suddenly I have avatars for many of my contacts.

I have a Nokia Series 60 phone, but Goosync which is used for both contacts and calendar only requires SyncML so it should work on many phones.

Moving on

As of january 2009 I’m moving on from BBS which has been my current employer.

It has been a difficult decison I really struggled with. BBS is both a good employer as well as a incredibly interesting place to be. The people, products and technologies are at the front of development in the banking sector in Norway, and sometimes also the Java community. I have learned so much, and the spirit and people of the eFaktura department have made going to work something I enjoyed every day.

So now I’m moving on and starting in Capgemini Norway in the position of technology leader for Java. There’s a lot going on, and the people I have met so far have been excellent. I am really looking forward to start as my head has been in two jobs for a little while now. It’ll be nice to have just one to focus on going forward. Exiting times. 🙂

See you in the new year! 🙂

JavaZone 2008 videos online

It’s been a little while since they were put online, but if you havn’t seen it check it out. These are my recommendations:

Check out the rest of the program for more great talks. These were my favourites from the ones I have seen. Should be many more good ones to discover there.

Abstractions always leak

A quote of a quote in a InfoQ article on the release of GWT 1.5:

Key point: GWT gives you a lot of leverage, but it isn’t intended to be a “walled garden” in any way. Abstractions always leak, so it’s better to embrace that fact. We intentionally make it easy for you to punch through the abstractions and get down to the nuts and bolts JavaScript environment so that you can integrate with any other technology you like. That flexibility is a sort of insurance policy for both GWT itself and GWT users: you can be sure that you’ll be able to combine any client-side technology you want with GWT, and we (the GWT development team) don’t feel as if we have to explicitly provide integrations for an open-ended set of things, because you can always do it yourself without waiting on us. For an example of the kind of flexibility I’m talking about, check out Ray Cromwell’s Syndroid work.

This is a key aspect for good frameworks. Not only because abstractions leak, but also because sooner or later someone will discover a bug or a missing feature. Making it easy to fix or extend the framework for those special cases is essential for a good framework to live and to be adopted.

Shorter turnaround with JavaRebel

All of us have felt the pain waiting for the web-container to reload after just a minor change to the code. Well, recently i came across JavaRebel from ZeroTurnaround and they seem have solved our problem! And if you, as most of us, enjoy Spring you’ll also enjoy their Spring plug-in to monitor your context-files.

As they put it:

JavaRebel is a developer tool that will reload changes to compiled Java classes on-the-fly saving the time that it takes to redeploy an application or perform a container restart. It is a generic solution that works for Java EE and Java standalone applications.!

Promise me to have a look at their screancasts (found on the right hand side of the page). They also have a nice list of features and supported JVM’s and web-containers.

They also have a Google group that answers questions you may have.

I haven’t tried it yet but am truely looking forward to it:-)
And if you do, please post a comment and let me know how it went.

Swimlane testing at Eclipse

Found some really interesting stuff about automated testing with a tool they’ve dubbed Swim. It basically uses the tests as online documentation. By abstracting actions to the correct level, and supplying generated screenshots every step of the way, tests can be verified and used as documentation. Through Ole Mortens blog. Check out Jon Udells entry for an explanation.

Incremental migration

Martin Fowler has an article about Incremental migration. Just goes to show that by dividing problems into smaller increments you will get benefits in most situations. It is important to have the mindset to always look at how you can break a task into simpler parts. Not as easy always, but important.