<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.4" -->
<rss version="0.92">
<channel>
	<title>brool</title>
	<link>http://www.brool.com</link>
	<description>brool \brool\ (n.) : a low roar; a deep murmur or humming</description>
	<lastBuildDate>Wed, 03 Mar 2010 15:47:40 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Setting Up Incanter and MySQL</title>
		<description>Okay, Lein really does make stuff pretty easy.  Rather than wrestling with eleventybillion classpaths, just install Lein.

Create a new project directory with lein new mydirectory

Change the project.clj file that is autogenerated with:


defproject mydirectory "1.0.0-SNAPSHOT" :description "FIXME: write" 
:dependencies [[org.clojure/clojure "1.1.0-alpha-SNAPSHOT"] 
    [org.clojure/clojure-contrib "1.0-SNAPSHOT"]
    ...</description>
		<link>http://www.brool.com/index.php/setting-up-incanter-and-mysql</link>
			</item>
	<item>
		<title>Tethering an iPhone with SSH and Windows 7</title>
		<description>I don't need to tether through my iPhone &#8212; I always seem to be near a hotspot &#8212; but nonetheless I thought that spending 10 minutes to set it up was worth it, because when you need tethering, you really need tethering.  If you're willing to drop $10 bucks ...</description>
		<link>http://www.brool.com/index.php/tethering-an-iphone-with-ssh-and-windows-7</link>
			</item>
	<item>
		<title>Acer 1410 Mini-review</title>
		<description>I've had an Asus EEE 1000h ever since they came out, but it was getting to be time to upgrade it -- it was not a bad little machine, but the Atom processor was a bit underpowered, and that damnable right shift key always did bug me.  I picked ...</description>
		<link>http://www.brool.com/index.php/acer-1410-mini-review</link>
			</item>
	<item>
		<title>A Modest Proposal</title>
		<description>Warning: a very rambling article; less a solid proposal than me just exploring an idea that may lead to a dead end in a week or two after I've thought about it.

I really enjoy Clojure. Everything seems so well thought out and well designed; in a lot of ways it ...</description>
		<link>http://www.brool.com/index.php/a-modest-proposal</link>
			</item>
	<item>
		<title>Snippet: Automatic Proxy Creation in Clojure</title>
		<description>The proxy function makes it easy for Clojure to interface with the Java layer, but I was dealing with an interface (the AIM Java API) that had an punitive number of things that needed to be overridden...

[source lang="java"]
public void OnIdleStateChange(AccSession arg0, int arg1) {
}

public void OnInstanceChange(AccSession arg0, AccInstance arg1, AccInstance ...</description>
		<link>http://www.brool.com/index.php/snippet-automatic-proxy-creation-in-clojure</link>
			</item>
	<item>
		<title>Pattern Matching In Clojure</title>
		<description>Updated:  Note that this is available as a clojars module.

Clojure code density seems to be pretty good. There are a fair number of convenient shortforms in the language; for example, associative datatypes all act as a function &#8212; so given a hash map you can reference it with (my-hashmap ...</description>
		<link>http://www.brool.com/index.php/pattern-matching-in-clojure</link>
			</item>
	<item>
		<title>aset is Faster Than aset-int</title>
		<description>Clojure isn't the fastest functional lanuage -- that title seems to go to Haskell these days, at least for the stuff that I do -- but it nonetheless is usually fast enough.  It's a dynamic language, so is perhaps cursed to be somewhat slower always, but nonetheless for the ...</description>
		<link>http://www.brool.com/index.php/aset-is-faster-than-aset-int</link>
			</item>
	<item>
		<title>Tokyo Cabinet API for Clojure</title>
		<description>I've been playing with Tokyo Cabinet and Clojure for a bit, and while I will go on about both of them in another blog post (or not), I have to mention that Clojure is such a well designed language that it's a pleasure to play with.  It has much ...</description>
		<link>http://www.brool.com/index.php/tokyo-cabinet-api-for-clojure</link>
			</item>
	<item>
		<title>Posting To Wordpress From Git</title>
		<description>I've found Wordpress to be pretty decent, aside from the security updates every other week, but for me writing is a very spur of the moment thing;  I prefer to be able to go into Emacs and just immediately type anything without having to log into my blog, create ...</description>
		<link>http://www.brool.com/index.php/posting-to-wordpress-from-git</link>
			</item>
	<item>
		<title>Hacks: Python Calling PHP</title>
		<description>(This is almost too stupid to post, but on the off chance that someone actually needs something like this...) 

I needed to interface with a bunch of data that had PHP wrapper classes, and needed a quick way of being able to interface with PHP from Python.  (At this ...</description>
		<link>http://www.brool.com/index.php/hacks-python-calling-php</link>
			</item>
	<item>
		<title>Recovering From A &#8211;hard Reset In Git</title>
		<description>I was switching between git repositories the other day, and managed to do a "git reset --hard HEAD^" in the wrong repository.  Which wasn't bad, since I had most of the files already open in Emacs... but then Emacs calmly told me that it was re-reading the files from ...</description>
		<link>http://www.brool.com/index.php/recovering-from-a-hard-reset-in-git</link>
			</item>
	<item>
		<title>Stupid Haskell Tricks</title>
		<description>Let's say that you really, really want some notion of objected oriented programming.  So let's make a class that represents a name, and some simple method calls on it:
[source]
data S = S { name :: String } deriving (Show)
firstname s = (words (name s))!!0
lastname  s = (words (name ...</description>
		<link>http://www.brool.com/index.php/stupid-haskell-tricks</link>
			</item>
	<item>
		<title>Haskell To Wordpress (Snippet)</title>
		<description>A small snippet of code that demonstrates calling into a Wordpress XML-RPC server with Haskell and HaxR.

[source]
import qualified Data.Map as Map
import Data.Maybe
import Network.XmlRpc.Client
import Network.XmlRpc.Internals

server = "http://yourserver.wordpress.com/xmlrpc.php"

-- extract multiple posts from the XML response
extract :: Value -> [Map String Value]
extract xmlresp = 
    let ValueArray rs = xmlresp ...</description>
		<link>http://www.brool.com/index.php/haskell-to-wordpress-snippet</link>
			</item>
	<item>
		<title>Haskell Performance: Array Creation</title>
		<description>Ran into another interesting performance problem while converting a small test program over to Haskell. Let's say that you want to walk through every line of a text file, collate character frequencies, and return anything that maps to a particular frequency.  For purposes of explanation we'll do something really ...</description>
		<link>http://www.brool.com/index.php/haskell-performance-array-creation</link>
			</item>
	<item>
		<title>Haskell Performance: Lowercase</title>
		<description>I was trying to track down some issues with some text processing programs that I was writing in Haskell, and ran into an interesting problem.  I made one small change and my program ended up being 5 times slower, and I had to backtrack to try and find out ...</description>
		<link>http://www.brool.com/index.php/haskell-performance-lowercase</link>
			</item>
	<item>
		<title>Using MissingPy</title>
		<description>For comparison purposes, I was rewriting the silly little e-mail digest program in Haskell, using Python libraries for the IMAP interface (it's available on Github). It's hard to beat Python's amazing collection of libraries.  Cabal / hackage isn't bad, but it doesn't yet approach Python's "batteries included" philosophy and ...</description>
		<link>http://www.brool.com/index.php/using-missingpy</link>
			</item>
	<item>
		<title>Python to Haskell (String Functions)</title>
		<description>I will be updating this as I go...  but see also the Wikipedia page on string functions in various languages.

Joining a string list
[source]
-- Python:  ",".join(lst)
-- either...
import Data.List
intercalate "," lst
-- or...
import Data.List
concat (intersperse "," lst)
[/source]

Splitting on a string
[source]
-- a.split(ss)
-- You might need to get Data.List.Split from Cabal
import Data.List.Split
splitOn ss ...</description>
		<link>http://www.brool.com/index.php/python-to-haskell-string-functions</link>
			</item>
	<item>
		<title>State Monads in Haskell</title>
		<description>I would like Haskell better if it didn't do its best to make me feel stupid.  Tasks that are easy in other languages, such, say, maintaining some state or generating a random number, become difficult.  After banging my head on the State monad I finally arrived at a ...</description>
		<link>http://www.brool.com/index.php/state-monads-in-haskell</link>
			</item>
	<item>
		<title>Recovering A Trashed Ext3 System</title>
		<description>My 500GB backup drive started making horrible, horrible noises when spinning up, akin to a lawnmower trying to mow a rock, so I decided that it was time get another backup drive so that I would be safe.  I picked up another drive at Fry's (not a Maxtor this ...</description>
		<link>http://www.brool.com/index.php/recovering-a-trashed-ext3-system</link>
			</item>
	<item>
		<title>Mysteriously Hanging Ubuntu</title>
		<description>My Asus EEE 1000h had this really irritating but intermittent bug -- it would hang occasionally when I was using it.  The keyboard was dead, but a) mouse clicks would still work, and b) I could Ctrl-Alt-Backspace to restart X or Ctrl-Alt-Fn to go to a terminal.  So, ...</description>
		<link>http://www.brool.com/index.php/mysteriously-hanging-ubuntu</link>
			</item>
</channel>
</rss>
