rsync
Switched to using rsync to deploy this blog now. Since I re-wrote the blogging software to generate a simple static html site, I needed an easy way to deploy. I was using a Capistrano-esque method of deploying the entire site to dated directories (‘200801142252’, for example), and then I was simply symlinking the public web directory to the most recent release. This has the benefit of being able to quickly roll-back to previous releases (handy when doing major template changes etc), but having to re-deploy the entire site every time I wrote a post wasn’t really very efficient. So I’ve changed it to use the rather brilliant rsync to maintain the site on the webserver now. From my ruby code, I just shell out to rsync as follows:
`rsync -avzr -e ssh #{LOCAL_PATH}/* #{REMOTE_USER}@#{REMOTE_HOST}:#{REMOTE_PATH}`
This runs rsync in verbose, archive mode, using compression, and runs recursively. It specifies the local path, and the remote path for use over ssh (I was using scp over ssh before anyway). It’ll prompt for the password on the command line (although you could setup and specify a key to use with the ssh connection to avoid that). This solution will then keep the local and remote paths in sync, and will mean I can update the blog much more easily and quickly. Hopefully that’ll mean a few more regular posts coming soon… :-)
For all these times, that we walked away
Bit of a catch-up here, as it’s been far too long since I blogged:
- England are out, and the World Cup is over. The first event left me feeling raw anger towards the Portuguese (who over the years have given me plenty to be pissed about). The second was a rather bittersweet event. On the one hand, I’d far rather see neither France nor Italy win it, but out of the two I would have to have reluctantly picked the aging French surrender monkeys, rather than the greasy match-fixing Italians, to have won it. But the Zidane incident made the entire thing worthwhile, it was pure enjoyment seeing him getting his marching orders, with the classic shot of him leaving the field yards away from the World Cup trophy, combined with the fact than an Italian was for once legitimately polaxed.
- I got me SkyHD installed, and it is sw-eeeet. I can now watch HD sporting events, movies, and other assorted goodies (including alsorts of random documentaries, which I’d never usually watch except for the fact that it’s in HD). The box itself is sleek and chic, and bar a couple of random lock-ups last couple of days, has behaved excellently for a first generation piece of equipment. Oh, and the Sky+ PVR system is fantastic, I forgot how much I missed being able to setup entire series to be recorded with a couple of remote clicks.
- I’m wrapping up the add-in architecture for RIDE-ME. I hope to have it in my branch by the end of this weekend, and then merge it over after then to trunk. We can then test the hell out of it, while the other guys start to write whatever add-ins they can dream up. Eventually, in the 1.0 release, it’ll see the light of day, and we hope to build a nice add-in community around it. Oh, and I’m now hosting all of the resources for the RIDE-ME project.
- Did I mention HD? I’m currently watching Die Hard With A Vengeance apparently in HD (didn’t even realise HD cameras were around back in ‘95), and Bruce Willis never looked so good.
- I’ve been having a lot of fun with the object/relation mapping framework I’m working on at the minute, integrating it tightly with the model-view-controller framework I knocked together. It’s starting to come together, and I’ve just implemented associations in queries (read: joins). I’ve got a reason for putting all of this together, and that reason is almost ready for the big-time, so watch this space…
- I’ve ordered a SleepTracker watch, but there’s no stock at the minute so I gotta wait.
- The new Rise Against album is fantastic, along with the latest albums from Billy Talent and Lostprophets, expect reviews soon
- RubyCLR is superb, I think John Lam might be a genius
Get offensive like Tet
Interesting article from Ted Neward, starting with an interesting analogy, segwaying into a brief history of the Vietnam war, and ending up with the crux of the article being about object/relational mapping, the black art of mapping objects to relational database tables. Interesting concepts and ideas, I’m still reading and digesting much of what the article has to say.
While I’m linking like a link-whore this evening, DHH finally blogs about his ActiveResource sweetness committed to the Rails trunk the other day. His post includes the slides from RailsConf, and the entire concept sparks a load of potential ideas off with me.
Technorati Tags: el, eldiablo, object/relational mapping, objects, database, vietnam, activeresource, rails
Plug In Baby
Here’s a good post from Phil Haack about plugins, and making a plugin architecture resilient to versioning. He presents some good ideas, some stuff worth thinking about in there. I’m thinking about and working on plugins loads at the minute, including working on an add-in architecture for Project RIDE-ME. Reading this post though made me start to question some of the terminology, where a lot of the time I’m using “plugin” out of context. The way I now see it, there are plugins, add-ins, and providers. I’m about to refactor a bit of code I’ve been working on, as it is effectively a provider system, for database and logging providers, however I’ve referred to it throughout as plugins, and I feel this is now slightly out of context…
Plugin: something fairly generic, to be able to “plug in” new components to change almost any aspect of an application
Add-in: something that is contained, used more within rich user interfaces to provide a specific bit of UI content or functionality, much more refined than a general purpose plugin
Provider: some kind of general functionality such as data querying, logging, that can be achieved against different sources, hence the need for differing providers
This is now how I’m starting to formalize some of the terms above, and while almost all of the reflection code remains the same regardless, the design of the architecture depends heavily
on which of the above you are trying to achieve.
Technorati Tags: el, plugins, add-ins, providers, c#, dotnet, .net