Archive for the ‘work’ Category

At work, we have a pretty distributed team. There are team members across the US, in Canada, the UK, the Czech Republic, and Israel. Even though we are spread out, the team interacts very well:

  • There are conversations via email, via IRC. Team members are good about communicating that way so everyone is in the name the room.
  • Collaboration tools like etherpad allows the team to edit documents as if they are in the same room.
  • Code sharing via git, github, etc allow for code reviews by peers across multiple time zones

All of this means that, although distributed, the team knows each other very well. They communicate often, and provide better code because of their collaboration.

A while ago, one one team, we started to use Google Hangouts for our Friday Scrum calls. As much as a pain as it was to get going the first week or two.. this has been a huge improvement for morale and general team dynamics. Being able to see folks faces, even if only for 10 minutes every week, really seems to bring the team together. Yes, it forces the remotees to wear pants onc a week. But, I think it provides a bit of that “being in the office” which the non remotees get just because of there they sit. I have spoken with other teams who are using this, and they all agree on the benefits.

So, for anyone with remote teams.. especially if you are using SCRUM  or another agile process. Look into Google Hangouts. I guarantee the team will appreciate it.

Latest Release of Candlepin

Posted: August 30, 2011 in candlepin, geek stuff, work

We continue to use Scrum at work, and it is working very well. The team is able to work very independently, and very quickly. We continue to roll out new features every three weeks.

Version 0.4.11 is the latest release which adds partially subscribed logic, activation keys, and lots of additional features.

Please come on bye, and help out. You can find us at http://candlepinproject.org.

Good blog artcile on adding search to rails apps. Used in Foreman, soon to be used in Katello and Headpin.

http://scopedsearch.wordpress.com/2011/07/11/adding-search-to-an-activerecord-rails-model/

Great Summary of Using Foreman

Posted: June 27, 2011 in geek stuff, work

This came across today, great summary of setting up and using The Foreman. http://engineering.yakaz.com/managing-an-infrastructure-datacenter-with-foreman-and-puppet.html

As a followup to the Candlepin Post.. we have just opened up the larger project for Open Source Systems Management. The project is called Katello. The name rhymes with Jello, so that should help. The goal of this project is to bring together Content Management, Subscription Management, and Configuration Management.

If you are interested in participating, we would love the help. Come on bye, check it out, and say hi!

At work we have been doing alot of development around Software Subscriptions, and how to represent them to a machine as a collection of Entitlements (what a machine is entitled to have or do). It is a FOSS project which we have been working on it for a while, but have finally hung out an offical shingle. You can checkout the website at candlepinproject.org. The name is based on a place up near our offices in Westford. It is called the Bowladrome. The folks came up with the idea while bowling.

Tech wise, it is a pretty interesting project. Java Stateless App Server using Guice. It exposes a REST API provided by RESTEasy.  It has  Rails 3.0 front end, and some linux clients which are written in Python. All we are missing is Erlang and we would be all set.

Come on bye, check it out. The project is open and is being actively developed. If you work in and around software subscriptions we would be interested in your opinions.

 

If you write a framework, please do not use private. You may think that you know how I am going to use it. I promise, if it works as it should I will not try and override the basic functionality. However, if I am looking at the code to know it is private then I have a use case you did not expect.

My current example is rails active resource. This is a great framework if you are planning to use it to talk to another rails app. If your url does not end in .json then you have to override / reimplement many high level methods because of one or two private methods.

I know they teach you this in school. I know it makes you feel smart. Stop it. Private methods makes your frameworks less usable and less extensible.

I have moved the java bindings for libvirt up to 0.8.1. It is mostly cut and paste code, but the test driver does not support some of the new features so I would appreciate if someone could bang on them a bit. Specifically, I would like to see someone try out:

Snapshots
Streams (Callbacks in particular)
Secrets

I have put an SRPM out at [1] and a compiled jar at [2]. You can always clone the repo at [3] and build it from there.

Thanks!

[1] http://bkearney.fedorapeople.org/libvirt-java-0.4.5-ALPHA.fc12.src.rpm
[2] http://bkearney.fedorapeople.org/libvirt-0.4.5.ALPHA.jar
[3] http://www.libvirt.org/git/?p=libvirt-java.git;a=summary

We have been playing alot more with Rest at work, and we are seeing that there is alot of docs on how easy it is to spin up a REST interface. However, there is not much on how to make them good. Fortunately, I work with alot of smart people we can have good discussions with. Bill Burke has put up the results of one of the discussions on a good way of modeling state transitions on rest. Check out his post

Rest, I dont think I get it

Posted: March 1, 2010 in geek stuff, work

I sent this as an internal email.. but figured I would post the question as well. File this into the “I dont get it” category. Not as bad as Google Wave, but close.

So.. I hear that Rest is a panacea, but mostly because it is “Rest not SOAP”. I actually understand many of the benefits that REST is gives you:

1) I can use a simple http client to access resources, therefore it is easier to adopt.
2) I inherit alot of the WS-* enhancements from the underlieing http transport, so the frameworks are lighter weight.
3) The ability to use the service both by a client and a browser.. mashups become easy.

What I keep getting hung up on is the absence of a formal description of the interface. I see WADL, but whenever I dig into this it seems to get brushed aside as a nuisance. If i want to write typed clients, then I need to have some formal contract of what can be passed in and what is returned. This contract seems to be what alot of the cruft around SOAP is for. Is there something I am missing with this? The answer the books/articles seem to give is “who needs a formal spec, it is all URI’s”. This tends to be a load of hooey, since some clients (rails in particular) do not handle nicely objects of the same type with heterogeneous data sets.

So.. it seems like Rest (which is not SOAP) makes it easy for the easy clients by skimping on the tools for the more complex clients. I can easily do jersey -> jersey, and I presume Resteasy -> Resteasy. But w/o that neutral definition.. cross implementation clients (robust ones) are actually harder.

Am I missing something?