Software

posted 02/23/08 by Rick Webb

The Barbarian Group makes software for any of four reasons:
  1. First, because we thought of something we could do that would be really awesome and cool, and it just so transpired that we actually knew how to build the awesome thing, we actually had the time to do it, so we went ahead and built said awesome thing.
  2. Second, because we wanted to learn how to do something that we didn’t know how to do before, and figured we’d try to get something out of it. This happens far, far more often than one might glean from this website, because most of the time we try to do this, we do not, in fact, produce a useful piece of software along the way. We do generally manage to learn something, though, so that’s nice.
  3. Third, because we thought it might be of use to our clients in the future, and we are prototyping it for R&D or demo’s sake. We are endeavoring to further explore how technology and interactive marketing might mix. We have a whole philosophy about it. We’ll tell you about it some day. If we were better at marketing ourselves, we would list this as number one on this list because, in fact, it’s the driving reason behind all of this. At least that’s what we tell our accountant.
  4. And, lastly, we perhaps came up with a nifty little app during the course of our lives doing design, technology and marketing work and figured we’d share it with the community. No point re-inventing the wheel and whatnot.

You’ll notice that none of these four reasons is directly related to “making lots of money.” We should probably fix that. We’ll add that to the “to do” list.

Here are some recent posts from our employees about Software:

Gastrodamus for Android

Announcing Gastrodamus for Android

I’m proud to announce the release of The Barbarian Group’s first android app, Gastrodamus. This of course is the Android version of the food truck tracking iPhone app that was released last month. It has all of the same features and food trucks that the iPhone version has, but now works on your Android 2.1+ devices.

My Very Own "Dropbox"

I have a certain… paranoia when it comes to “cloud” services. Especially the likes of Dropbox, iCloud, etc. The services that “just work.” However, I recognize the value of these services and would actually find them extremely useful. So one day I thought to myself, “Man I really need to solve this problem of having files that I need for my personal life tossed all across four (yes 4) computers.” And then I thought, “Maybe I should just give in and use Dropbox…” Of course then I read things like this and this. It isn’t that I have top secret military project files or anything, or that I have a bunch of illegal business goings on that I need to hide from law enforcement, but it is personal information. Stuff that anyone would care to have backed up in a safe, secure location, like banking information, taxes, passwords, etc. Stuff that you would want access to at the drop of a hat from any computer you were on. So…
I’ll make my own dropbox. Using my own server, and free open source software. Here is the process.
First you’ll want to have a server setup and hardened. Hopefully you’re able to do that because the process is too long for this guide. My personal dropbox is made up of 3 pieces of software, git, gitosis, and SparkleShare. You’ll also need to have SSH configured to use authentication keys instead of passwords.
For sake of ease, let’s say we’re using a 10.04 Ubuntu fully updated and patched server. First we want to install git so run:
sudo apt-get install git-core
Now that we have git installed we can grab the latest version of gitosis:
cd ~/

git clone git://eagain.net/gitosis.git

cd gitosis
Now we have the source for gitosis downloaded we need python and setup tools:
sudo apt-get install python-setuptools
And now, from the gitosis directory, we’ll install gitosis:
sudo python setup.py install
Cool. Next we need to set up a user to contain our repos and manage our ssl certificates. This user can be whatever, but for sake of ease in this tutorial we’ll just call it “git.” The home directory can be where ever you choose as well, but again, for sake of ease in this tutorial we’ll just put it in /home/git.
sudo adduser --home /home/git --group --system --shell /bin/sh --disabled-password git
That’ll create the user, the group, and a homefolder. It will also disallow password authentication which means we’ll have to use key authentication. Now we’ll have to add our first public key to gitosis so that we have admin access. First copy the public key of the machine you are working on up to the server and run the following where “my_kefile.pub” is your public key:
sudo -H -u git gitosis-init < my_keyfile.pub
That command will load the git user $PATH (important because we are running the gitosis-init binary) and run the gitosis-init binary as the git user. That will create our first git repo, gitosis-admin, and add our key so that we have access. Now a little cleanup. Every other gitosis install guide will tell you that you need to make sure the gitosis-admin post-update hook needs to be made executable. It has always been fine for me, but just incase run:
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
Alright! That is it for server setup. Good job. Let’s head back to your workstation now. Hopefully you have git already installed on your workstation, but if you don’t head here and download the appropriate installer. Crack open your terminal application and run the following:
git clone git@your.server.com:gitosis-admin.git
This will clone the gitosis admin configuration down to your computer into the directory you are currently in. If you cd into gitosis-admin and have a look around you should see a “keydir” and a “gitosis.conf” file. The keydir stores all the public keys that will have access to your git repositories. The gitosis.conf file is where you set up and configure access to repositories.
First let’s check out how repos are set up. Open up the gitosis.conf file. You should see the default configuration there already, it looks something like:
[gitosis]



[group gitosis-admin]

writable = gitosis-admin

