<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>this is stuff i’m working on, including linux &amp; open source stuff, digital forensics &amp; web dev. it’s all my own, personal views and not necessarily that of any other entity i may be associated with.</description><title>seawolfsanctuary</title><generator>Tumblr (3.0; @seawolfsanctuary)</generator><link>http://blog.seawolfsanctuary.com/</link><item><title>RVM + rSpec = Compatibility Fun!</title><description>&lt;p&gt;&lt;img height="105" width="100" alt="rSpec lightbulb" src="http://www.rubyinside.com/wp-content/uploads/2010/10/rspec2.gif" align="right"/&gt;Rubyists make a decision which version of which flavour is their preferred, either generally or for that project. But, does it not seem that sitting inside their chosen one a little closed-minded and unfriendly to others&amp;#8217; preferences? It does to me, so I&amp;#8217;m combining the magic of RVM with my &lt;a title="rSpec" target="_blank" href="http://rspec.info"&gt;rSpec&lt;/a&gt; testing to make my software cross-version — and even cross-Ruby — compatible.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Erm&amp;#8230; Ahem.&lt;/h3&gt;
&lt;p&gt;&lt;img height="100" width="100" alt="RVM Logo" src="https://rvm.beginrescueend.com/images/logo.png" align="right"/&gt;Before we go any further I need to check that you took &lt;a title="my advice" target="_blank" href="http://blog.seawolfsanctuary.com/post/10648875666/rvm-ruby-projects-in-a-world-of-their-own"&gt;my advice&lt;/a&gt; and integrated RVM with your Ruby projects, yeah? Good, I hope it&amp;#8217;s been a good experience for you to chop up your development environment into per-project workspaces; if you haven&amp;#8217;t, GTFO.&lt;/p&gt;
&lt;p&gt;Great: you guys and girls left are the ones I want to deal with. Now you must prepare for your next challenge: combining RVM with that ever-so-awesome testing tool rSpec. Don&amp;#8217;t worry if this seems over-the-top for your project; it&amp;#8217;s worthy practice in even the most modest of code-bases. I&amp;#8217;ve only the smallest of personal projects and only one I deem worthy of such a practice. Coming to the conclusion that I&amp;#8217;d like my &lt;a title="rubident" target="_blank" href="https://gitorious.org/rubident"&gt;rubident&lt;/a&gt; code to run in more than ten minutes time, I have to make sure it&amp;#8217;s going to work the second, third and hundredth time round. How? Test it!&lt;/p&gt;
&lt;h3&gt;The Project&lt;/h3&gt;
&lt;p&gt;Embarking on rubident out-of-the-blue meant I hadn&amp;#8217;t looked into how a Ruby project could consume the web services and APIs it does so I just went ahead and wrote some code. Yep, I got myself into development-driven testing; I wanted to find my feet in how best to organise it before fighting the dreaded red-coloured output since I didn&amp;#8217;t know rSpec at the time either! Around about here rubident looked like this:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;OOP, not just a script as it once was (turns out doing it the proper way is just as simple!)&lt;/li&gt;
&lt;li&gt;set multi-service support&lt;/li&gt;
&lt;li&gt;any number of accounts on those services&lt;/li&gt;
&lt;li&gt;oAuth (v1) authentication through them&lt;/li&gt;
&lt;li&gt;reading and writing pretty much all the expected streams; home, replies, direct messages etc.&lt;/li&gt;
&lt;li&gt;a couple of helpers to sort out the dates&lt;/li&gt;
&lt;li&gt;hosting on Gitorious and GitHub.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Since the specifications for the project is to eventually support everything the API does (what more can a guy do?) the one thing missing from that list is the big one: tests. I had to get testing up there, so now that I have something to work with I can learn how Rubyists test!&lt;/p&gt;
&lt;h3&gt;Testing: And So It Begins&lt;/h3&gt;
&lt;p&gt;At the time of writing, the documentation for the newer rSpec (v2) lacks greatly from that of it&amp;#8217;s predecessor, which is quite unsettling for a beginner. This made it quite difficult to pick up rSpec as I didn&amp;#8217;t want to read documentation and tutorials for v1 and find out I&amp;#8217;d need to re-write my attempts. Admitting defeat, I just wrote some ruddy code. I already had a list of features that rubident did:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;start a client instance&lt;/li&gt;
&lt;li&gt;make sure we load some gems (JSON et. al.)&lt;/li&gt;
&lt;li&gt;make sure we load some files (helpers)&lt;/li&gt;
&lt;li&gt;support a number of (technologically very similar) services&lt;/li&gt;
&lt;li&gt;add accounts on those service&lt;/li&gt;
&lt;li&gt;understand oAuth (ahem, I&amp;#8217;m doing this one last&amp;#8230;) to add those accounts&lt;/li&gt;
&lt;li&gt;read various timelines&lt;/li&gt;
&lt;li&gt;parse and order various stuff out of each stream&lt;/li&gt;
&lt;li&gt;post through an account&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Writing this list made writing the list of tests easy:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;load &amp;#8216;rubident.rb&amp;#8217;&lt;/li&gt;
&lt;p&gt;When starting up:&lt;/p&gt;
&lt;li&gt;it should create a client to work with&lt;/li&gt;
&lt;li&gt;it should load at least some of the required gems&lt;/li&gt;
&lt;p&gt;When setting up services and accounts:&lt;/p&gt;
&lt;li&gt;it should read a file of supported services&lt;/li&gt;
&lt;li&gt;it should read a file of set-up accounts&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I&amp;#8217;m sure you can see where I&amp;#8217;m going with this; adding this list of requirements as the rSpec file for my main rubident class — spec/rubident_spec.rb — gave me an instant template for testing my code. I&amp;#8217;m not going to go into the actual code, hat&amp;#8217;s up to you to make sure your tests actually do, but I will say that:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;it should create a client to work with&lt;/li&gt;
&lt;li&gt;it &amp;#8220;should create a client to work with&amp;#8221; do&lt;br/&gt;  @client = Rubident.new&lt;br/&gt;   @client.should_not be nil&lt;br/&gt; end&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;The Awesome&lt;/h3&gt;
&lt;p&gt;Here&amp;#8217;s the &lt;a title="TL;DR" target="_blank" href="http://en.wiktionary.org/wiki/TLDR"&gt;TL;DR&lt;/a&gt; of this post if you&amp;#8217;re using RVM, rSpec and have written some code and tests. I&amp;#8217;ve plumped for a plain ol&amp;#8217; Bash script to do the following:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;list all the Rubies installed on my system through RVM, in a machine-readable format (the &lt;span&gt;strings&lt;/span&gt; bit)&lt;/li&gt;
&lt;li&gt;switch to the rubident environment for each installed Ruby and version&lt;/li&gt;
&lt;li&gt;ensure all my Gems are installed as per the Gemfile&lt;/li&gt;
&lt;li&gt;run my rSpec tests for this particular Ruby and version, coloured and listing my tests&lt;/li&gt;
&lt;li&gt;carry on to the next Ruby or version&lt;/li&gt;
&lt;li&gt;at the end, switch back to my preferred Ruby and version.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;small&gt;for RUBY in `rvm list strings`&amp;#160;; do&lt;br/&gt;  rvm use $RUBY@rubident &amp;amp;&amp;amp; bundle install &amp;amp;&amp;amp; rspec -cfn spec/*.rb&amp;#160;; echo&lt;br/&gt;done&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;rvm use 1.9.2@rubident&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;This gives me 100% compatibility for all my installed Rubies as far as I have tested, in one command. By having older Rubies installed, I can maintain backward-compatibility too. Of course, this is limited to as much backward-compatibility as the gems allow for, and how far my tests go but I&amp;#8217;ve found this is enough to inspire my confidence that I am writing well-working code&lt;/p&gt;
&lt;p&gt;I immediately saw a failure resulting from changes between versions: MRI 1.8.7 can &lt;em&gt;require&lt;/em&gt; both gems and files and &lt;em&gt;load&lt;/em&gt; files, whereas v1.9.2 only &lt;em&gt;require&lt;/em&gt; gems but still &lt;em&gt;load&lt;/em&gt; files. By getting them green without version-specific code, one can ensure it is running at a sort of baseline, without specific features. You can also include optimisations for specific Rubies in your code and have them tested, since we are switching between whatever is installed — but that&amp;#8217;s up to how you want to work.&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;Thanks for reading! I hope you find my post useful if not interesting, and appreciate any (appropriate!) comments.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;small&gt;By the way, I use the term Rubies to group not just all Ruby implementations but also every version of them. I thought it might be useful to clarify this. How do most use the term?&lt;/small&gt;&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/10692234500</link><guid>http://blog.seawolfsanctuary.com/post/10692234500</guid><pubDate>Mon, 26 Sep 2011 19:00:06 +0100</pubDate><category>development</category><category>rspec</category><category>ruby</category><category>rvm</category><category>testing</category></item><item><title>fsfe UK Meet #1</title><description>&lt;a href="http://blogs.fsfe.org/benarnold/?p=25"&gt;fsfe UK Meet #1&lt;/a&gt;: &lt;p&gt;&lt;img src="http://madlab.org.uk/wp-content/uploads/2011/04/madlab-fship.jpg" alt="fsfe uk manchester" width="300" height="225" align="right"/&gt;&lt;br/&gt;
The evening of Thursday 7th April saw the inaugural meeting of fellows in the Free Software Foundation Europe’s &lt;a title="British branch" href="http://fsfe.org/uk/" target="_blank"&gt;British branch&lt;/a&gt;. Generously hosted by &lt;a title="MaDLab" href="http://madlab.org.uk/" target="_blank"&gt;MaDLab&lt;/a&gt;, Manchester’s…&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/4921521546</link><guid>http://blog.seawolfsanctuary.com/post/4921521546</guid><pubDate>Mon, 25 Apr 2011 12:14:29 +0100</pubDate></item><item><title>RVM: Ruby Projects in a World of their Own</title><description>&lt;p&gt;&lt;a href="https://rvm.beginrescueend.com/" target="_blank"&gt;&lt;img align="right" src="https://rvm.beginrescueend.com/images/logo.png" alt="RVM Logo" width="150" height="150"/&gt;&lt;/a&gt;Whether you&amp;#8217;re just starting to use Ruby or have been for a while, when you pull in the first Gem you had better be using &lt;a title="RVM" target="_blank" href="https://rvm.beginrescueend.com/"&gt;RVM&lt;/a&gt;, the Ruby Version Manager. Why? Well, RVM allows you to easily set-up not only multiple versions of Ruby but also per-project sets of Gems, and for you to seamlessly switch between them. By having a number of persistent Rubies on your system simultaneously, each project lives safely in it&amp;#8217;s own world so you can reliably separate and distribute them without leaving anything out. All this can be done away from your system&amp;#8217;s own Ruby version and Gem set, too.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Approach&lt;/h3&gt;
&lt;p&gt;The common approach is to set up the Rubies inside your own Home directory, under the .rvm directory, but I&amp;#8217;ve had no problems with a system-wide installation. (Except, that is, for remembering that my Rubies are installed under /usr/local and not in my Home directory, so needing elevated privileges to use RVM or some user-group work-around.) A quick round-up of the commands and methods for setting up and using system-wide RVM is the purpose of this post.&lt;br/&gt;&lt;br/&gt;Bear in mind that Ruby is cross-platform and so all the tools around it have to be too. That&amp;#8217;s not to say there are problems with it, just something to keep in mind that any stumbling block may be a Mac OS / Linux / Windows thing rather than the tool you&amp;#8217;re having problems with.&lt;/p&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;We begin by, you guessed it, installing RVM. The easy way is by its script, which is downloaded and ran:&lt;/p&gt;
&lt;pre&gt;curl -k &lt;a href="https://rvm.beginrescueend.com/install/rvm" target="_blank"&gt;https://rvm.beginrescueend.com/install/rvm&lt;/a&gt; &amp;gt; ~/rvm_install.sh
chmod +x ~/rvm_install.sh
./~/rvm_install.sh
&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;m using SliTaz Linux, whose user management tools are slightly different from those in a number of other distributions because of the glorious (yes, sarcasm) BusyBox. Because of this, the RVM user group automation doesn&amp;#8217;t work, so I need to run:&lt;/p&gt;
&lt;pre&gt;sudo addgroup seawolf rvm
&lt;/pre&gt;
&lt;p&gt;to add my user to the rvm group.&lt;/p&gt;
&lt;p&gt;Like all great software, RVM&amp;#8217;s user-level configuration is found in one file. Let&amp;#8217;s take a look:&lt;/p&gt;
&lt;pre&gt;cat /usr/local/rvm/examples/rvmrc
&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;m not going to go over this configuration as the defaults should be more than fine, and you can read a lot more than I know at the RVM website.&lt;/p&gt;
&lt;p&gt;Speaking of documentation, you should really take a look at your platform-specific bugs and notices, either from the website or with the command:&lt;/p&gt;
&lt;pre&gt;rvm notes
&lt;/pre&gt;
&lt;p&gt;I had a few gotchas in learning RVM but nothing huge; there&amp;#8217;s plenty around the web and I&amp;#8217;ve heard the IRC channel is particularly excellent for support (and chat, Wayne&amp;#8217;s a nice guy).&lt;/p&gt;
&lt;h3&gt;Using RVM&lt;/h3&gt;
&lt;p&gt;With the paperwork out of the way, it&amp;#8217;s the moment you&amp;#8217;ve been waiting for: installing Ruby! You are in fact coming to download, compile and install a Ruby with one, yes one, command. This one, to be precise:&lt;/p&gt;
&lt;pre&gt;rvm install 1.8.7&lt;/pre&gt;
&lt;p&gt;Whether or not this actually works is a matter for your system, but that&amp;#8217;s how it done. I&amp;#8217;m not going to write the standard software compilation blurb, so any problems: you know what to do! I like to completely overwrite a failed compile/install with it&amp;#8217;s original source before attempting it again, so this time instead run:&lt;/p&gt;
&lt;pre&gt;rvm install 1.8.7 --force
&lt;/pre&gt;
&lt;p&gt;Lovely. Now, the fun bit: let&amp;#8217;s do a similar thing with another Ruby, say the latest Ruby Enterprise Edition:&lt;/p&gt;
&lt;pre&gt;rvm install ree
&lt;/pre&gt;
&lt;p&gt;Whoo! You&amp;#8217;ve now your system&amp;#8217;s own Ruby (whatever that may be), 1.8.7 and even REE installed and ready to go, all in one system! But how can you actually use them? Simple:&lt;/p&gt;
&lt;pre&gt;rvm list
&lt;/pre&gt;
&lt;p&gt;You should see proof of multiple Rubies. Pick any one of them, for example:&lt;/p&gt;
&lt;pre&gt;rvm use 1.8.7
&lt;/pre&gt;
&lt;p&gt;Note there&amp;#8217;s one unlisted; &amp;#8216;system&amp;#8217; is whatever Ruby your system has installed, usually by your package manager.&lt;/p&gt;
&lt;h3&gt;RVM &amp;amp; RubyGems&lt;/h3&gt;
&lt;p&gt;So, now that you know how to switch between them, you can install some Gems for a particular Ruby. Gems are as usual installed under Ruby&amp;#8217;s path, this doesn&amp;#8217;t change with RVM. By switching with &amp;#8216;use&amp;#8217; you also switch to the Ruby&amp;#8217;s Gems. Let&amp;#8217;s have a look to see which Gems are installed with your &amp;#8216;used&amp;#8217; Ruby. What would you normally do? Probably this:&lt;/p&gt;
&lt;pre&gt;gem list
&lt;/pre&gt;
&lt;p&gt;RVM takes control over Gems since it&amp;#8217;s all part of one particular Ruby by keeping everything under the &lt;em&gt;.rvm&lt;/em&gt; directory inside your home. Every Ruby, version and gem lives in there. Have a go at installing some Gem you like (say, Bundler) with:&lt;/p&gt;
&lt;pre&gt;gem install bundler
&lt;/pre&gt;
&lt;p&gt;To illustrate the Gem handling, let&amp;#8217;s switch back to the system Ruby with:&lt;/p&gt;
&lt;pre&gt;rvm use system
&lt;/pre&gt;
&lt;p&gt;Now, if you ask which Gems are available now, you should get back your original list:&lt;/p&gt;
&lt;pre&gt;gem list&lt;/pre&gt;
&lt;p&gt;You should see your previous gems listed there and not whatever one you just installed. Switch back and watch it change again!&lt;/p&gt;
&lt;h3&gt;Using RVM with Multiple Projects&lt;/h3&gt;
&lt;p&gt;Long-time or occasional developers may have projects written using various versions of Ruby, to the point that each project is different. There is a handy way to remember which should be used, and that is to let RVM automagically switch between them for you! It will do this when you change into the project&amp;#8217;s root directory by noticing a &amp;#8216;.rvmrc&amp;#8217; file, with the contents as:&lt;/p&gt;
&lt;pre&gt;rvm &amp;lt;version&amp;gt;@&amp;lt;project-name&amp;gt; --create
&lt;/pre&gt;
&lt;p&gt;You may see what this file is really doing: these instructions are carried out by RVM each time we change into a directory and the file is detected, so it is automatically switching to a project-centric gemset each time it loads this file. I imagine other RVM commands can be used here too, should your workflow deem it necessary. It&amp;#8217;s great practice to use this file as soon as you create a new project, so it&amp;#8217;s not mixed-up with anything else, as in a similar workflow to Bundler. The two happen to work very well together, as you&amp;#8217;d suspect.&lt;/p&gt;
&lt;h3&gt;Thanks Wayne!&lt;/h3&gt;
&lt;p&gt;So, there we have multiple versions of Ruby existing on the same machine at the system level, and numerous projects switching to their appropriate Ruby and Gems. RVM is a fantastic tool for anyone with multiple Ruby projects, or even just one since it allows for testing over multiple Rubies very succinctly. A big, big thank-you to Wayne, the creator of RVM for his excellent and hard work!&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/10648875666</link><guid>http://blog.seawolfsanctuary.com/post/10648875666</guid><pubDate>Sat, 19 Mar 2011 19:30:00 +0000</pubDate><category>development</category><category>ruby</category><category>rvm</category></item><item><title>On Firewood And Kindling</title><description>&lt;p&gt;Thursday saw the latest monthly meet of Linux users in and around &lt;a title="Chester" href="http://www.chesterlug.org.uk/" target="_blank"&gt;Chester&lt;/a&gt;; its &lt;a title="Liverpudlian counterpart" href="http://livlug.org.uk/" target="_blank"&gt;Liverpudlian&lt;/a&gt; counterpart to follow this Wednesday. A member of each has recently added to their gadgetry a popular proprietary electronic book reader, the &lt;a title="Kindle" href="http://www.amazon.co.uk/kindle" target="_blank"&gt;Kindle&lt;/a&gt; from onile retailer &lt;a title="Amazon" href="http://www.amazon.co.uk" target="_blank"&gt;Amazon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a title='"Amazon Kindle eBook Reader" by goXunuReviews' href="http://www.flickr.com/photos/43602175@N06/4070018782/" target="_blank"&gt;&lt;img height="115" align="right" src="http://farm3.static.flickr.com/2679/4070018782_a9f76393b0.jpg" width="225" alt="Kindle"/&gt;&lt;/a&gt;The thin, &amp;#8220;revolutionary wireless reading device&amp;#8221; aims to bring books into the digital age, both at leisure and on the move. A user purchases texts from Amazon&amp;#8217;s &lt;a title="on-line store" href="http://www.amazon.co.uk/Kindle-eBooks/b/ref=sv_kinc_1?ie=UTF8&amp;amp;node=341689031" target="_blank"&gt;online store&lt;/a&gt; or transfers &lt;em&gt;DRM&lt;/em&gt;-free &lt;em&gt;PDF&lt;/em&gt; documents to the device to read on it&amp;#8217;s non-glare, &lt;a title="E Ink" href="http://en.wikipedia.org/wiki/E_Ink" target="_blank"&gt;paper-simulate screen&lt;/a&gt;. The wireless networking and 3G mobile Internet features are both free and world-wide, attractive to techies and non-techies alike to provide new and previously purchased material instantly, along with full Internet access &lt;em&gt;on the go&lt;/em&gt;. Amazon even foot the 3G bill in the hope of re-cooperating enough from store purchases. All in all, the Kindle - and other eBook readers I dare say - is rather tempting to commuters and those wanting to travel light, taking all the good bits of a good book and rounding off the inconveniences of a cumbersome paper companion with modern technology.&lt;/p&gt;
&lt;p&gt;&lt;a title='"Kindling" by oskay' href="http://www.flickr.com/photos/oskay/3470579450/" target="_blank"&gt;&lt;img height="180" align="right" src="http://farm4.static.flickr.com/3664/3470579450_0103c46ea9_z.jpg" width="240" alt="Kindling"/&gt;&lt;/a&gt;Sounds too good to be true? Possibly. I&amp;#8217;ve recently reopened &lt;a title="James Fray" href="http://www.librarything.com/author/freyjames" target="_blank"&gt;James Fray&lt;/a&gt;&amp;#8217;s &lt;em&gt;&lt;a title="A Million Little Pieces" href="http://www.librarything.com/work/444" target="_blank"&gt;a million little pieces&lt;/a&gt;&lt;/em&gt;, and soon to start its sequel, &lt;em&gt;&lt;a title="My Friend Leonard" href="http://www.librarything.com/work/40721" target="_blank"&gt;my friend leonard&lt;/a&gt;&lt;/em&gt;. Both are available to buy as eBooks but for double what I paid for my &lt;a title="second-hand" href="http://en.wikipedia.org/wiki/Charity_shop#United_Kingdom" target="_blank"&gt;second-hand&lt;/a&gt; paperbacks. Also on my reading list are crime fiction novels from &lt;a title="Christopher Brookmyre" href="http://www.librarything.com/author/brookmyrechristopher" target="_blank"&gt;Christopher Brookmyre&lt;/a&gt; and &lt;a title="Johnathan Kellerman" href="http://www.librarything.com/author/kellermanjonathan" target="_blank"&gt;Jonathan Kellerman&lt;/a&gt;, only a selection of which are available electronically. Somewhat expected given they are hardly world-renowned classics! As are most of my personal &lt;em&gt;PDF&lt;/em&gt;s, technical references that quickly become irrelevant as technology progresses. To compound this, any future downloads would be in the proprietary &lt;em&gt;AWZ&lt;/em&gt; format, which may restrict me in the future should Amazon decide to lock-down. On the plus side, they can be read on other devices like my netbook and my Android mobile phone through Amazon&amp;#8217;s Kindle application (which is sadly not available for Linux).&lt;/p&gt;
&lt;p&gt;So: the perfect travelling companion if it can give you what you want. Until the issues are resolved, I&amp;#8217;ll stand by my trusty netbook for a good balance of power and portability, alongside my paperbacks for availability and financial realism.&lt;/p&gt;
&lt;p&gt;The turning point? Perhaps it is one already on the horizon: daily newspapers. When done with my book, I regularly read the&amp;#8230; easy on the mind &lt;a title="Metro" href="http://www.metro.co.uk/" target="_blank"&gt;Metro&lt;/a&gt; and regional daily &lt;a title="Manchester Evening News" href="http://www.manchestereveningnews.co.uk/" target="_blank"&gt;Manchester Evening News&lt;/a&gt; during my lunch-break or on the train home from work. If these were delivered to a Kindle everyday for a negligible amount &lt;strong&gt;alongside&lt;/strong&gt; my &lt;em&gt;livre du jour&lt;/em&gt;, I would become again interested. The&lt;em&gt; Financial Times&lt;/em&gt;, &lt;em&gt;Independent&lt;/em&gt; and others are already published in this way through a subscription, but I personally doubt my selection are considering such a distribution given they are already free and widely available. To those I say: prove me wrong.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/1706704832</link><guid>http://blog.seawolfsanctuary.com/post/1706704832</guid><pubDate>Sat, 27 Nov 2010 22:55:00 +0000</pubDate><category>reading</category><category>technology</category><category>kindle</category></item><item><title>Ruby/GTK+ Development in SliTaz: Part II</title><description>&lt;p&gt;&lt;a title="Last time" href="http://blog.seawolfsanctuary.com/post/1019544237/" target="_blank"&gt;Last time&lt;/a&gt;, we got off to a flying start with a simple desktop application powered by Ruby. We shall run through completing the wizard with a simple selector widget (a spinner) and displaying that result in the final page. This is just to use one of the many widgets, show off the wizard and how to do some magic in it.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Before we get back into Glade³, you may notice a small &amp;#8216;feature&amp;#8217; in the wizard: it&amp;#8217;s fixed at the introductory page! This really a feature; as a wizard, we must flag each page as complete before being allowed to move on. But how can we do this?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enter, &lt;em&gt;Ruby&lt;/em&gt;!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You may have noticed Gladex created second file, the &amp;#8220;callbacks&amp;#8221; file no less. This is where the UI and code come together; this is where we can work out if the page is complete. At first this file is more or less empty, the only code here is a bizarre-looking constructor with a &lt;em&gt;puts&lt;/em&gt; statement inside:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;def init_callbacks(xmltree)&lt;br/&gt;    $tree = xmltree&lt;br/&gt;    puts "initialize"&lt;br/&gt;end&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;The clue this gives us is indeed the &lt;em&gt;puts&lt;/em&gt; statement because, when the program is run from a terminal, this &lt;strong&gt;initialize&lt;/strong&gt; can be seen. In fact, the main class file uses this line:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;init_callbacks(@glade)&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;We need to add callbacks from the Glade³ file to Ruby code. This is where it all ties together! Each event that may occur can be associated with a method. Each mouse click, movement, selection or any other event can trigger a method in the callbacks file.&lt;/p&gt;
&lt;h4&gt;Before You Start, Know How To Stop&lt;/h4&gt;
&lt;p&gt;One interesting &lt;em&gt;feature&lt;/em&gt; you may notice is that we cannot yet exit the wizard without killing it from the terminal (Ctrl+C). Okay, that&amp;#8217;s not a &lt;em&gt;feature&lt;/em&gt; at all, it&amp;#8217;s just darned annoying. In the metaphorical bug-tracker, that&amp;#8217;s probably MUSTFIX. To do so, we should attach a callback to the &lt;em&gt;Apply&lt;/em&gt; button; similar to before:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Ensure the main window is selected in Glade³.&lt;/li&gt;
&lt;li&gt;In the &lt;em&gt;Signals&lt;/em&gt; tab of Properties area, open &lt;em&gt;GtkAssistant&lt;/em&gt; and select &lt;em&gt;apply&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Create a name for the method as the &lt;em&gt;Handler&lt;/em&gt;, I have chosen &lt;em&gt;quit_app&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Back in the callbacks file, create this method. There&amp;#8217;s not much to it as we can just quit straight-away, for now:&lt;/li&gt;
&lt;/ol&gt;&lt;pre&gt;&lt;strong&gt;def quit_app()&lt;br/&gt;    Gtk.main_quit&lt;br/&gt;end&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;That should be fairly readable; all that is needed to note is that it comes directly from the &lt;em&gt;Gtk&lt;/em&gt; module, and that doesn&amp;#8217;t really matter.&lt;/p&gt;
&lt;h4&gt;Go, Go, Go!&lt;/h4&gt;
&lt;p&gt;The above task shows how the Glade³ file links with Ruby code; it is fairly evident that Ruby/Gtk programs truly are powered by Ruby. Now we can go on to do more with the program. The first thing we should do is sate when we can proceed from a page. This is done by &amp;#8216;flagging&amp;#8217; the page as complete and allowing the &lt;em&gt;Next&lt;/em&gt; button to become active, for now it will be as we load each page:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Ensure the main window is selected.&lt;/li&gt;
&lt;li&gt;In the &lt;em&gt;Signals&lt;/em&gt; tab of Properties area, open &lt;em&gt;GtkWidget&lt;/em&gt; and select &lt;em&gt;configure-event&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Create a name for the method as the &lt;em&gt;Handler&lt;/em&gt;, I have chosen &lt;em&gt;prepare_page&lt;/em&gt; as we shall use it with every page.&lt;/li&gt;
&lt;li&gt;Repeat the previous step for the &lt;em&gt;GtkAssistant &amp;gt; prepare&lt;/em&gt; signal.&lt;/li&gt;
&lt;li&gt;Back in the callbacks file, create this method. As we will use it on every page, it can be quite generic, without much logic:&lt;/li&gt;
&lt;/ol&gt;&lt;pre&gt;&lt;strong&gt;def prepare_page()&lt;br/&gt;    curr = @glade["assistant1"].get_nth_page(@glade["assistant1"].current_page)&lt;br/&gt;    @glade["assistant1"].set_page_complete(curr, true)&lt;br/&gt;end&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;Hopefully that isn&amp;#8217;t too complicated; it first picks the &lt;em&gt;n&lt;/em&gt;th page, in this case the first, before marking it complete. Yes, we could push that into one line but would forsake readability. If we run the wizard, we should be able to jump through the pages!&lt;/p&gt;
&lt;h4&gt;How Do I Love Thee? Let Me Count The Ways&lt;/h4&gt;
&lt;p&gt;True, there&amp;#8217;s not much to the pages. Let&amp;#8217;s change that by adding a spinner or two to the page. If you&amp;#8217;re new to GTK+ design, everything is placed in a container widget, usually a horizontal or vertical &amp;#8216;box&amp;#8217;. This box acts like a stack in which objects are&amp;#8230; well, stacked. Each slot can house only one object, though.&lt;/p&gt;
&lt;p&gt;At present, each page is made up of a label. Let&amp;#8217;s delete the second one to reveal an empty, grey area. After selecting the horizontal box from the palette, click in this grey area to place it. We&amp;#8217;ll use the default 3 slots in the box, inside the first and last we can put a label. Change the text of these to something like:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Select from the spinners the first and last lines to display.&lt;/li&gt;
&lt;li&gt;Click &amp;#8216;Next&amp;#8217; to show the poem.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Perhaps a slight give-away as to what the final page will contain!&lt;/p&gt;
&lt;p&gt;Boxes can be put inside boxes; by placing a vertical box in the second slot, we will house two spinners. You can play with their and any other object&amp;#8217;s appearance with the &amp;#8216;Packing&amp;#8217; tab in the properties. Lets set the upper and lower limits of the counter to zero and fourteen, as the lower and upper limit respectively.&lt;/p&gt;
&lt;p&gt;The result is just around the corner (quite literally) as we create the lines of the poem to display. There are a number of ways to do this but we shall use a simple one: remove the label and replace it with another widget, a text view area. Set the text on this to the whole poem. Just copy the following in to the text view properties editor:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How do I love thee? Let me count the ways.&lt;br/&gt;I love thee to the depth and breadth and height&lt;br/&gt;My soul can reach, when feeling out of sight&lt;br/&gt;For the ends of Being and ideal Grace.&lt;br/&gt;I love thee to the level of everyday&amp;#8217;s&lt;br/&gt;Most quiet need, by sun and candle-light.&lt;br/&gt;I love thee freely, as men strive for Right;&lt;br/&gt;I love thee purely, as they turn from Praise.&lt;br/&gt;I love thee with a passion put to use&lt;br/&gt;In my old griefs, and with my childhood&amp;#8217;s faith.&lt;br/&gt;I love thee with a love I seemed to lose&lt;br/&gt;With my lost saints, &amp;#8212;- I love thee with the breath,&lt;br/&gt;Smiles, tears, of all my life! &amp;#8212;- and, if God choose,&lt;br/&gt;I shall but love thee better after death.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, that is Ms. Browning&amp;#8217;s famous poem. This should size the application window to a suitably usable format now.&lt;/p&gt;
&lt;p&gt;Our final addition to the program puts the spinners into action: add into the &lt;em&gt;prepare_page&lt;/em&gt; method the following:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;poem = @glade["textview1"].buffer.text.split("\n")&lt;br/&gt;&lt;br/&gt;case @glade["assistant1"].current_page&lt;br/&gt;    when 2&lt;br/&gt;        poem_lines = " "&lt;br/&gt;        for num in (@glade["spinbutton1"].value_as_int - 1)..(@glade["spinbutton2"].value_as_int - 1) do&lt;br/&gt;            poem_lines &amp;lt;&amp;lt; "\n" &amp;lt;&amp;lt; poem[num]&lt;br/&gt;        end&lt;br/&gt;        @glade["textview1"].buffer.set_text(poem_lines)&lt;br/&gt; end&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;This includes a correction, &lt;em&gt;value_as_int - 1&lt;/em&gt;, as arrays start from zero!&lt;/p&gt;
&lt;h4&gt;Conclusions&lt;/h4&gt;
&lt;p&gt;So, there we have it. You should be able to run through the program, pick which lines of a poem we should display and, well, display them. Not a lot in itself but all the set-up and groundwork is done for further development. We are picking up quite a lot along the way about the Ruby &amp;amp; GTK+ relationship:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Within a GTK+ project one can have many windows, each are independent. This allows for designers to concentrate on the GUI without interference from developers because designers need not code, nor developers need design.&lt;/li&gt;
&lt;li&gt;All that one expects from an interface in programming terms is provided by the GTK+ objects and events, and Ruby interface. This gives flexibility and power to applications.&lt;/li&gt;
&lt;li&gt;There exist short-cuts such as &lt;em&gt;@glade[&amp;#8220;&amp;#8221;]&lt;/em&gt; for the &lt;em&gt;@glade.get_widget&lt;/em&gt; method, that make for very easy reference of GUI objects, thus Ruby/GTK+ programming quite enjoyable.&lt;/li&gt;
&lt;/ul&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;In this post, we have added events to our basic GTK+ application by using Glade³ to assign a method to each, aligning them to Ruby code &amp;#8216;callbacks&amp;#8217;. In the process we have interacted with GUI objects and done some simple processing and activities based on the results. This is only the beginning, perhaps we could improve it by fixing the backward-button-clicking bug, adding other widgets and trying to manipulate them.&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/1360582420</link><guid>http://blog.seawolfsanctuary.com/post/1360582420</guid><pubDate>Fri, 03 Sep 2010 11:00:00 +0100</pubDate><category>development</category><category>gtk</category><category>linux</category><category>ruby</category><category>slitaz</category></item><item><title>Ruby/GTK+ Development in SliTaz: Part I</title><description>&lt;p&gt;One of my recent adventures has led to packaging the bindings &lt;a title="I promised" href="http://blog.seawolfsanctuary.com/post/994822991" target="_blank"&gt;I promised&lt;/a&gt;, so you can now develop &lt;a title="GTK+ desktop applications" href="http://www.gtk.org/" target="_blank"&gt;GTK+ desktop applications&lt;/a&gt; that are powered by &lt;a title="Ruby" href="http://ruby-lang.org/" target="_blank"&gt;Ruby&lt;/a&gt;! The package I created is for &lt;a title="SliTaz GNU/Linux" href="http://www.slitaz.org" target="_blank"&gt;SliTaz Linux&lt;/a&gt;, which I&amp;#8217;ll be using in this series of posts to get you up and running. We shall walk through the process to get a basic application designed, built and running with the help of a couple of tools. I came up against a couple of problems just setting it up but this was new territory to me!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h4&gt;Prerequisites&lt;/h4&gt;
&lt;p&gt;This should work with any distribution provided you have the following software installed:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Ruby (to write your code)                            
&lt;ul&gt;&lt;li&gt;&lt;em&gt;I&amp;#8217;m using 1.8.7, but it may work with 1.9. It&amp;#8217;s up to the bindings to represent the GTK+ stuff in Ruby correctly.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;GTK+ (to show your UI)                            
&lt;ul&gt;&lt;li&gt;&lt;em&gt;I&amp;#8217;m using version 2.16, others may work. It&amp;#8217;s up to GTK+ to have what the bindings expect, so you may be able to get away with earlier versions depending on what you want; likewise, newer versions should be backward-compatible.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Glade (to easily construct a UI)                            
&lt;ul&gt;&lt;li&gt;&lt;em&gt;This should come with the GTK+ development tools but you may need to install it separately. You should also have LibGlade, which should be included.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="the bidings betixt them" href="http://dl.dropbox.com/u/6413248/SliTaz%20Packages/ruby-gtk2/ruby-gtk2-0.19.4.tazpkg" target="_blank"&gt;the bindings betwixt them&lt;/a&gt; 
&lt;ul&gt;&lt;li&gt;&lt;em&gt;usually a &lt;a title="ruby-gtk2 or ruby-gnome2" href="http://ruby-gnome2.sourceforge.jp/" target="_blank"&gt;ruby-gtk2&lt;/a&gt; package but this will vary. Search your package management system for them; the &amp;#8216;big ones&amp;#8217; should have them. You will need this on any system on which you intend to run your project.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Gladex" href="https://launchpad.net/gladex" target="_blank"&gt;Gladex&lt;/a&gt; (to write a kick-start file)                            
&lt;ul&gt;&lt;li&gt;&lt;em&gt;This tiny utility creates a kick-start file in Python, Perl or Ruby. We&amp;#8217;ll use this only once and it&amp;#8217;s a tiny package. Unfortunately this is not yet available in the SliTaz repositories but the &lt;a title="Debian package" href="http://launchpad.net/gladex/0.4/0.4.1/+download/gladex-0.4.1-linux-2.6-intel.deb" target="_blank"&gt;Debain package&lt;/a&gt; converts perfectly. Gladex replaces use of a tool in the Ruby/GTK2 package that r&lt;/em&gt;&lt;em&gt;equires modifications of the Ruby file.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;If you&amp;#8217;re using SliTaz, start a Terminal window and switch to root user (&lt;em&gt;su&lt;/em&gt;), then run these commands to install them and their dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;yes y | tazpkg get-install ruby-gtk2 ruby-dev glade3 gtk+-dev&lt;pre&gt;tazpkg convert gladex-0.4.1-linux-2.6-intel.deb &amp;amp;&amp;amp; \&lt;br/&gt;tazpkg install gladex-0.4.1.tazpkg&lt;br/&gt;&lt;/pre&gt;
&lt;/strong&gt;&lt;/pre&gt;
&lt;h4&gt;Designing with Glade³&lt;/h4&gt;
&lt;p&gt;I found the easiest way of getting a small application together is to start with a basic UI design, without being fussy. By starting with the front-end, you can keep in your mind the function of the application and thus a roadmap with which to start. So, let&amp;#8217;s start up the interface designer Glade³ for a blank canvas on which we can create our masterpiece!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://a.imageshack.us/img830/8130/0gladewindow.png" target="_blank"&gt;&lt;img align="right" width="240" alt="Glade3 main window" src="http://a.imageshack.us/img830/8130/0gladewindow.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should immediately notice the main designing window but we need to set-up the project first. A Glade³ project is not just one window (though it can be) but houses all the graphical elements that one application needs. Sure, you can create one project for an application, another for its &lt;em&gt;About&lt;/em&gt; window and so on, but I think it more commonsensical to keep them all in one project.&lt;/p&gt;
&lt;p&gt;The abstracted nature of the Glade³ designer means that each project must have defined details of the environment in which you intend to run your project. The Ruby/GTK2 bindings need to use the &lt;em&gt;LibGlade&lt;/em&gt; format, the predecessor to the newer &lt;em&gt;GtkBuilder&lt;/em&gt;. To do this, ensure that &lt;em&gt;LibGlade&lt;/em&gt; is set in the &lt;em&gt;Project Preferences&lt;/em&gt; window:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://a.imageshack.us/img842/2485/0gladeprojectsettings.png" target="_blank"&gt;&lt;img height="200" alt="Glade3 project settings window" src="http://a.imageshack.us/img842/2485/0gladeprojectsettings.png" align="right"/&gt;&lt;/a&gt; Other options such as the version of GTK+ needed to run the project are also defined here. It will be fine to leave &lt;em&gt;object names unique within the project&lt;/em&gt; and &lt;em&gt;image resources within the project directory&lt;/em&gt; for portabilities sake. Click &lt;em&gt;Close&lt;/em&gt; to set those options and get back to the designer window.&lt;/p&gt;
&lt;p&gt;Here you face two options: design the windows yourself, or pick a template design from the &lt;em&gt;Toplevels&lt;/em&gt; area of the toolbox. We shall do the latter, to save a little time. Moreover, experimenting with both will no doubt be fruitful in the future, to discover the GTK+ &lt;em&gt;stacking&lt;/em&gt; of objects and such, but we are covering enough to understand the basics. Let&amp;#8217;s create a basic wizard-style dialog, with the &lt;em&gt;Assistant&lt;/em&gt; template.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Glade3 Top Levels" src="http://a.imageshack.us/img832/8983/1assistanttoplevel.png" align="right"/&gt; The basic framework for a three-page assistant is created, just with one click. You can even jump through the pages with the buttons! You should see it in the &lt;em&gt;Project Inspector&lt;/em&gt; to the top-right of the window. Each page is one widget, in the default case three text labels.&lt;/p&gt;
&lt;p&gt;Before we do anything, let&amp;#8217;s make this window active by turning on &lt;em&gt;Visible&lt;/em&gt; in the &lt;em&gt;Common&lt;/em&gt; tab of the assistant &lt;em&gt;Properties&lt;/em&gt;. This will show the window when the application is started; without it, nothing would happen!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://a.imageshack.us/img830/554/1visible.png" target="_blank"&gt;&lt;img align="middle" alt="Glade3 main window" src="http://a.imageshack.us/img830/554/1visible.png" height="75"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;Now we can customise the front page with a welcome message, in just five steps:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Activate the widget by clicking in its centre. The Properties should now change to reflect its selection.&lt;/li&gt;
&lt;li&gt;Modify its name to something a little more descriptive, &lt;em&gt;lbl_Welcome&lt;/em&gt;. You should see this reflected in the &lt;em&gt;Inspector&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Fill in a welcome message by changing the contents of the Label property under the &lt;em&gt;Edit label appearence:&lt;/em&gt; sub-heading. &lt;em&gt;LibGlade&lt;/em&gt; uses just plain text by default, so don&amp;#8217;t worry about formatting it; if you want to include basic mark-up, select the &lt;em&gt;Use markup:&lt;/em&gt; option below. You may find it easier to click the button to the right of the field, to open a new editor window.&lt;/li&gt;
&lt;li&gt;If you enter a long line of text, the window will expand to fit it. Split up the text by turning on the &lt;em&gt;Maximum Width in Characters&lt;/em&gt; property and setting it to 50. Word-wrap the text by turning on &lt;em&gt;Word-wrap mode&lt;/em&gt; just beneath.&lt;/li&gt;
&lt;li&gt;Lastly, switch to the &lt;em&gt;Packing&lt;/em&gt; tab of the Properties and set a &lt;em&gt;Page Title&lt;/em&gt;. You can add an icon as a header image too, if you like.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;You&amp;#8217;ve just made the first screen! Let&amp;#8217;s run it&amp;#8230; but how?!&lt;/p&gt;
&lt;h4&gt;Letting Your Glade³ Design Live&lt;/h4&gt;
&lt;p&gt;We set the project as a &lt;em&gt;LibGlade&lt;/em&gt; file, which affects the layout of the Glade³ file. Somehow you need to get Ruby to talk with this Glade³ file. Thankfully, it&amp;#8217;s pretty easy and you need to do this once. Use Point &lt;em&gt;Gladex&lt;/em&gt; to the Glade³ UI design and an output directory, and choose the Ruby plug-in. This will create a kick-start file ready to run your application. If you open the first Ruby file with a text editor, you should see this line that allows for Ruby and GTK+ to talk:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;require 'libglade2'&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;This makes available the Glade³ and GTK+ functions to Ruby. This includes starting the UI design. Notice that there is no conversion of the UI design, rather it is linked.&lt;/p&gt;
&lt;p&gt;Now you should be able to start a Terminal window and run your application:&lt;/p&gt;
&lt;pre&gt;&lt;strong&gt;ruby [name].rb&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;It lives! Well, nearly; you may find it a bit lifeless at the moment: there is currently no Ruby code to make the UI do anything! Thankfully, as you started the application through a Terminal window, you can press &lt;em&gt;Ctrl+C&lt;/em&gt; to force-close the UI.&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;em&gt;In this post, we have created a basic GTK+ application with a point-and-click designer, hooked it up to a Ruby file in which we can write Ruby code to power it. Next we can give more life to the application, including when closing its window! Until then, have a look in the Ruby and Glade³ files to see their basic structure and references, and have a think about how we can power the application with Ruby code.&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/1019544237</link><guid>http://blog.seawolfsanctuary.com/post/1019544237</guid><pubDate>Fri, 27 Aug 2010 13:40:00 +0100</pubDate><category>slitaz</category><category>linux</category><category>development</category><category>ruby</category><category>gtk</category></item><item><title>Ruby, Gtk+ &amp; SliTaz... Nearly!</title><description>&lt;p&gt;Just shy of two days was enough to let me make the lives of &lt;a target="_blank" href="http://ruby-lang.org"&gt;Ruby&lt;/a&gt; scribblers using the ever-awesome &lt;a target="_blank" href="http://www.slitaz.org"&gt;SliTaz Linux&lt;/a&gt; distribution that little bit sweeter. Sure, anyone with &lt;em&gt;Ruby&lt;/em&gt; and its add-on system &lt;em&gt;RubyGems&lt;/em&gt; can run web apps via &lt;a target="_blank" href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; in a snap, but what about desktop apps? Well&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Coming soon to a package manager near you:&lt;/em&gt;&lt;br/&gt;&lt;img width="50" alt="GTK+ logo" src="http://docs.wxwidgets.org/2.9/logo_gtk.png" align="right" height="50"/&gt;&lt;img width="50" alt="Ruby logo" src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Ruby_logo.svg/100px-Ruby_logo.svg.png" align="right" height="50"/&gt;&lt;br/&gt;&lt;strong&gt;Ruby/Gtk+&amp;#160;!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The package is oh-so-very-nearly ready to be uploaded to the servers - I&amp;#8217;ll just tidy up the build instructions a little and await a little feedback from the adventurous, before-hand. The only thing you devs will need to do is install the &lt;em&gt;ruby-gtk2&lt;/em&gt; package alongside the Gtk+-dev stuff and include one of these lines at the start of your Ruby code, depending on which bit you want:&lt;/p&gt;
&lt;pre&gt;require 'gtk2'&lt;/pre&gt;
&lt;pre&gt;require 'libglade'&lt;/pre&gt;
&lt;p&gt;As I&amp;#8217;m using Glade to design my interface for me (stop laughing) I also used the slightly older LibGlade library, which is being replaced by GtkBuilder, with a tool to link them together. It still works very well though, as I shall demonstrate in a couple of future posts on the subject.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Stay tuned!&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/994822991</link><guid>http://blog.seawolfsanctuary.com/post/994822991</guid><pubDate>Sun, 22 Aug 2010 23:30:00 +0100</pubDate><category>slitaz</category><category>linux</category><category>development</category><category>ruby</category><category>gtk</category></item><item><title>Who Are You? And What Do You Want (to do with my stuff)?</title><description>&lt;p&gt;&lt;a href="http://commons.wikimedia.org/wiki/File:Facebook_icon.svg" target="_blank"&gt;&lt;img width="125" alt="Close to a Facebook logo" src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Facebook_icon.svg/200px-Facebook_icon.svg.png" align="right"/&gt;&lt;/a&gt; &lt;em&gt;&lt;a title="Facebook" href="http://www.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt;&lt;/em&gt; has been &lt;a title="hitting the headlines" href="http://www.google.co.uk/search?q=facebook+privacy+concern&amp;amp;tbs=qdr:m" target="_blank"&gt;hitting the headlines&lt;/a&gt; recently as users are enraged, frustrated and disappointed by the ways in which the company handle the users&amp;#8217; data. Well &amp;#8212; according to &lt;em&gt;Facebook&lt;/em&gt;&amp;#8217;s &lt;a title="Terms of Use" href="http://www.facebook.com/terms.php" target="_blank"&gt;Terms of Use&lt;/a&gt; the data doesn&amp;#8217;t &lt;em&gt;really&lt;/em&gt; belong to the user but &lt;em&gt;Facebook Inc.&lt;/em&gt;, the company behind the site. Go and have a quick read through them if you don&amp;#8217;t believe me; you may be surprised at what you find&amp;#8230;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Let&amp;#8217;s start with the basics. Facebook&amp;#8217;s Terms Of Service state that not only do they own your data (section 2.1), but if you don&amp;#8217;t keep it up to date and accurate (section 4.6), they can terminate your account (section 14). You could argue that the terms are just protecting Facebook&amp;#8217;s interests, and are not in practice enforced, but in the context of their other activities, this defense is pretty weak. As you&amp;#8217;ll see, there&amp;#8217;s no reason to give them the benefit of the doubt. Essentially, they see their customers as unpaid employees for crowd-sourcing ad-targeting data.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;(Source: &lt;a title="Gizmodo" href="http://gizmodo.com/5530178/" target="_blank"&gt;Gizmodo&lt;/a&gt;.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since the privacy settings were overhauled last year (and the year before, probably the one before that too), the Terms of Use have been altered slightly, step-by-step, with more and more control over the user and their data. The virtual-social hub of millions of teenagers, twenty-somethings and even the &lt;em&gt;Silver Surfer&lt;/em&gt; has arguably turned from networking-do-gooder to personal-all-knower.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Sound harsh? Step back a little: your data on Facebook is your name, photos, friends, what school/college/university you attended, when you were there, what you send via message or post to your friends, what the say back&amp;#8230; everything on the publicly-available website. I think &lt;a title="Step back a little" href="http://www.albumoftheday.com/facebook/" target="_blank"&gt;this video&lt;/a&gt; says it best.&lt;/em&gt;&lt;/p&gt;

&lt;hr&gt;&lt;p&gt;&lt;a href="http://www.fossunet.com/" target="_blank"&gt;&lt;img width="125" alt="Fossunet" src="http://img52.imageshack.us/img52/2524/fossunet.jpg" align="right"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve started using a free alternative, &lt;a title="Fossnet" href="http://www.fossunet.com/" target="_blank"&gt;Fossunet&lt;/a&gt;. It is much the same comparison to Facebook as &lt;a title="identi.ca" href="http://identi.ca/seawolf" target="_blank"&gt;identi.ca&lt;/a&gt; (Status.net) is to &lt;a title="Twitter" href="http://www.twitter.com/seawolf" target="_blank"&gt;Twitter&lt;/a&gt; in the micro-blogging world; the former being an open platform providing the same, if not more, functionality. Okay, Fossunet isn&amp;#8217;t as developed as Facebook quite yet, but it shows a lot of promise. One could argue that only third-party application developers is what is needed to make identi.ca really steal Twitter&amp;#8217;s thunder.&lt;/p&gt;
&lt;p&gt;The real difference between corporate entities and the more open alternative is this: &lt;strong&gt;your data should be your own&lt;/strong&gt;. We have this freedom in the real world; for example, when we introduce ourselves to a fellow dog owner in the park, we don&amp;#8217;t expect to take our photograph and staple it to every lamp-post in town. That may sound silly but if you put information on Facebook for your friends&amp;#8217; benefit, Facebook can do &lt;strong&gt;exactly that&lt;/strong&gt;. Not very respectful unless you happen to be running in an election.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://creativecommons.org/videos/a-shared-culture" target="_blank"&gt;&lt;img width="175" alt="Creative Commons: Build a Sharing Culture" src="http://creativecommons.org/images/support/2008/sharingculture.png" align="right"/&gt;&lt;/a&gt;By using free and open alternatives to the &amp;#8216;&lt;em&gt;because everyone else is&lt;/em&gt;&amp;#8217; mainstream, we can each ensure we are treated on our own terms. If you don&amp;#8217;t like how they treat you, &lt;strong&gt;fork off&lt;/strong&gt;. &lt;em&gt;(Forking is the term used when a free product is duplicated by another person/company and run alongside, on their own.)&lt;/em&gt; We are even free to license our own content and data as we see fit, with the option of reproducing the whole site for ourselves if they don&amp;#8217;t agree. The two sites here are licensed under slightly differing &lt;a title="Creative Commons licences" href="http://creativecommons.org/about/licenses/" target="_blank"&gt;Creative Commons licences&lt;/a&gt;, like many on-line projects and creative media. This entitles you to have a look at how they work, fiddle with them on your own should you so wish, and even launch one of your own. I implore everyone to take a critical look at the services they use and consider: &lt;strong&gt;is there a better alternative?&lt;/strong&gt; (Maybe not just in ethics and freedom, but perhaps features or even price!)&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/587569981</link><guid>http://blog.seawolfsanctuary.com/post/587569981</guid><pubDate>Mon, 10 May 2010 21:18:00 +0100</pubDate><category>alternatives</category><category>fossunet</category><category>free-software</category><category>privacy</category></item><item><title>On Your Docs, Set, Sprint!</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/churl/250235218/" target="_blank"&gt;&lt;img width="240" alt="Writing" src="http://farm1.static.flickr.com/85/250235218_6b6e677c05_m.jpg" align="right" height="180"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Internet giants &lt;em&gt;Google&lt;/em&gt; run a &lt;a title="Summer of Code" href="http://code.google.com/soc/" target="_blank"&gt;Summer of Code&lt;/a&gt; programme, in which &amp;#8216;students&amp;#8217; each work on an open-source project, guided by mentors from their selected project. It&amp;#8217;s a fantastic idea with good momentum and hype behind it; 3,400 students in nearly 100 countries have been accepted since its 2005 inception.&lt;/p&gt;
&lt;p&gt;On the back of this, an &lt;a title="article" href="http://2tu.us/202h" target="_blank"&gt;article&lt;/a&gt; recently asked where the &amp;#8220;Summer of Documentation&amp;#8221; was; this gave me an idea. My favourite lightweight Linux distribution, &lt;a title="SliTaz" href="http://www.SliTaz.org/" target="_blank"&gt;SliTaz&lt;/a&gt;, is a young but already-excellent product, but is in need of a little &lt;em&gt;TLC&lt;/em&gt;. &lt;a title="@jpeg" href="http://forum.slitaz.org/index.php/profile/920/jpeg" target="_blank"&gt;@jpeg&lt;/a&gt; recently &lt;a title="posted on the SliTaz Forum" href="http://ur1.ca/vxxc" target="_blank"&gt;posted on the SliTaz Forum&lt;/a&gt; that the &lt;a title="handbook" href="http://www.slitaz.org/en/doc/handbook/index.html" target="_blank"&gt;handbook&lt;/a&gt; and &lt;a title="cookbook" href="http://www.slitaz.org/en/doc/cookbook/index.html" target="_blank"&gt;cookbook&lt;/a&gt; have not seen quite as much attention as they deserve, especially with the release of the latest &lt;em&gt;SliTaz 3&lt;/em&gt;. I&amp;#8217;ve advised developers in a &lt;a title="previous post" href="http://blog.seawolfsanctuary.com/post/253129881/one-step-to-admiration-and-appreciation" target="_blank"&gt;previous post&lt;/a&gt; to shout out how great their efforts are with (better?) documentation; SliTaz &lt;strong&gt;deserves&lt;/strong&gt; to show the world how simple and easy-to-use/fix it really is and I think this is a perfect way to do it.&lt;/p&gt;
&lt;p&gt;So&amp;#8230; :-)&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;&lt;a href="http://www.slitaz.org/" target="_blank"&gt;&lt;img width="200" alt="SliTaz logo" src="http://www.slitaz.org/pics/website/logo.png" align="right" height="74"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I propose&lt;/strong&gt; a period of time this summer, say a fortnight to a month, where a group of us focus on the SliTaz documentation to ensure it is of as high quality as SliTaz itself. This sprint can be carried out by the community, without needing developers to track issues and bug-fixes raised, as is the case in providing support on the forum.&lt;/p&gt;
&lt;p&gt;I envisage the process involving a couple of wiki pages, in which we discuss which articles could be written - from FAQs to technical package details. &lt;em&gt;(The mailing list could further discussions, but that&amp;#8217;s not quite as open and used to be really productive; similarly the forum is a bit of a mish-mash of support and discussions.)&lt;/em&gt; Each could be taken up by one or more members of the community and the actual contents outlined. This will ensure that nothing is repeated (unnecessarily?) but, more importantly, everything is covered and we have substantial, &lt;strong&gt;useful documentation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Do you have some spare time in which you could help with this impressive project? Could you give even an outsiders&amp;#8217; view to the docs sprint; is there anything we&amp;#8217;re missing? Please don&amp;#8217;t hesitate to give me or any of the contributors a message of advice!&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;em&gt;I mirrored this post on the &lt;a title="SliTaz Community" href="http://community.slitaz.org/node/128" target="_blank"&gt;SliTaz Community&lt;/a&gt;, and have received some very useful and encouraging feedback from members. A big thank-you goes out to everyone involved in the project! I highly recommend you trying out this up-and-coming (if not already there!) project to see what all the fuss is about!&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/561534249</link><guid>http://blog.seawolfsanctuary.com/post/561534249</guid><pubDate>Fri, 30 Apr 2010 21:09:00 +0100</pubDate><category>slitaz</category><category>documentation</category><category>project</category><category>linux</category></item><item><title>I'm Free!</title><description>&lt;p&gt;As a software developer, the issue of copyright and distributivity can be a contentious issue. Some coders want to keep total control over their work, others want to share it among users.&lt;/p&gt;
&lt;p&gt;&lt;a title="Handshake" href="http://www.flickr.com/photos/aroberts/2282881973/" target="_blank"&gt;&lt;img width="176" alt="Handshake" src="http://farm3.static.flickr.com/2210/2282881973_462815e98b_o.jpg" align="left" height="132"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Usually, software developed in a &lt;a title="proprietary" href="http://www.businesslink.gov.uk/bdotg/action/detail?type=RESOURCES&amp;amp;itemId=1073791277" target="_blank"&gt;proprietary&lt;/a&gt; manner; I define this as many developers working for one company, which hides the wares from anyone else. This one company wants to capitalise on their idea &amp;#8212; and efforts &amp;#8212; only for commercial gain. Secrets agreements or clauses in contracts Often binds the development team and their efforts to that one company; many developers work for just one cause, their employer.&lt;/p&gt;
&lt;p&gt;I understand perfectly that this enhances the reputation of the company and arguably their value to the field for producing their wares. But why constrict the clever chaps (and chap-esses) to just that one company? They can show off their skills and hours to the world, while remaining affiliated with that company. Surely this is even more effective marketing than just quoting the millions of pounds made from purchases?&lt;/p&gt;
&lt;p&gt;&lt;a title="Open Source / Free Software" href="http://www.flickr.com/photos/dff-jisc/4130938452/" target="_blank"&gt;&lt;img width="200" alt="Open Source / Free Software" src="http://farm3.static.flickr.com/2712/4130938452_9591c1292f_m.jpg" align="right" height="121"/&gt;&lt;/a&gt;I &lt;a title="license" href="http://www.gnu.org/philosophy/free-sw.html" target="_blank"&gt;license&lt;/a&gt; my code as free and open-source software (FOSS) so anyone can use obtain and use my work, however they want to. I do this for a number of reasons:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;It allows anyone to use my work, without being restricted to a certain number of copies or, say, running it on a certain number of computers;&lt;/li&gt;
&lt;li&gt;Anyone can include my work in theirs (as long as they reciprocate and attribute me!);&lt;/li&gt;
&lt;li&gt;I can use others&amp;#8217; work and include it in my own, to solve problems or to add extra stuff;&lt;/li&gt;
&lt;li&gt;Whoever is involved in the projects can gain exposure by creating such useful software, especially with the people to which it matters most;&lt;/li&gt;
&lt;li&gt;Other people can provide support in forums, mailing lists, social networks and other resources more easily, by reading the code and the problem hoping to find the missing link between them;&lt;/li&gt;
&lt;li&gt;The combination of exposure and support means that feedback and improvements can be provided from all people involved in its use, from end-users to senior figures.&lt;/li&gt;
&lt;li&gt;The free software licensing ensures it is kept free forever.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a title="Free Software Software (Europe)" href="http://fsfe.org/" target="_blank"&gt;&lt;img width="158" src="http://img696.imageshack.us/img696/7452/fsfe.png" align="right" height="83"/&gt;&lt;/a&gt;My passion for and admiration of free and open source software has led me to join the &lt;a href="http://fsf.org/" target="_blank"&gt;Free Software Foundation&lt;/a&gt;, more specifically their &lt;a href="http://fsfe.org/" target="_blank"&gt;European branch&lt;/a&gt;. I&amp;#8217;m a proud member of this group as feel it also shows a true commitment to free software and my principles. By providing a financial donation equivalent to two pints of beer a month, I help sustain the Foundation and the awareness, industry protection, campaigns and communities it creates.&lt;a title="fsfe Card" href="https://fellowship.fsfe.org/card.html" target="_blank"&gt;&lt;img width="61" alt="fsfe Smart Card" src="https://fellowship.fsfe.org/template/fsfe_card-plain.png" align="left" height="97"/&gt;&lt;/a&gt; I carry around with me the &lt;a title="smart-card" href="https://fellowship.fsfe.org/card.html" target="_blank"&gt;smart-card&lt;/a&gt;; on it I store some geeky stuff for encryption, signing and logging in to my computer (yes, &lt;em&gt;that&lt;/em&gt; geeky!). None of that was why I like this card, though; it signifies that I constantly and consistently abide by my free principles. Each time I open my wallet to show off a business card, borrow a library book or just buy a loaf of bread, the bold colours and title stands out for all to see.&lt;/p&gt;
&lt;p&gt;All the code projects I am part of are free and open. Many cost no money to obtain. I am proud to be part of each and every one, in any case. I do so on the condition that the company also recognise my commitments, totally without force. Spreading the ideas and principles of free software and openness among the computing community &amp;#8212; or any other &amp;#8212; allows people like me to share my ideas and work more freely.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/561529071</link><guid>http://blog.seawolfsanctuary.com/post/561529071</guid><pubDate>Fri, 30 Apr 2010 21:06:00 +0100</pubDate><category>free-software</category><category>fsfe</category><category>open-source</category></item><item><title>Don't Miss DEFT: v5X Review</title><description>&lt;p&gt;Almost two months have passed since Stefano Fratepietro &lt;a title="released" target="_blank" href="http://www.deftlinux.net/2009/12/15/deft-linux-v5-with-xplico-ready-for-download/"&gt;released&lt;/a&gt; the &amp;#8216;100% Italian&amp;#8217; forensics distribution, &lt;a title="DEFT Linux" target="_blank" href="http://www.deftlinux.net/"&gt;DEFT Linux&lt;/a&gt; v5X. With support to its development given by the &lt;a title="Italian Information System Forensics Association" target="_blank" href="http://iisfa.it/"&gt;Italian Information System Forensics Association&lt;/a&gt;, this 660MB+ &lt;a title="Xubuntu" target="_blank" href="http://www.xubuntu.org/"&gt;Xubuntu&lt;/a&gt;-based distribution is one not to miss.&lt;/p&gt;
&lt;!-- more --&gt; 
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Start-Up&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie01bootloader.png/"&gt;&lt;img align="right" src="http://img33.imageshack.us/img33/7845/screenie01bootloader.th.png" border="0"/&gt;&lt;/a&gt;Similar to the high number of *buntu derivatives, the boot screen presents the option to start DEFT, run the Memtest utility or boot the hard disk after asking for the preferred language. No time wasted on the booting screens; plain-text from the 2.6.31-14-generic kernel scrolls by to a text-based prompt. Nothing appears out of the ordinary here but those with sharp eyes may notice this message displayed:&lt;/p&gt;
&lt;pre&gt;ramzswap disk size set to 127340KB&lt;br/&gt;Adding 127340k swap on /dev/ramzswap0&lt;/pre&gt;
&lt;p&gt;This is not activating swap partitions available on the hard disks but creating one from the leftover RAM at /dev/ramzswap0. Also among common forensic issues with Linux booting, the output is confirmation that ext3 partitions &amp;#8212; such as the CD image and hard disks &amp;#8212; are mounted as ext2, even at this stage. This ensures that journals are not used to modify the partitions, as noted in my earlier post on CAINE v1.5. Rest assured that the booting process does not compromise its forensic reliability, as the hashing of disk drives with ext3, FAT32 and NTFS partitions surrounding its boot-up and shut-down yield identical results.&lt;br/&gt;&lt;br/&gt;&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie02login.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/9941/screenie02login.th.png" border="0" align="right"/&gt;&lt;/a&gt;When the system has booted &amp;#8212; noticeably snappier than other Live distributions, might I add &amp;#8212; DEFT automatically presents the user with the root command prompt, with advice to type startx to get graphical. While admins everywhere may find this harsh, a low-memory computer may benefit from such a preference and many applications can still be used. One would imagine that should this be necessary, the text prompt would be a fall-back option anyway. Unfortunately no more information was given about this prompt, so the X graphics system was started without hesitation.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Desktop &amp;amp; Applications&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie03desktop.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/7935/screenie03desktop.th.png" border="0" align="right"/&gt;&lt;/a&gt;The LXDE/Xfce desktop is presented without complaint, after one startx command. Despite the overwhelming control provided by the root user, the privileges are given to ensure system-level applications work effectively. The desktop is well presented and comprises the file manager, terminal, MountManger, CD writer and an &amp;#8216;Evidence&amp;#8217; folder. I am unsure of this tactic to give the user a default location for collected files in memory: first-time users may incorrectly assume that the folder is permanent storage but conversely could lead to the exact opposite when it is obvious the folder is not stored on the users&amp;#8217; usual media.&lt;br/&gt;&lt;br/&gt;The Computer Forensics menu contained applications one would expect to find, such as Autopsy, Guymager, Ophcrack, WireShark and a hash calculator, GHash. There were also a few applications I had not found in other distributions, specialist or otherwise, such as:&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie04apps.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/7209/screenie04apps.th.png" border="0" align="right"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Gigolo&lt;br/&gt;easily connect to remote file-systems (SSH, FTP, WebDav etc.)&lt;/li&gt;
&lt;li&gt;SciTE&lt;br/&gt;text editor&lt;/li&gt;
&lt;li&gt;ClamTK&lt;br/&gt;virus scanner&lt;/li&gt;
&lt;li&gt;&lt;a title="Xplico" target="_blank" href="http://www.forensicswiki.org/wiki/Xplico"&gt;XPlico&lt;/a&gt;&lt;br/&gt;comprehensive network traffic capture with an Autopsy-like interface&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie4xplico.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/176/screenie4xplico.th.png" border="0" align="right"/&gt;&lt;/a&gt;The inclusion of these applications allow DEFT users to perform more on-site tasks than with other distributions, extending its usefulness beyond simple acquisition, verification and light analysis. Future issues can be identified such as viruses, the transmission of network data and data collection from remote sources.&lt;/p&gt;
&lt;p&gt;A number of user-friendly additions appear in the Preferences menu, such as easy network file sharing &amp;#8212; prompting installation of services if they are not present &amp;#8212; and desktop configuration. (If these are recent additions in the (X)Ubuntu base I cannot say, as I&amp;#8217;ve very little experience with it.) The toolkit is further improved with support for AFF and EWF files and their utilities, LVM utilities and desktop recording. These applications and libraries make DEFT a highly mature and worthy toolkit for forensics and incident response.&lt;br/&gt;&lt;a target="_blank" href="http://img33.imageshack.us/i/screenie5mm.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/6082/screenie5mm.th.png" border="0" align="right"/&gt;&lt;/a&gt;&lt;br/&gt;It was the third desktop icon drew my attention before any other: &lt;a title="MountManager" target="_blank" href="http://www.kde-apps.org/content/show.php/MountManager?content=76502"&gt;MountManager&lt;/a&gt; is a QT-based file-system mounting application. Unfortunately this is not so user-friendly; littered with per-file-system options to select, it lists the storage media available to the system in a check-box heaven. While the DEFT developers can do nothing about this, the interface is nothing short of horrendous on any resolution below 1200 pixels.On my first run, I conducted a test to simply mount ext3, FAT32 and NTFS partitions from MountManager, as if on a suspect system. Unfortunately to no avail, without indication of why the partitions simply did not respond. &lt;a target="_blank" href="http://img33.imageshack.us/i/screenie7mount.png/"&gt;&lt;img src="http://img33.imageshack.us/img33/9950/screenie7mount.th.png" border="0" align="right"/&gt;&lt;/a&gt;My mistake was perhaps using MountManager&amp;#8217;s default /mnt mountpoint, as the MM worked using /media instead. When the PCMan File Manager was used, however, the partitions were mounted with default R/W options in the /media directory. Quite why neither application defaults to read-only mounting is an issue hopefully answered in future releases and made with great warning to current users.&lt;/p&gt;
&lt;p&gt;A point worth discussing seems to appear in all manner of contemporary operating systems: memory usage. After my trail exploration of DEFT, the free -h command told of a 400-megabyte usage of the half-gigabyte allocated to the virtual machine. This was confirmed after a restart where the output was still 325 megabytes by just the desktop and terminal. Both these figures seem unnecessarily high considering any acquisition or similar task will consume more than its fair share of resources. This did not affect normal running of the desktop and applications, they were performing to expectations at these levels. However when the virtual machine&amp;#8217;s RAM was decreased to a lowly 256 megabytes, 240 was used; similarly, only 2 megabytes remained free from 128. This led to a sluggish desktop and near-impossible application experience on low-end specifications, compounded with the noticeably-increasing starting and working times. This is arguably unanimous with CD-based live distributions but still worth considering in situations where memory is not up to contemporary standards.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;One would imagine the wide-ranging collection of software given in DEFT are of particular importance to the parties using the distribution; one can assume they need more than the generic acquisition and analysis of systems while remaining in the scope of live response. This is extended with the inclusion of extra libraries and more fully-featured tools. Moreover, DEFT now raises the bar set by the competition. These show a generous amount of time and consideration have been put into the development of DEFT. One could argue performance will be hampered at lower-specification systems, especially if any intensive tasks are completed, but this seems a weakness on many similar distributions. Despite this, its relevance to IR is commendable and has become a mature and highly useful distribution.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/372387323</link><guid>http://blog.seawolfsanctuary.com/post/372387323</guid><pubDate>Fri, 05 Feb 2010 13:00:00 +0000</pubDate><category>deft</category><category>linux</category><category>review</category><category>forensics</category></item><item><title>Pitfalls of mounting file systems - Suhanov Maxim [PDF]</title><description>&lt;a href="http://www.computer-forensics-lab.org/pdf/Linux_for_computer_forensic_investigators.pdf"&gt;Pitfalls of mounting file systems - Suhanov Maxim [PDF]&lt;/a&gt;: &lt;p&gt;This short paper identifies requirements of forensic Linux distributions regarding boot-time file-system handling. Maxim identifies a couple of issues with boot-loaders &amp; initialisation scripts and compares leading products for their vulnerability.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/348913441</link><guid>http://blog.seawolfsanctuary.com/post/348913441</guid><pubDate>Sat, 23 Jan 2010 12:06:00 +0000</pubDate><category>forensics</category><category>linux</category></item><item><title>FreeBSD: 101... and a bit</title><description>&lt;p&gt;In the last post in this three-parter, we installed FreeBSD on to either a physical or virtual computer. Now we need to apply some basic configuration to adjust permissions, choose a graphical log-in manager and start the desktop. Don&amp;#8217;t worry, though: it&amp;#8217;s very straightforward!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;&lt;img width="242" alt="FreeBSD Logo" src="http://www.freebsd.org/logo/logo-full.png" align="right" height="87"/&gt;We have a basic FreeBSD installation, ready and waiting to be started. If we do so, we are presented with the FreeBSD bootloader &amp;#8212; and a lovely one it is too. The options are far from an enigma; proceed with the first (default) option. Cast your eyes over the aesthetically repulsive babble that it will spew.&lt;/p&gt;
&lt;p&gt;After a short time, we will arrive at the log-in prompt. I hope you remember the password for the &amp;#8216;root&amp;#8217; account because the first few configuration steps are administrative and need the elevated priviledges.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;It&amp;#8217;s So Funny, It&amp;#8217;s Been On &lt;a title="xkcd" target="_blank" href="http://xkcd.com/149/"&gt;xkcd&lt;/a&gt;.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img width="180" alt="xkcd: sudo cartoon" src="http://imgs.xkcd.com/comics/sandwich.png" align="right" height="150"/&gt;To perform certain administrative commands, the &lt;i&gt;root&lt;/i&gt; account must be used, so normal users cannot mess with the system. If these commands were mistyped, though, running them under the &lt;i&gt;root&lt;/i&gt; account can be dangerous. To add a little protection, we shall allow the other user accounts to temporarily obtain administrative privileges through the &lt;i&gt;sudo&lt;/i&gt; command. To do this, we must edit the &lt;i&gt;/etc/sudoers&lt;/i&gt; file. As in Linux, we can do so by using the &lt;i&gt;visudo&lt;/i&gt; command, a wrapper to the &lt;i&gt;vi&lt;/i&gt; editor. The file is fairly straightforward; press the &amp;#8216;Insert&amp;#8217; key to enable editing and duplicate the line that reads as follows, modifying it according to your other username:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;root     ALL=(ALL) ALL&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Press Escape to exit editing mode, and type the following command to save the file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:write&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This will write the new sudoers file. Quit the visudo editor by typing:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:quit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If all is well, you will return to the prompt without any error messages. If errors are displayed, check the syntax of the line and that no others have been accidentally modified by running &lt;i&gt;visudo&lt;/i&gt; again. We can now logout from &lt;i&gt;root&lt;/i&gt;, back in as the normal user and safely perform administrative commands simply by prefixing your command with &lt;i&gt;sudo&lt;/i&gt;. Each time &lt;i&gt;sudo&lt;/i&gt; is used, it will ask for the normal account&amp;#8217;s password: this ensures commands do not elevate themselves by using &lt;i&gt;sudo&lt;/i&gt; without your knowledge. Let&amp;#8217;s see &lt;i&gt;sudo&lt;/i&gt; in action right-away to edit an configuration file.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Getting Graphical&lt;/b&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;By now, you may be a little tired of all this command-line business! While it&amp;#8217;s extremely useful to know some shell-fu, there is a more intuative way around your system! The X Window System (a.k.a. X11, or simply X) is the tool for this job &amp;#8212; but needs a helping hand from the hardware detection systems before it can be started. How else will it know about your graphics card, monitor or mouse? Use &lt;i&gt;sudo&lt;/i&gt; and the familiar text editor &lt;i&gt;vi&lt;/i&gt; to add the following lines to the start-up configuration at &lt;i&gt;/etc/rc.conf&lt;/i&gt;&amp;#160;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hald_enable="YES"&lt;br/&gt;dbus_enable="YES"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;With the two services now starting with the system, X should be able to run. Quit &lt;i&gt;vi&lt;/i&gt; to return to the command line. If you don&amp;#8217;t want to reboot again, we can start them manually with the following two commands:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo /usr/local/etc/rc.d/dbus start&lt;br/&gt;sudo /usr/local/etc/rc.d/hald start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If the two services have started, you should be able to start X when you boot up the system! Should you do this, though, you may not receive quite the interface you expect: your desktop environment, or DE, is the style of interface with which you use your computer. Many fall between two, GNOME &amp;amp; KDE, both of which are available for FreeBSD. So far, neither is preferred as the log-in is performed in a text-based console, after which a user must start X manually. If you wish to use the graphical system for everything, we can change this by adding a graphical login manager to the start-up sequence. This enables users to log-in with a pretty graphical system rather than a command-line and start X manually. To do this, edit the /etc/ttys file and find the line starting with &amp;#8220;ttyv8&amp;#8221;. If you have installed KDE, use KDM as in the following line; if you have GNOME, use GDM as in the 2nd line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ttyv8 "/usr/local/kde4/bin/gdm -nodaemon" xterm on secure&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If GNOME is your thing, it might be a good idea to speed up GNOME&amp;#8217;s loading mechanism by adding an extra line to /etc/rc.conf as before:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gnome_enable="YES"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That step isn&amp;#8217;t necessary for KDE users; it just starts a couple more services behind the scenes to let GNOME start a little quicker.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.kde.org/announcements/4.2/screenshots/desktop.png" target="_blank"&gt;&lt;img width="160" alt="KDE Desktop" src="http://www.kde.org/announcements/4.2/screenshots/desktop.png" align="middle" height="100"/&gt;&lt;/a&gt;&lt;a href="http://library.gnome.org/misc/release-notes/2.26/figures/gnome.png.en" target="_blank"&gt;&lt;img width="160" alt="KDE Desktop" src="http://library.gnome.org/misc/release-notes/2.26/figures/gnome.png.en" align="middle" height="100"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The GNOME desktop environment is default with GDM but if you wish to just use the KDE desktop with either log-in manager, add KDE4 to .xinitrc in your personal (&lt;i&gt;home&lt;/i&gt;) directory:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo "exec /usr/local/kde4/bin/startkde" &amp;gt; ~/.xinitrc&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;That&amp;#8217;s it! After you have rebooted your system, your system will have gotten graphical! Next up, we need to fit the desktop with all we need for a great forensic environment&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Happy Christmas and New Year to all my readers; I hope the winter break is as relaxing and happy as you hope to set you up for 2010!&lt;/i&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/311652095</link><guid>http://blog.seawolfsanctuary.com/post/311652095</guid><pubDate>Tue, 22 Dec 2009 20:30:00 +0000</pubDate><category>howto</category><category>freebsd</category><category>beginners</category></item><item><title>CAINE 1.5 - "Shining" Example of Concious Development?</title><description>&lt;p&gt;Four weeks ago I &lt;a title="reviewed" target="_blank" href="http://seawolfsanctuary.tumblr.com/post/228127394/caine-v1-0-released-reviewed"&gt;reviewed&lt;/a&gt; &lt;a title="CAINE" target="_blank" href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt; v1.0, the first full release of the Italian computer forensics &lt;em&gt;LiveCD&lt;/em&gt;. It took the development team a mere six weeks to release version 1.5; how much an improvement is this edition? How far can one distribution go in such a short time to reach such an increment?&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Well, should you look at the &lt;a title="ChangeLog" target="_blank" href="http://www.caine-live.net/page6/files/category-release.html"&gt;ChangeLog&lt;/a&gt;, the answer would be not very far. The changes listed are just additions of small software packages, without improvements to its application that one may expect from such a large version increase. A few improvements have been made, such as a &amp;#8216;read-me&amp;#8217; in the &amp;#8216;Bash Scripts Tools&amp;#8217; folder, a more complete copy of documentation from the website &amp;amp; a couple more icons are present on the Desktop &amp;#8212; but aspects of CAINE&amp;#8217;s application remain the same, such as its prized &lt;em&gt;CAINE Interface&lt;/em&gt;. So too is the back-end of the system; I cannot notice much (if any) improvement on start-up or operational speed, system optimisations or further customisation of &lt;em&gt;Ubuntu&lt;/em&gt; software.&lt;/p&gt;
&lt;p&gt;While it is still a good product and contains many useful features, I fear that more time should have been taken to release this next iteration and a more accurate version number of v1.1 should be used due to this lack of major development.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/259530810</link><guid>http://blog.seawolfsanctuary.com/post/259530810</guid><pubDate>Fri, 27 Nov 2009 14:30:00 +0000</pubDate><category>caine</category><category>linux</category><category>review</category><category>forensics</category></item><item><title>Computer Forensic Analysis in a Virtual Environment -- Bem &amp; Huebner, IJDE [PDF]</title><description>&lt;a href="http://www.utica.edu/academic/institutes/ecii/publications/articles/1C349F35-C73B-DB8A-926F9F46623A1842.pdf"&gt;Computer Forensic Analysis in a Virtual Environment -- Bem &amp; Huebner, IJDE [PDF]&lt;/a&gt;: &lt;p&gt;Discusses the use of virtualisation to facilitate analysis of imaged suspect storage. While the virtualised environment differs greatly from areal-world set-up, this method can prove powerful for live file analysis and/or re-creating the basics of the system.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/254353061</link><guid>http://blog.seawolfsanctuary.com/post/254353061</guid><pubDate>Mon, 23 Nov 2009 14:06:00 +0000</pubDate><category>forensics</category></item><item><title>One Step to Admiration and Appreciation</title><description>&lt;p&gt;So often doing something is simply not enough. You need to &lt;b&gt;show&lt;/b&gt; what has been achieved, talk about it, point out how other people can use it, build upon it. Most importantly of all, though: &lt;b&gt;write about it&lt;/b&gt;.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Words on paper cement your actions and efforts for everyone to admire. This is more true in the digital world than&amp;#160;; describing your code is arguably more important than writing code in the first place. After all, if it weren&amp;#8217;t useful, why should anyone use it? Why would anything be done if it didn&amp;#8217;t have end results? It may seem drudgery to spend a while writing up what you have spent the past while looking at, but it really does take a very short time when compared to the length of the contribution. Quite how so many developers labour over their projects for days to years, with the only hint on how it works shrouded in the programming syntax of the source code. This is nothing short of perplexing! Even for those that do not fit the stereotypical quiet, modest worker, proverbially blowing one&amp;#8217;s own trumpet should be done on every worthy occasion!&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Found a niche or don&amp;#8217;t like how other software solves a problem? Say so!&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Come up with a neat trick in your code? Borrowed some methodology from elsewhere? Brag about it in a blog post! Scribble a note in the &amp;#8220;how awesome is my software?&amp;#8221; section of the documentation.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Wait, you haven&amp;#8217;t written any documentation? Get to it! No-one will know how important your work is unless you tell someone something about it!&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;Let&amp;#8217;s take a moment to think about the broader picture. When you contribute something to a project, big or small, who will be affected by it?&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;You.&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;This may be obvious but it goes deeper than one may expect: it doesn&amp;#8217;t matter if you haven&amp;#8217;t spent countless hours on a major project or merely minutes writing a small but useful patch (heck, they&amp;#8217;re all useful if they&amp;#8217;re good and even the bad ones are a start), you have spent time contributing to something. That&amp;#8217;s time that could have been spent elsewhere. If it was coding, you will no doubt receive some kind of reciprocation for your efforts, be it a user thanking you or a member of the development team saying that it&amp;#8217;s not how things are usually done and explaining how it should be. Your name will be noticed (believe me, it will) and it&amp;#8217;s something you can use when trying to introduce yourself to other projects.&lt;/blockquote&gt;
&lt;ul&gt;&lt;li&gt;Developers / Artists / Musicians / Writers&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;For other members of the project, it&amp;#8217;s work they won&amp;#8217;t have to do! Their project will be improved and it will be directly because of you. Whether it be code, a new icon, a sound-bite or additions/corrections to a website, the quality will be raised.&lt;/blockquote&gt;
&lt;ul&gt;&lt;li&gt;The World&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;What? I&amp;#8217;m serious: your contribution may make your project that little bit better but that in turn raises the average. The little part of the world where your project sits has just become all the more special. The open-source movement has taken some flak for being weak in certain areas, a statement with which I agree, but conversely that means there are areas in which it succeeds. Its strengths would not be this great if people had not done something to make it so. Raise both the quality of your project and the bar for everyone else.&lt;/blockquote&gt;
&lt;ul&gt;&lt;li&gt;Users&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is both the biggest and smallest point. There will no doubt be a great percentage of users that will never be known. They stumble across the project, decide to try it out from its blurb or feature list. They may use it regularly or keep it somewhere in their system for that one &amp;#8216;&lt;i&gt;just the job&lt;/i&gt;&amp;#8217; moment. There are others however, that get in touch &amp;#8212; notes are left on the project or developers blog, posts are sent to a mailing list, comments added to a bugtracker. But how did these users become so in the first place? I&amp;#8217;ll gave you a hint: they found your project because they wanted it to do something, because it does something they want, because someone has said it does.&lt;/p&gt;
&lt;p&gt;Gotcha!&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Someone has said it does.&lt;/i&gt; Someone has written &lt;i&gt;something&lt;/i&gt;, &lt;i&gt;somewhere&lt;/i&gt;, to say what the project is and perhaps its features. Hopefully, there will be some kind of specification for its use too, its requirements or prerequisites. These are perhaps the second pieces of information that comes out of a project, as most places that house projects would require some.&lt;/p&gt;
&lt;p&gt;For some though, this is how far the documentation goes. If this is the case, &lt;b&gt;it&amp;#8217;s not finished. &lt;/b&gt;In other areas of production, this level of information isn&amp;#8217;t just a bad idea, it&amp;#8217;s illegal. Buy a pizza from a supermarket and it may have a delicious name and describe what a &amp;#8216;deluxe&amp;#8217; topping actually is but it is a legal requirement to give other information. Okay, in software there is no such definition to documentation but it is highly expected when delivering high-quality products.&lt;/p&gt;
&lt;p&gt;Some potential users, though, only use software that is made in a certain way, uses certain other software or won&amp;#8217;t do certain things. How can they decide and then become actual users?&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not just talking about the &amp;#8216;stage one&amp;#8217; documentation, though. While step-by-step installations instructions and a good README are essential to get up and running, truly useful documentation takes much more. Great examples are real-world tutorials, answers to frequently asked questions and a plain English explanation of features, not a technical list of all the ins-and-outs of the interface (while that has it&amp;#8217;s place). Expect your users to want to understand your project rather than just click, &amp;#8220;Go.&amp;#8221;&lt;/p&gt;
&lt;p&gt;While the argument that a good user interface should be easy enough to understand in order to use the project, it just isn&amp;#8217;t enough. Why does that button perform that event? Where does this list of data come from? How can we change it and why should we want to? While there is no common line to adjudicate for how detailed your docs should be, all of them should be practical, useful words on getting the best out of your project. It may take time, but so too does writing the code and everyone will appreciate it tenfold should there be notes explaining what it does and how to use it in the broader sense.&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;i&gt;How much documentation do you write? Do you only use software or real-world artefacts that come with decent instructions, an FAQ and a help or support mechanism? Do you think that if someone can&amp;#8217;t figure out how to use something, they shouldn&amp;#8217;t? What are the best examples of documentation that you have seen? Let&amp;#8217;s make everyone&amp;#8217;s efforts shine all the more!&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;(Big thanks to &lt;a title="Carla Schroder" target="_blank" href="http://www.linux.com/archive/feature/147981"&gt;Carla Schroder&lt;/a&gt;&amp;#8217;s &lt;a title="blog post" target="_blank" href="http://blog.linuxtoday.com/blog/2009/11/linux-bug-1-bad.html"&gt;blog post&lt;/a&gt; on &lt;a title="Linux Today" target="_blank" href="http://www.linuxtoday.com/"&gt;Linux Today&lt;/a&gt; for inspiring me to write this!)&lt;/i&gt;&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/253129881</link><guid>http://blog.seawolfsanctuary.com/post/253129881</guid><pubDate>Sun, 22 Nov 2009 15:50:00 +0000</pubDate><category>contribution</category><category>documentation</category><category>appreciation</category><category>development</category></item><item><title>CAINE v1.0 Released &amp; Reviewed</title><description>&lt;p&gt;It may be said that Linux distributions are like &lt;strong&gt;buses&lt;/strong&gt;: we can wait at the roadside and see many interesting things go by, when we are waiting for our favourite to come around the corner it seems an age and we worry we&amp;#8217;ve missed something, the old adage that we wait and - eventually - many turn up at once. No more true is that than now because &lt;em&gt;Ubuntu&lt;/em&gt; has just had a new release, &lt;em&gt;Fedora&lt;/em&gt; is currently in beta awaiting its finishing touches and, our feature presentation, &lt;strong&gt;&lt;em&gt;&lt;a title="CAINE" target="_blank" href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; has just turned the big &lt;em&gt;one-point-zero&lt;/em&gt;.&lt;/p&gt;
&lt;!-- more --&gt; 
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Italian-born &amp;#8220;&lt;em&gt;Computer Aided Investigative Environment&lt;/em&gt;&amp;#8221; is an &lt;em&gt;Ubuntu&lt;/em&gt;-based Live &lt;strong&gt;CD&lt;/strong&gt; for &lt;strong&gt;collection&lt;/strong&gt;, &lt;strong&gt;analysis&lt;/strong&gt; and &lt;strong&gt;reporting&lt;/strong&gt;, featuring many common tools to form a decent forensic &lt;strong&gt;toolkit&lt;/strong&gt;. Most notably a straightforward graphical front-end is included to guide users through the stages and - crucially, usefully - log the output of the called applications. Also noteworthy is the project&amp;#8217;s &lt;strong&gt;Netbook&lt;/strong&gt; edition, based on the &lt;strong&gt;USB&lt;/strong&gt; edtion. At the time of writing however this was unavailable, so this review concentrates on the (perhaps greater used) Live CD version. &lt;em&gt;I assume that my reader is familiar with the acquisition process and has previously used some of the applications &lt;/em&gt;&lt;em&gt;included&lt;/em&gt;&lt;em&gt;, such as dc3dd or AIR, as emphasis is not placed on them but the environment in which they are run.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Starting&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The initial screen presented by CAINE is a customised &lt;em&gt;GRUB&lt;/em&gt; boot-loader; it presents options to &lt;strong&gt;run&lt;/strong&gt; the Live environment (in both full and safe graphics modes), &lt;strong&gt;install&lt;/strong&gt; it using the standard Ubuntu installer, &lt;strong&gt;check&lt;/strong&gt; the media for errors or continue to &lt;strong&gt;boot&lt;/strong&gt; the computer as normal. I make a point of this because of one &lt;strong&gt;cosmetic&lt;/strong&gt; feature: when an option has been selected, the menu appears to fade out to black. Tiny and insignificant, certainly, but its there in case you missed it. Other than this, the boot-loader&amp;#8230; ummm&amp;#8230; &lt;strong&gt;works&lt;/strong&gt;. Good.&lt;/p&gt;
&lt;p&gt;&lt;img height="240" align="center" src="http://img11.imageshack.us/img11/5435/caine100.png" alt="CAINE 1.0 GRUB bootloader" width="320"/&gt;&lt;/p&gt;
&lt;p&gt;For some reason, the media check procedure is a hastily-added &lt;a title="Crunchbang Linux" target="_blank" href="http://crunchbanglinux.org/"&gt;Crunchbang Linux&lt;/a&gt; feature, as the aesthetically-&lt;strong&gt;displeasing&lt;/strong&gt; graphics show. I feel a simple text-based interface would have sufficed, as a defective disc is a defective disc; one could not do much to fix it.&lt;/p&gt;
&lt;p&gt;Traditionally, &lt;em&gt;Ubuntu&lt;/em&gt;(-based) distributions are hesitant to flood the user with &lt;strong&gt;messages&lt;/strong&gt; as the system loads; they are often hidden behind a graphical splash containing a loading bar and a handful of text. &lt;em&gt;CAINE&lt;/em&gt; refutes this, and adopts the more techie-friendly method of line-by-line output. Perhaps this is a good thing, but it may seem more &lt;strong&gt;polished&lt;/strong&gt; if added.&lt;/p&gt;
&lt;p&gt;In fact, it &lt;em&gt;is&lt;/em&gt; a good thing for one simple reason: it allows a user to see what is going on and thus the boot process can be &lt;strong&gt;verified&lt;/strong&gt;. To prove this point, one will notice a peculiar &lt;strong&gt;message&lt;/strong&gt; is displayed, reading:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;EXT2-fs warning (device: sda1) ext2-fill-super: mounting ext3 file-system as ext2&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="200" align="center" src="http://img297.imageshack.us/img297/9717/caine101.png" alt="CAINE 1.0 ext2/3 message" width="360"/&gt;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Ahh! &lt;strong&gt;Mounting&lt;/strong&gt;?! No!&amp;#8221; may be your thoughts. Fear not; this simply means that the &lt;strong&gt;ext3&lt;/strong&gt; driver &lt;em&gt;will be&lt;/em&gt; ignored when ext2 and ext3 partitions are mounted in the future and the &lt;strong&gt;ext2&lt;/strong&gt; driver used instead. This protects any ext3 partitions from a forensic point-of-view. Why? ext2 does not use &lt;strong&gt;&lt;a title="journalling" target="_blank" href="http://en.wikipedia.org/wiki/Journaling_file_system"&gt;journalling&lt;/a&gt;&lt;/strong&gt;, so when an ext3 partition is mounted, there is no danger of modifying the meta-data when increasing the count inside said journal.&lt;/p&gt;
&lt;p&gt;&lt;img height="200" align="center" src="http://img297.imageshack.us/img297/3900/caine103.png" alt="CAINE 1.0 mount options" width="360"/&gt;&lt;/p&gt;
&lt;p&gt;While we are on the subject of partitions: when they are mounted, the &lt;strong&gt;flags&lt;/strong&gt; include &amp;#8216;ro&amp;#8217; (read-only) and &amp;#8216;loop&amp;#8217; (the loop-back device is used). The advantage of the &amp;#8216;ro&amp;#8217; flag should be obvious but &amp;#8216;loop&amp;#8217; perhaps not. By mounting an image file through the loop-back device, it can be treated as a physical disk. Another layer of read-only protection can be applied to the loop-back device. Furthermore, if a physical drive/partition is used, it should protect the meta-data. &lt;em&gt;(I have not yet tested this, so if please provide me with a more correct/accurate explanation!)&lt;/em&gt; While this is effective for image files, take heed with physical partitions:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Warning: When using a loop-back device, occasionally the ext2 file-system seems to get corrupted for no apparent reason. If you start getting errors in the middle of make_root_fs from sys() complaining that a directory doesn&amp;#8217;t exist, this may be what is happening. I don&amp;#8217;t know why this happens and I can&amp;#8217;t reproduce it consistently; however, unmounting, deleting and re-creating the file seems to get rid of the problem. &lt;/em&gt;&lt;a href="http://www.linuxlots.com/~fawcett/yard/Yard_doc-14.html" target="_blank"&gt;Source&lt;/a&gt; (from 1998, I cannot be sure how correct this is!)&lt;/p&gt;
&lt;p&gt;I have been informed that this v1.0 release is the first CAINE to be &lt;strong&gt;fully&lt;/strong&gt; forensically sound. This is due to modifications applied to the start-up procedures (the init scripts) and patches applied to file-system drivers. I have not yet tested this distro to as fully a practical extent but hope to do so soon. I would imagine that the 1.0 milestone would b the perfect place to ensure such a claim is upheld!&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Desktop&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img height="300" align="center" src="http://img297.imageshack.us/img297/3449/caine104.png" alt="CAINE 1.0 desktop" width="400"/&gt;&lt;/p&gt;
&lt;p&gt;As in previous versions, the &lt;strong&gt;desktop&lt;/strong&gt; interface is a customised &lt;em&gt;GNOME&lt;/em&gt;, with a very &lt;em&gt;Windows&lt;/em&gt;-like layout. The useful inclusion of the &lt;strong&gt;disk mounter&lt;/strong&gt; applet, shown at the bottom-centre of the screen, is a list of partitions available on the system. Right-click on those icons and you can mount it read-only. One bug surfaces here: upon mounting, the icon is &lt;strong&gt;duplicated&lt;/strong&gt;. I suspect this is because the device holds both a &lt;em&gt;&amp;#8216;sda1&amp;#8217;&lt;/em&gt;-type node and a &lt;em&gt;loop0&lt;/em&gt;-type node, because of the use of the loop-back system. This does not matter on a practical level however because the node at &lt;em&gt;&amp;#8216;sda1&amp;#8217;&lt;/em&gt; is still perfectly accessible and is still applied through the loop-back system. The &lt;strong&gt;menu&lt;/strong&gt; is boosted by a &amp;#8216;Forensic Tools&amp;#8217; folder containing links to the range of applications bundled (described later). Many standard desktop &lt;strong&gt;applications&lt;/strong&gt; are provided, including word processor (AbiWord), spreadsheet (Gnumeric) and sound &amp;amp; movie players. A decent inclusion lies in &lt;em&gt;gtkRecordMyDesktop&lt;/em&gt;, which creates a &lt;strong&gt;video&lt;/strong&gt; of the on-screen activity - useful for documentation and evidential proof. On the technical front, a partition editor (GParted) is included along with a network manager (wicd) and&amp;#8230; not much else.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Applications&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img height="156" align="center" src="http://img297.imageshack.us/img297/6280/caine106.png" alt="CAINE 1.0 'Interface'" width="245"/&gt;&lt;/p&gt;
&lt;p&gt;The Forensic Tools folder is where the &lt;strong&gt;action&lt;/strong&gt; is, quite literally. It is these applications that the distribution specialises in and the vast majority are controlled by a leading feature: the &lt;em&gt;CAINE Interface&lt;/em&gt;. This GTK+ application &lt;strong&gt;guides&lt;/strong&gt; the user through the stages a forensic investigation may take. A tabbed interface appears after we create the case and investigator name; each tab groups actions into image analysis, collection, system analysis and reporting. Each of these tabs simply &lt;strong&gt;launch&lt;/strong&gt; various standard forensic applications and collects their output behind-the-scenes to present in a well-formed &lt;strong&gt;report&lt;/strong&gt;. It may be a simple front-end that doesn&amp;#8217;t do a lot of work but it doesn&amp;#8217;t need to; it simply needs to collate the output of each program and attach some personal notes, which it does very well. In my quick testing of image acquisition and analysis, I could not find any problems with the end RTF-formatted report. In fact, if the application is kept open and parts of the process are completed after the report is generated, this is noted by adding revision information.&lt;/p&gt;
&lt;p&gt;&lt;img height="273" align="center" src="http://img297.imageshack.us/img297/8042/caine107.png" alt="CAINE 1.0 AIR application" width="300"/&gt;&lt;/p&gt;
&lt;p&gt;The applications  launched combine to create a good range of &lt;strong&gt;features&lt;/strong&gt;. Acquisition can be performed using either a GTK+ or Qt application, to local, network or removable media in a variety of formats; the analysis tools carry out interesting operations that may yield effective results. They provide a decent level of logging - some even the command executed - to show activity, a standard practice if not requirement.&lt;/p&gt;
&lt;p&gt;There are a few &lt;strong&gt;problems&lt;/strong&gt; with each application but these are arguably &lt;strong&gt;outside&lt;/strong&gt; the concern of CAINE&amp;#8217;s developers. For example, AIR displays only IDE disks in the menu but both IDE and SATA in the toolbar (which rests at the bottom of the window, for some UX-related reason?) when they should reflect each other. Guymager automatically appends an extension to the image file, compromising some flexibility. &lt;strong&gt;Documentation&lt;/strong&gt; could be improved - arguably across the board - too.&lt;/p&gt;
&lt;p&gt;&lt;img height="231" align="center" src="http://img297.imageshack.us/img297/7118/caine105.png" alt="CAINE 1.0 mysterious scripts" width="332"/&gt;&lt;/p&gt;
&lt;p&gt;One area of concern lies in the folder named, &amp;#8220;Bash Scripts&amp;#8221; which contains a handful of scripts to run inside a terminal window. At a quick glance, I cannot work out what they are for and some of them do not work (the &lt;em&gt;ddrescue&lt;/em&gt; and &lt;em&gt;dc3dd&lt;/em&gt; contained in this folder are not even scripts but links, and return the error, &amp;#8220;&lt;em&gt;Too many levels of symbolic links&lt;/em&gt;,&amp;#8221; on both display and execution). These are linked to both on the desktop and in the launcher menu, so one can assume they are of some usefulness or importance. One can run the commands, referring to those stored in /usr/bin etc. but then I cannot see why these links exist!&lt;/p&gt;
&lt;p&gt;As with many Live CD environments, &lt;strong&gt;memory&lt;/strong&gt; usage is an issue. By running the &lt;em&gt;free&lt;/em&gt; command inside a terminal window as soon as the desktop has loaded, we can see that nearly &lt;strong&gt;five hundred&lt;/strong&gt; megabytes of RAM is used. Of course, &lt;strong&gt;swap&lt;/strong&gt; is not activated either, so this cannot compensate. On my test system, this left behind &lt;strong&gt;six&lt;/strong&gt; for my applications! One would imagine that this adversely affects the performance of particularly the acquisition and hashing operations but I have not yet performed such tests. This will however decrease should the product be &lt;strong&gt;installed&lt;/strong&gt;, an action I did not take during my testing.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The first full release of CAINE fulfils nearly every requirement for an acquisition, analysis and reporting platform. It is apparently the first release to be fully forensically sound, thanks to the modifications applied to the start-up procedures. One may forgive the perhaps heavy desktop as it is a familiar one, but could argue that alternatives could be used satisfactorily. The applications included are all stable, useful and included for a purpose. One would hope that optimisation is on the developers minds for future releases.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Post Updates&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;1st CAINE release to be fully forensically sound (31 Oct &amp;#8216;09)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;init scripts &amp;amp; fs driver modifications&lt;/em&gt;&lt;em&gt; (31 Oct &amp;#8216;09)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;disambiguation&lt;/em&gt;&lt;em&gt; (31 Oct &amp;#8216;09)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.seawolfsanctuary.com/post/228127394</link><guid>http://blog.seawolfsanctuary.com/post/228127394</guid><pubDate>Fri, 30 Oct 2009 18:30:00 +0000</pubDate><category>caine</category><category>linux</category><category>review</category><category>forensics</category></item><item><title>FreeBSD: 101</title><description>&lt;p&gt;The majority of content here focusses on the GNU/Linux operating system because it is freely available to obtain, install and use. An alternative lies in its perhaps lesser-used cousins, the BSD family. While slightly more technical, they are an equally ultra-reliable bunch. If Linux isn&amp;#8217;t quite your thing, you may wish to use &lt;a title="FreeBSD" target="_blank" href="http://freebsd.org"&gt;FreeBSD&lt;/a&gt; instead. It&amp;#8217;s good idea to at least acknowledge these alternatives exist so I&amp;#8217;ve put together a quick How-To guide to get you started using FreeBSD. I do so using virtualisation in Sun&amp;#8217;s &lt;a title="VirtualBox" target="_blank" href="http://virtualbox.org"&gt;VirtualBox&lt;/a&gt; software, but it makes no difference in terms of the end result.&lt;/p&gt;
&lt;p&gt;&lt;img height="87" align="right" src="http://www.freebsd.org/logo/logo-full.png" alt="FreeBSD Logo" width="242"/&gt;I aim to provide a guide to get FreeBSD up and running more quickly than following the &lt;a title="FreeBSD Handbook" target="_blank" href="http://www.freebsd.org/doc/en/books/handbook/index.html"&gt;FreeBSD Handbook&lt;/a&gt;, an excellent resource should you get stuck. These posts are for those coming from using Linux, so will assume a decent knowledge of Linux and that you&amp;#8217;re not afraid to learn! This post runs through the installation routine; later posts applies some important post-installation configuration to give a solid base system. (We do not, however, discuss any troubleshooting.) An outline of the OS will follow but there&amp;#8217;s only one real way to find out, right?&lt;/p&gt;
&lt;!-- more --&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Grab FreeBSD (the easy bit)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;FreeBSD is available from the &lt;a title="website" target="_blank" href="http://freebsd.org"&gt;website&lt;/a&gt;; the only necessary CD-ROM image is #1. Either burn it to a physical CD-ROM or &amp;#8212; if you&amp;#8217;re using virtualisation &amp;#8212; create a virtual machine with it as the CD-ROM. I estimated that a clean 10GB hard disk will be plenty to house an installation of version 7.2. With your environment prepared, the next step is to install FreeBSD by booting the CD-ROM.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;The Installation (a.k.a, &amp;#8220;I wish I had a mouse&amp;#8221;)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The installation is fairly painless, though it may appear a world away from the point-and-click systems that many current operating systems feature. To navigate, use the arrow keys and the space-bar to select. This is the standard method to use an &amp;#8216;ncurses&amp;#8217; or keyboard-based program.&lt;/p&gt;
&lt;p&gt;After selecting your language settings, chose the &amp;#8216;Custom&amp;#8217; installation method because it is a balance between having few and too many options. This presents a menu structure which you should take one step at a time, down the list. he Options section can be skipped as the only settings inside worth changing can also be set later.&lt;/p&gt;
&lt;p&gt;Partitioning your drive can be as simple or as complicated as you wish; simply tell the installer to use the entire disk as a &amp;#8216;slice&amp;#8217; (press &amp;#8216;A&amp;#8217;), make it bootable (scroll down to it and press &amp;#8216;S&amp;#8217;) before finishing the first partitioning stage (with &amp;#8216;Q&amp;#8217;). Since your drive only houses FreeBSD, you can leave out the bootloader by selecting &amp;#8216;Standard&amp;#8217; from the next prompt.&lt;/p&gt;
&lt;p&gt;Inside the &amp;#8216;slice&amp;#8217; partition, you need to create the secondary partitioning structure that defines whaere parts of the file-system are stored. The default is acceptable, but I  simply create a root (&amp;#8216;/&amp;#8217;) partition filling the whole disk, minus a 512MB swap at the end. To do this, hit &amp;#8216;C&amp;#8217; and specify the size of your first partition (in my case, 9727M), its mountpoint (/) and allowing SoftUpdates upon it (&amp;#8217;S&amp;#8217;). I repeated this to create the swap in the remaining space. By finishing this, the disk can be prepared for software.&lt;/p&gt;
&lt;p&gt;Distributions are essentially bundles of software for types of users. This quickens the installation process substantially. I selected &amp;#8216;X-User&amp;#8217; with the Ports collection by choosing option 9 and &amp;#8216;Yes&amp;#8217; at the following screen. The Ports collection is by far the easiest method of software installation; it is the equivalent of the &amp;#8216;apt&amp;#8217; or &amp;#8216;yum&amp;#8217; package management systems available on Linux. If you do not install this, you will have a lot of compiling to do when it comes to installing software later!&lt;/p&gt;
&lt;p&gt;The installation will commence after the media type is selected, in this case CD-ROM, and your choices confirmed. The disk drive will be prepared, base files extracted and your chosen software installed upon it.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;The Installation&amp;#8230; The Other Half&lt;/b&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Now that the software has been installed, you will be asked if you wish to perform some additional configuration. Proceed to do this because it contains some important steps.&lt;/p&gt;
&lt;p&gt;&lt;img height="113" align="right" src="http://www.paperiphone.com/images/PackageIcon.png" alt="Package" width="123"/&gt;A very useful package lies in the &amp;#8216;linux&amp;#8217; group: Linux binary compatibility allows&amp;#8230; well, compatibility with Linux binaries. That is to say they will run under FreeBSD.&lt;/p&gt;
&lt;p&gt;Another utility that Linux users will want is &lt;i&gt;sudo&lt;/i&gt;, found under &amp;#8216;security&amp;#8217;. This allows regular users to run administrative commands and will need to be configured later to do so. While there is no necessity to use &lt;i&gt;sudo&lt;/i&gt;, it is a good habit to do so for security reasons.&lt;/p&gt;
&lt;p&gt;Installing the two packages inside the &amp;#8216;ports&amp;#8217; group will assist software installation. This will also be discussed later. For now, select both packages there and stop making such a fuss.&lt;/p&gt;
&lt;p&gt;For a graphical interface, we&amp;#8217;ll need to install some additional packages. While the Distribution contains packages for graphics, we don&amp;#8217;t yet have a desktop environment. By selecting the &amp;#8216;kde&amp;#8217; group inside the package list, we are presented with each component of KDE v4.2. While you could choose another desktop environment from &amp;#8216;x11-wm&amp;#8217;, I like to use a more feature-filled option, such as KDE or GNOME. KDE is available by the &amp;#8216;kde4-4.2.2&amp;#8217; item, GNOME from &amp;#8216;gnome2-2.26.0&amp;#8217; &amp;#8212; these are meta-packages, bundles of software which will group the necessary components together in one selection. Notice that other packages are automatically marked for installation as dependencies, with a &amp;#8216;D&amp;#8217;.&lt;/p&gt;
&lt;p&gt;With all the additional software packages selected, continue to install them by pressing &amp;#8216;Tab&amp;#8217; to select &amp;#8216;Install&amp;#8217;. Depending on the desktop slected, this stage will often seem as long as the initial set-up&amp;#8230;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Post-Installation Settings&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Now that the package selection is complete (at last) the last few settings can be carried out. We wil continue to take the next menu step-by-step:&lt;/p&gt;
&lt;p&gt;Arguably the most important setting is the Root Password: the administrative account, named &amp;#8216;root&amp;#8217;, is the only one from which system-level operations can be successfully carried out. Choose a strong password here so the computer will not be easily compromised. Hopefully you won&amp;#8217;t need to use it that often, so pick something you&amp;#8217;ll remember!&lt;/p&gt;
&lt;p&gt;The next two option, &amp;#8216;Fdisk&amp;#8217; &amp;amp; &amp;#8216;Label&amp;#8217; we have already completed in the earlier partitioning, so adding a normal user is the next step. Fill in the login ID (user name) field, a password and enter your full name. The other fields can be skipped.&lt;/p&gt;
&lt;p&gt;The only remaining options to set are &amp;#8216;Time Zone&amp;#8217;, &amp;#8216;Mouse&amp;#8217; &amp;amp; &amp;#8216;Networking&amp;#8217; &amp;#8212; self-explanatory and, because they are computer-dependant, outside scope. Use your knowledge and intuition. After those are set, we can finish the installation by selecting &amp;#8216;Exit&amp;#8217;, the uppermost option on the &amp;#8216;Configuration Screen&amp;#8217; list and the &amp;#8216;Exit Install&amp;#8217; button. The installation system will close and your prepared computer reboot.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Conclusion&lt;/b&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;So far, the basic FreeBSD software have been installed to the hard disk. Those few additional packages expand the selection to give a solid base from which we will continue to use it. Lastly, a little administration was applied to personalise the system. In the next post, we shall boot our installation and perform a little user-level configuration to get things running even more smoothly.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/219041607</link><guid>http://blog.seawolfsanctuary.com/post/219041607</guid><pubDate>Thu, 22 Oct 2009 10:40:00 +0100</pubDate><category>freebsd</category><category>howto</category><category>beginners</category></item><item><title>Harden a Linux Kernel</title><description>&lt;p&gt;At the core of any operating system is its &lt;a title="kernel" target="_blank" href="http://en.wikipedia.org/wiki/Kernel_(computing)#Kernel_basic_facilities"&gt;kernel&lt;/a&gt;,  the basic software code that manages system resources and where all code between application and computer passes through. One can imagine that as this software is at the most basic level, it is a prime target for exploitation.&lt;/p&gt;
&lt;p&gt;This disadvantage can be turned around, however; by introducing or imporving security measures at this level means that it can be an effctive barrier on all later levels. Many projects exist to do so:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a title="Security-Enhanced Linux" target="_blank" href="http://www.nsa.gov/research/selinux/"&gt;Security-Enhanced Linux&lt;/a&gt; from the NSA is built into common desktop Linux systems. Gaining popularity through the Fedora Project, SELinux is available for Linux, FreeBSD, OpenSolaris and Darwin (Mac OS).&lt;/li&gt;
&lt;li&gt;The &lt;a title="Linux Intrusion Detection System (LIDS)" target="_blank" href="http://securityfocus.com/infocus/1496"&gt;Linux Intrusion Detection System (LIDS)&lt;/a&gt; is a patch applied on top of the Linux kernel and provides security through rule-based access control. It suppresses the all-access power of the &lt;a title="super-user" target="_blank" href="http://linux.about.com/cs/linux101/g/rootlparsuperus.htm"&gt;super-user&lt;/a&gt; (root) while so limited damage can be done to the system. It also protects itself through a strong password authentication mechanism.&lt;/li&gt;
&lt;li&gt;&lt;a title="RSBAC" target="_blank" href="http://www.rsbac.org/"&gt;RSBAC&lt;/a&gt; has been implemented in to the Linux kernel since 2000 and provides access control, similar to LIDS, along with other goodies.&lt;/li&gt;
&lt;li&gt;Finally (though I suspect many more exist) &lt;a title="grsecurity" target="_blank" href="http://www.grsecurity.net/"&gt;grsecurity&lt;/a&gt; is aimed at web servers or those that accept remote connections. Emphasis is placed on buffer overflows and other more low-level vulnerabilities.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.seawolfsanctuary.com/post/195777498</link><guid>http://blog.seawolfsanctuary.com/post/195777498</guid><pubDate>Thu, 24 Sep 2009 14:33:00 +0100</pubDate><category>linux</category><category>kernel</category><category>security</category></item><item><title>Excellent Trick on JPG Images. An Image That Contains Images | Jeez Tech</title><description>&lt;a href="http://jeez.eu/2009/09/22/excellent-trick-on-jpg-images-an-image-that-contains-images/"&gt;Excellent Trick on JPG Images. An Image That Contains Images | Jeez Tech&lt;/a&gt;: &lt;p&gt;Interesting tutorial to create one file that is both a JPEG and a ZIP.&lt;/p&gt;</description><link>http://blog.seawolfsanctuary.com/post/194606535</link><guid>http://blog.seawolfsanctuary.com/post/194606535</guid><pubDate>Wed, 23 Sep 2009 02:49:00 +0100</pubDate><category>security</category><category>forensics</category></item></channel></rss>