members = nick_macbook
the [group ..] definition is an arbitrary definition, it can be whatever you want. Next “writeable = ... ” defines the name of the repository that is writeable by the group, in the default case the gitosis-admin repo. Finally “members = ... ” defines the keys that are members of the group, they are the filename of the key minus the .pub extension. So in this case I have a file in the “keydir” directory called “nick_macbook.pub.” I’ve made it a member of the group “gitosis-admin” which has writeable permissions on the repository “gitosis-admin” (write-ability implies read-ability in this case).
Now let’s set up our dropbox repo, add something like the following to gitosis.conf:
[group dropbox]

writable = dropbox

members = nick_macbook
Save the file and head back to terminal and run:
cd gitosis-admin

git commit -a -m "added dropbox repo"

git push
We just entered the gitosis-admin repo, committed the changes we made to gitosis.conf, and then pushed them up to the server. By doing that we created a new git repo that will become our “dropbox” folder. Sweet!
There is a lot to gitosis, but just know that you can add more keys to the keydir, then add the file names without the .pub extension to the “members” definition of any group to grant that key access to the group’s repository.
Finally let’s set up SparkleShare. Once you’ve downloaded the app and copied it to your applications folder, fire it up. After you do that SparkleShare will ask you to set up a remote folder. The “Address” will be your server’s hostname, and the foldername will be the name of the repository we just set up, in this case it is “dropbox.git.” As long as you have your keys set up properly in gitosis, when you hit “sync” SparkleShare will create a new directory in your home folder and boom! You’ve got a drop box. Add any files to that folder and SparkleShare will automatically commit and push them up to your remote server. It’ll also periodically pull down whatever the server has that the local working copy doesn’t. Neat eh?
A Couple Notes
You’ll obviously have to configure your firewall to allow traffic on port 22 for this to work. If you’re having trouble pulling down the repo in SparkleShare, did you remember to push your gitosis conf up?

a few SXSW interactive predictions

Curious on what “the next big thing is” at SxSWi? Often, it can be hard to judge before getting there, but after reading what feels like a trillion blog posts these past weeks, I have a bit of an idea on what’s going to pop. Here are some thoughts on things you might want to pay a little more attention to.

Cinder 0.8.1

We officially open-sourced Cinder, our framework for creative coding in C++, to the world three weeks ago. And, as we’ve decided to go with a release early and often style development cycle, today we’re releasing version 0.8.1.
A few of the new features include…
  • MutliTouch – supported with the same API across Windows 7 and Cocoa Touch.
  • MSAFluid – CinderBlock port of Mehmet Atken’s Fluid Simulation. As a bonus for Cinder users, the solver on the Mac benches at 2x the speed of the original. You can see what Robert Hodgin has been up to with this new capability in this video:
  • Audio Synthesis – callback-based audio synthesis API
  • Numerous enhancements – plenty of other new functionality, bugfixes and improvements
To read more about the new features and download version 0.8.1, check out the libcinder.org blog.

Nike Music Shoe

Hell Yes!

Plainview 1.0.173

We just put up a new version of Plainview. This is mostly a bug fix release, focusing on some Flash, kiosk, and bookmark bugs. Saving a new bookmark is now much much faster than in prior versions, a crash some users were experiencing on Flash sites has been resolved, and there is a new preference (actually added a while ago) to have the app automatically return to the start page when in kiosk mode. We’ve also added some visual feedback when a new bookmark is added to keep folks from pounding on cmd-d and not seeing a change unless the bookmarks panel was open.
We do have a lot of plans for the future of Plainview (more on that later) so please keep the feedback coming!
You can download the new version here, or launch Plainview and run the auto-updater.

Flint C++ Tools

There have been a few mentions of our internal C++ library (codenamed Flint) around the web over the last week or two. Over the years we’ve had opportunities to work on some really interesting installation projects and data visualizations, and along the way we decided it would be a good idea to use some common bootstrapping, so that we can get the art side of things rolling a whole lot faster. That bootstrapping has turned into a somewhat larger scale library that makes it easy to do a whole lot of amazing things that used to take us a good deal of time to get working. It goes all the way from simply creating windows and draw-able contexts, to shaders, VBOs, and the once-feared (for me) Quaternion.
At the moment, Flint is very much in Alpha. We haven’t made any plans to release it to the public, but we also haven’t made any plans to not release it either (apologies for the double negative). We should have more news in the upcoming months, as we add necessary features and fine tune everything. We highly recommend checking out OpenFrameworks and Processing if you’re interested in doing high-end graphics or other interactive projects.
Oh, and if we do decide to release Flint, leave a comment and we’ll try to get you on the beta. Again, we still don’t know what the future holds, so no promises ;).

HOWTO: Create a transparent local Apple software update server

If the benefit isn’t clearly obvious from the title, let me explain why you would want to set up something like this in your office network. Bandwidth is expensive. Especially if you need a bunch of it and require a solid SLA. Apple updates can be HUGE; the most recent Mac OS 10.5.7 combo update clocked in at a whopping 729MB. Now imagine you have an office of 20 people all using the same internet connection to download the same package from the same place. Madness right?
They’ve just saturated your inbound link and business is grinding to a halt! If you’re in this position you’re already too late, and you’ll have to make up for it using some fancy QoS rules or blocking traffic from the Apple software update servers all together. Don’t live in fear of the next Mac OS update because now you have time to set up your very own Apple software update server!
Lets get to the good tech bits…