<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32196415</id><updated>2011-08-29T08:12:06.941-07:00</updated><category term='thrift'/><category term='hackage'/><category term='nosql'/><category term='cassandra'/><category term='code'/><category term='atmel'/><category term='avr'/><category term='haskell'/><category term='programming'/><category term='asm'/><title type='text'>Necrobious'</title><subtitle type='html'>A personal blog covering News, Media, Art, Tech, and Science.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32196415.post-8597015639970530297</id><published>2010-08-07T16:55:00.000-07:00</published><updated>2010-08-07T16:55:51.285-07:00</updated><title type='text'>Resetting the root password for Blastwave's MySQL 5 on Solaris 10</title><content type='html'>Recently I needed to reset the root password for &lt;a href="http://www.blastwave.org/"&gt;Blastwave&lt;/a&gt;'s &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; 5 package. &lt;br /&gt;Normally I would just follow &lt;a href="http://www.debian-administration.org/articles/442"&gt;these instructions&lt;/a&gt;, however in this install I needed to make sure that Blastwave's svc manifest started and stopped the database for me. Here are the steps I too, executed as the system's root user:&lt;br /&gt;&lt;br /&gt;1. Stop the MySQL server:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# svcadm disable network/cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Edit the Bastwave svc manifest&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# vi /opt/csw/lib/svc/method/svc-cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;by adding the following line, save and exit:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MYSQLD_SKIP_GRANT_TABLES=true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. start up the MySQL server again&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# svcadm enable network/cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. connect to the server &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# /opt/csw/mysql5/bin/mysql -u root mysql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. set the new root password&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mysql&amp;gt; UPDATE user SET password=PASSWORD('new password') WHERE user='root';&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mysql&amp;gt; \q&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6. Disable the MySQL server again&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# svcadm disable network/cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;7. Once again, edit the Bastwave svc manifest&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# vi /opt/csw/lib/svc/method/svc-cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and &lt;b&gt;remove/comment out&lt;/b&gt; the line we just added in step 2:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MYSQLD_SKIP_GRANT_TABLES=true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8. Fire up the MySQL server, once more&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# svcadm enable network/cswmysql5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;9. and finally try connecting to the server, using your new root password&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# /opt/csw/mysql5/bin/mysql -u root mysql -p&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-8597015639970530297?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/8597015639970530297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2010/08/resetting-root-password-for-blastwaves.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/8597015639970530297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/8597015639970530297'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2010/08/resetting-root-password-for-blastwaves.html' title='Resetting the root password for Blastwave&apos;s MySQL 5 on Solaris 10'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-1725133996887405567</id><published>2010-06-03T22:03:00.000-07:00</published><updated>2010-06-03T22:55:50.210-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='atmel'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><category scheme='http://www.blogger.com/atom/ns#' term='asm'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>AVR ASM First Steps</title><content type='html'>Hey Gang,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I finally got some time to get my AVR ASM tool chain up and running on Mac OSX. I'm posting my first hand written ASM code for making an LED blink, using a Mega8 (PD4, aka pin 6 on the meaga8). Let me know if you have any questions about getting your toolchain up and running. It is a bit of work to get it all set up, but it can be very satisfying to see your first program run on a $2 computer!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;.include &amp;quot;m8def.inc&amp;quot; &lt;br /&gt;&lt;br /&gt;.def temp       = r16&lt;br /&gt;.def delay1     = r17&lt;br /&gt;.def delay2     = r18&lt;br /&gt;.def delayv     = r19&lt;br /&gt;.equ led        = 4                     ; PORTD bit number to blink LED on&lt;br /&gt;&lt;br /&gt;.org 0x0000                             ; the next instruction will be written to 0x0000&lt;br /&gt;rjmp main                               ; jump to main:&lt;br /&gt;&lt;br /&gt;delay:&lt;br /&gt;        clr     delay1                  ; set delay1 to 0&lt;br /&gt;        clr     delay2                  ; set delay2 to 0&lt;br /&gt;        ldi     delayv, 10              ; set delayv to 50&lt;br /&gt; &lt;br /&gt;delay_loop:&lt;br /&gt;        dec     delay2                  ; decrement delay2, if 0, dec will set delay2 back to 255&lt;br /&gt;        brne    delay_loop              ; delay_loop: again if delay2 is not 0&lt;br /&gt;        dec     delay1                  ; decrament delay1, if 0, dec will set delay1 back to 255&lt;br /&gt;        brne    delay_loop              ; delay_loop: again if delay1 is not 0&lt;br /&gt;        dec     delayv                  ; decrament delayv&lt;br /&gt;        brne    delay_loop              ; delay_loop: again if delayv is not 0&lt;br /&gt;        ret                             ; go back to where we came from&lt;br /&gt;&lt;br /&gt;main:&lt;br /&gt;        ldi     temp, low(RAMEND)       ; initiate the stack in the build in SRAM. Stack operations &lt;br /&gt;        out     SPL, temp               ; are always necessary when subroutines or interrupts are called.&lt;br /&gt;        ldi     temp, high(RAMEND)      ; By calling the subroutine or interrupt handling routine the actual adress &lt;br /&gt;        out     SPH, temp               ; is written to the stack in order to later jump back to the code where the &lt;br /&gt;                                        ; interrupt or call occurred.&lt;br /&gt;&lt;br /&gt;        sbi     DDRD, led               ; connect PORTD pin 4 to LED&lt;br /&gt;&lt;br /&gt;loop:&lt;br /&gt;        cbi     PORTD, led              ; turn PD4 high&lt;br /&gt;        rcall   delay                   ; delay for an short bit&lt;br /&gt;        sbi     PORTD, led              ; turn PD4 low &lt;br /&gt;        rcall   delay                   ; delay again for a short bit&lt;br /&gt;        rjmp    loop                    ; recurse back to the start of loop:&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many thanks to leon, theusch, and srinivasandelta  over at &lt;a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=94232"&gt;AVR Freaks&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', Helvetica, Verdana, Arial, sans-serif; font-size: 12px; "&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt; for helping me get started.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;cheers!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-1725133996887405567?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/1725133996887405567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2010/06/avr-asm-first-steps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/1725133996887405567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/1725133996887405567'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2010/06/avr-asm-first-steps.html' title='AVR ASM First Steps'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-2586997954103701853</id><published>2010-03-18T17:03:00.000-07:00</published><updated>2010-03-18T22:44:05.366-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thrift'/><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='hackage'/><title type='text'>Cassandra, Thrift, and Hackage</title><content type='html'>Last week, I posted a &lt;a href="http://necrobious.blogspot.com/2010/03/haskell-cassandra-first-steps.html"&gt;quick 'hello world' example&lt;/a&gt; of inserting into and selecting data out of a Cassandra database.  To get this example working, I first needed to download and compile the Thrift compiler, which also ships with a Haskell lib, which was already packaged in the Cabal format, but not uploaded to the &lt;a href="http://hackage.haskell.org/"&gt;Hackage&lt;/a&gt; repository, so I posted their  &lt;a href="http://hackage.haskell.org/package/Thrift"&gt;Thrift&lt;/a&gt; to Hackage.&lt;br /&gt;&lt;br /&gt;The second dependency my example has, was the Cassandra interface lib, which is compiled from the &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;interface/cassandra.thrift&lt;/span&gt;&lt;/span&gt; file included in the &lt;a href="http://www.apache.org/dyn/closer.cgi?path=/cassandra/0.5.1/apache-cassandra-0.5.1-bin.tar.gz"&gt;cassandra 0.5.1 release&lt;/a&gt;.Since this code needs to only be generated once,  I packaged them as the  &lt;a href="http://hackage.haskell.org/package/cassandra-thrift"&gt;cassandra-thrift&lt;/a&gt; package, and posted them to Hackage.&lt;br /&gt;&lt;br /&gt;Hopefully this helps other Haskell developers get Cassandra code up and running quickly, as we'll no longer need to mess around with thrift to talk to a running Cassandra server.&lt;br /&gt;&lt;br /&gt;Next up: We need a better (high level) Cassandra Haskell API built on top of this plumbing... More on that soon.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;-kirk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-2586997954103701853?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/2586997954103701853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2010/03/cassandra-thrift-and-hackage.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/2586997954103701853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/2586997954103701853'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2010/03/cassandra-thrift-and-hackage.html' title='Cassandra, Thrift, and Hackage'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-7761032385915185197</id><published>2010-03-13T13:36:00.000-08:00</published><updated>2010-03-13T14:18:55.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thrift'/><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='nosql'/><title type='text'>Haskell &amp; Cassandra: First Steps</title><content type='html'>Ok, so I had a few hours to finally sit down and try getting a 'Hello World' example put together for interacting with a Cassandra database from Haskell. &lt;div&gt;I used the following:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Mac OS 10.6.2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;GHC 6.12.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;apache-cassandra-0.5.1 (JDK 1.6 from Apple)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;thrift-incubating-0.2.0 (Compiled using GCC 4.2.1 and Boost 1.41 from MacPorts) &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;I uses a stock Cassandra install, and did not customize the included example schema, starting the server with &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'courier new';font-size:small;"&gt;$ cd apache-cassandra-0.5.1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'courier new';font-size:small;"&gt;$ bin/cassandra -f&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;Getting the thrift compiler built and the Thrift lib installed into GHC proved to be a pain point for me, and will be the topic of a subsequent post if others have a similar experience.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;Once the Thrift package is installed in GHC, and you have used the thrift compiler to compile compile the Cassandra interface definition file&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;$ thrift --gen hs apache-cassandra-0.5.1/interface.cassandra.thrift&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;You should have the generated Haskell cassandra sources:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-rw-r--r--  1 kirk  kirk  83431 Mar 13 09:57 Cassandra.hs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-rw-r--r--  1 kirk  kirk  16946 Mar 13 09:57 Cassandra_Client.hs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-rw-r--r--  1 kirk  kirk    613 Mar 13 09:57 Cassandra_Consts.hs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-rw-r--r--  1 kirk  kirk   1823 Mar 11 13:02 Cassandra_Iface.hs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;-rw-r--r--  1 kirk  kirk  19015 Mar 13 09:56 Cassandra_Types.hs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, there is little API docs to go on here for haskellers, but I was able to finally duplicate the &lt;a href="http://incubator.apache.org/thrift/download/"&gt;Java example from the Cassandra Wiki&lt;/a&gt; using a default Cassandra install and schema:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" white-space: pre;font-size:13px;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style=" white-space: normal;font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;{-# LANGUAGE DeriveDataTypeable #-}&lt;br /&gt;&lt;br /&gt;import Network&lt;br /&gt;import System.IO&lt;br /&gt;import Thrift.Protocol.Binary&lt;br /&gt;import Thrift.Transport.Handle&lt;br /&gt;import Cassandra_Client&lt;br /&gt;import Cassandra_Types&lt;br /&gt;&lt;br /&gt;import System.Time&lt;br /&gt;&lt;br /&gt;main = do&lt;br /&gt;  -- connect to Cassandra running locally&lt;br /&gt;  handle &amp;lt;- hOpen ("127.0.0.1", PortNumber 9160)&lt;br /&gt;&lt;br /&gt;  TOD sec usec &amp;lt;- getClockTime -- were using old-time here, but really we jsut need a good&lt;br /&gt;                               -- Int64 value for the timestamp&lt;br /&gt;&lt;br /&gt;  let binpro = BinaryProtocol handle&lt;br /&gt;  let proto = (binpro, binpro) -- no idea why the Casandra API splits into (in an out proto, but w/e)&lt;br /&gt;&lt;br /&gt;  -- put some data into the column&lt;br /&gt;  insert&lt;br /&gt;      proto                        -- The protocol/transport value&lt;br /&gt;      "Keyspace1"                  -- the KeySpace (typically this will be your app's name)&lt;br /&gt;      "kirk"                       -- The "row" id, or in cassandra-speak, the key&lt;br /&gt;      (ColumnPath                  -- Column paths point to either a colum or a super column&lt;br /&gt;          (Just "Standard1")       -- The column family&lt;br /&gt;          Nothing                  -- The super column name&lt;br /&gt;          (Just "name"))           -- The column name&lt;br /&gt;      "Kirk Peterson"              -- The value to insert into the column&lt;br /&gt;      (fromInteger sec)            -- The timestamp for the insert&lt;br /&gt;      ONE                          -- The ConsistencyLevel to enforce on the insert&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  -- pull the value back out&lt;br /&gt;  r &amp;lt;- get_slice&lt;br /&gt;           proto                   -- more protocol/tranport stuff&lt;br /&gt;           "Keyspace1"             -- the KeySpace (typically this will be your app's name)&lt;br /&gt;           "kirk"                  -- again, the key&lt;br /&gt;           (ColumnParent           -- similar to column path, the column parent.&lt;br /&gt;               (Just "Standard1")  -- the Column Family&lt;br /&gt;               Nothing)            -- the super column (not used in our example)&lt;br /&gt;           (SlicePredicate         -- predicate/filter for row, either by column names and/or by a slice range&lt;br /&gt;               Nothing             -- Column Names to filter on (not used in ut example)&lt;br /&gt;               (Just (SliceRange   -- A SliceRange&lt;br /&gt;                   (Just "")       --   Range Start&lt;br /&gt;                   (Just "")       --   Range End&lt;br /&gt;                   (Just False)    --   Results Reversed?&lt;br /&gt;                   (Just 10))))    --   Result Count&lt;br /&gt;           ONE                     -- The ConsistencyLevel to enforce on the read&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  putStrLn $ "found " ++ (show $ length r) ++ " record(s)"&lt;br /&gt;  mapM_ (putStrLn . show)  r&lt;br /&gt;&lt;br /&gt;  hClose handle&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When compiled (or ran from ghci) you should see something similar to the following:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;*Main&gt; main&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package parsec-2.1.0.1 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package network-2.2.1.5 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package Thrift-0.1.0 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package array-0.3.0.0 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package containers-0.3.0.0 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package old-locale-1.0.0.2 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Loading package old-time-1.0.0.3 ... linking ... done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;found 1 record(s)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ColumnOrSuperColumn {f_ColumnOrSuperColumn_column = Just (Column {f_Column_name = Just "name", f_Column_value = Just "Kirk Peterson", f_Column_timestamp = Just 1268515834}), f_ColumnOrSuperColumn_super_column = Nothing}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Win! Cassandra wrote a record to the datastore, and was able to read it back.&lt;/div&gt;&lt;div&gt;Hopefully this help you get your cassandra app up and running, thats all I have for now, hit me with your questions/ experiences in the comments, and hopefully I can help.. &lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;cheers,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;-kirk&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-7761032385915185197?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/7761032385915185197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2010/03/haskell-cassandra-first-steps.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/7761032385915185197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/7761032385915185197'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2010/03/haskell-cassandra-first-steps.html' title='Haskell &amp; Cassandra: First Steps'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-4054321327332952974</id><published>2009-03-19T10:53:00.000-07:00</published><updated>2009-03-19T10:56:04.506-07:00</updated><title type='text'>CS Puzzles</title><content type='html'>If your in to testing your computer science fu, checkout &lt;a href="http://projecteuler.net"&gt;Project Euler&lt;/a&gt;. I'm only 10 problems in, but its a ton of fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-4054321327332952974?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/4054321327332952974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2009/03/cs-puzzles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/4054321327332952974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/4054321327332952974'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2009/03/cs-puzzles.html' title='CS Puzzles'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-3456086623670186141</id><published>2009-03-19T00:42:00.000-07:00</published><updated>2009-03-19T00:59:11.974-07:00</updated><title type='text'>A fun example of Haskell's newtype</title><content type='html'>Haskell's &lt;span style="font-family:courier new;"&gt;newtype&lt;/span&gt; keyword allows you to hide an existing type behind a new type definition. in working with them I though of a neat example that would help illustrate how they work:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span id="li-2568-1"&gt;&lt;span class="cm"&gt;{-# LANGUAGE GeneralizedNewtypeDeriving #-}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-2"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-3"&gt;&lt;span class="kr"&gt;newtype&lt;/span&gt; &lt;span class="kt"&gt;Fahrenheit&lt;/span&gt; &lt;span class="ow"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Fahrenheit&lt;/span&gt; &lt;span class="kt"&gt;Float&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-4"&gt;  &lt;span class="kr"&gt;deriving&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Eq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Ord&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Fractional&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-5"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-6"&gt;&lt;span class="kr"&gt;newtype&lt;/span&gt; &lt;span class="kt"&gt;Celsius&lt;/span&gt; &lt;span class="ow"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Celsius&lt;/span&gt; &lt;span class="kt"&gt;Float&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-7"&gt;  &lt;span class="kr"&gt;deriving&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Eq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Ord&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;Fractional&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-8"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-9"&gt;&lt;span class="nf"&gt;far2cel&lt;/span&gt; &lt;span class="ow"&gt;::&lt;/span&gt; &lt;span class="kt"&gt;Fahrenheit&lt;/span&gt; &lt;span class="ow"&gt;-&gt;&lt;/span&gt; &lt;span class="kt"&gt;Celsius&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-10"&gt;&lt;span class="nf"&gt;far2cel&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Fahrenheit&lt;/span&gt; &lt;span class="n"&gt;far&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Celsius&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;far&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-11"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-12"&gt;&lt;span class="nf"&gt;cel2far&lt;/span&gt; &lt;span class="ow"&gt;::&lt;/span&gt; &lt;span class="kt"&gt;Celsius&lt;/span&gt; &lt;span class="ow"&gt;-&gt;&lt;/span&gt; &lt;span class="kt"&gt;Fahrenheit&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span id="li-2568-13"&gt;&lt;span class="nf"&gt;cel2far&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Celsius&lt;/span&gt; &lt;span class="n"&gt;cel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;Fahrenheit&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cel&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;We're declaring two "new types" one named  Fahrenheit and the other named Celsius, both are really just Floats. Then we declare two conversion functions, far2cel and cel2far, to handle marshaling a Fahrenheit temperature to a Celsius. We are using the *, -, and + operators from the Num class and the / operator from Fractional, by  declaring our Fahrenheit and Celsius newtypes to derive from Fractional and from Num in conjunction with the -XGeneralizedNewtypeDeriving GHC option. Neat&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-3456086623670186141?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/3456086623670186141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2009/03/fun-example-of-haskells-newtype.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/3456086623670186141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/3456086623670186141'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2009/03/fun-example-of-haskells-newtype.html' title='A fun example of Haskell&apos;s newtype'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-8350748199055128289</id><published>2008-06-23T15:07:00.001-07:00</published><updated>2008-06-23T15:07:52.671-07:00</updated><title type='text'>R.I.P George</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/k29LGHV7J7s&amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/k29LGHV7J7s&amp;hl=en" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-8350748199055128289?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/8350748199055128289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/06/rip-george.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/8350748199055128289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/8350748199055128289'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/06/rip-george.html' title='R.I.P George'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-6588601191796803638</id><published>2008-06-03T15:27:00.000-07:00</published><updated>2008-06-03T15:35:06.485-07:00</updated><title type='text'>git on a server w/o git</title><content type='html'>I got stuck trying to share some code to a friend of mine via git, the web server does not currently have git installed. This probably isn't much of a problem to those who use git frequently, but if your new to git, it can be quite frustrating. Luckily, my friend came to the rescue with a great link to a &lt;a href="http://www.gnome.org/~federico/misc/git-cheat-sheet.txt"&gt;git cheatsheet&lt;/a&gt;, with the essential bit as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;git clone --bare . /tmp/myproject.git&lt;br /&gt;git --bare --git-dir=/tmp/myproject.git update-server-info&lt;br /&gt;chmod +x /tmp/myproject.git/hooks/post-update&lt;br /&gt;scp -r /tmp/myproject.git www.example.com:~/public_html/git/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thanks Trevor for the find.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-6588601191796803638?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/6588601191796803638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/06/git-on-server-wo-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6588601191796803638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6588601191796803638'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/06/git-on-server-wo-git.html' title='git on a server w/o git'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-6502006484726137343</id><published>2008-05-21T10:43:00.000-07:00</published><updated>2008-05-21T10:48:53.344-07:00</updated><title type='text'>Hitler Plans Burning Man</title><content type='html'>Haha! Watching the list list of friends drop from 21 to 18 to 9 to eventually 3 over the course the year.. Now I don't even ask people if they are going to come with me this year. If you've never been to &lt;a href="http://www.burningman.com/"&gt;Burning Man&lt;/a&gt;, you owe it to your self to experience it at least once!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CV4i7dWeu0c&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CV4i7dWeu0c&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-6502006484726137343?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/6502006484726137343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/05/hitler-plans-burning-man.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6502006484726137343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6502006484726137343'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/05/hitler-plans-burning-man.html' title='Hitler Plans Burning Man'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-1846262776165816838</id><published>2008-05-20T13:37:00.000-07:00</published><updated>2008-05-20T13:40:06.655-07:00</updated><title type='text'>Booting from ZFS under Solaris</title><content type='html'>It looks like &lt;a href="http://www.opensolaris.org/os/community/zfs/boot/"&gt;booting from ZFS&lt;/a&gt; is finally going to make it into the next release of Solaris!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-1846262776165816838?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/1846262776165816838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/05/booting-from-zfs-under-solaris.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/1846262776165816838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/1846262776165816838'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/05/booting-from-zfs-under-solaris.html' title='Booting from ZFS under Solaris'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-15744639315324766</id><published>2008-05-19T20:30:00.000-07:00</published><updated>2008-05-20T12:27:54.480-07:00</updated><title type='text'>wxhaskell a go go</title><content type='html'>Ive been trying to get wxhaskell installed and working on mac os running leopard for the past few weeks in my spare time. Unfortunately I couldn't find much information to help me with the process so I thought I would publish a quick step through.&lt;br /&gt;&lt;br /&gt;First, install &lt;a href="http://www.macports.org/"&gt;MacPorts 1.6.0&lt;/a&gt;&lt;br /&gt;from there:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;$ sudo port install ghc wxWidgets darcs&lt;/pre&gt;&lt;br /&gt;that gets you ghc 6.8.2, and wxWidgets wxWidgets 2.8.7 and darcs 2&lt;br /&gt;we need darcs, due to the latest release of the wxhaskell bindings not working right for wx 2.8 yet in leopard, so we get to check it out from the wxhaskell darcs repo. to do that, get a checkout:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;$ darcs get http://darcs.haskell.org/wxhaskell&lt;/pre&gt;&lt;br /&gt;that should get you a checkout. next we need to configure:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;&lt;br /&gt;$ ./configure --hc=/opt/local/bin/ghc \&lt;br /&gt;              --hcpkg=/opt/local/bin/ghc-pkg \&lt;br /&gt;              --prefix=/opt/local&lt;/pre&gt;&lt;br /&gt;that should get your installed configured. next make it:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;$ make&lt;/pre&gt;&lt;br /&gt;then install it as root:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;$ sudo make install&lt;/pre&gt;&lt;br /&gt;ok, that gets wx-core installed, next we need to get wx installed.&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;&lt;br /&gt;$ cd wx&lt;br /&gt;$ runhaskell Setup configure&lt;br /&gt;$ runhaskell Setup build&lt;br /&gt;$ sudo runhaskell Setup install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;if all went well, you're ghc-pkg list should look something like this:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;&lt;br /&gt;$ ghc-pkg list&lt;br /&gt;/opt/local/lib/ghc-6.8.2/package.conf:&lt;br /&gt;    ...&lt;br /&gt;    ...&lt;br /&gt;    unix-2.3.0.0, wx-0.10.3, wxcore-0.10.3, xhtml-3000.0.2.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;woot! wx-0.10.3 and wxcore-0.10.3 installed... now for the real test&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;&lt;br /&gt;$ cd ../samples/wx&lt;br /&gt;$ ghc -package wx -o helloworld HelloWorld.hs&lt;br /&gt;$ /opt/local/bin/macosx-app -v helloworld&lt;br /&gt;$ open helloworld.app&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;should open the hello world app! Hopefully once wxhaskell gets a new release out, we can get a macport that will make this a bit easier. good hunting :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-15744639315324766?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/15744639315324766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/05/wxhaskell-go-go.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/15744639315324766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/15744639315324766'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/05/wxhaskell-go-go.html' title='wxhaskell a go go'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-7048293983735569469</id><published>2008-03-04T12:36:00.000-08:00</published><updated>2008-03-04T12:58:02.904-08:00</updated><title type='text'>Binary to Hex String back to Binary in Erlang</title><content type='html'>A little project i'm working on in Erlang needs to take a byte sequence and write it out into a String to be save as an HTTP cookie. Then, on subsequent HTTP requests, read back in the hex string from the cookie, and convert it back into the byte sequence. I couldn't quite find a module for doing this in Erlang, so I hacked part of it, and cobbled the rest from examples I've  found over the last few days.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left: 1em; background-color: black; color: rgb(0, 153, 0); font-family: courier new;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-module(hex).&lt;br /&gt;-export([bin_to_hexstr/1,hexstr_to_bin/1]).&lt;br /&gt;&lt;br /&gt;hex(N) when N &lt; 10 -&gt;&lt;br /&gt;    $0+N;&lt;br /&gt;hex(N) when N &gt;= 10, N &lt; 16 -&gt;&lt;br /&gt;    $a+(N-10).&lt;br /&gt;&lt;br /&gt;int(C) when $0 =&lt; C, C =&lt; $9 -&gt;&lt;br /&gt;    C - $0;&lt;br /&gt;int(C) when $A =&lt; C, C =&lt; $F -&gt;&lt;br /&gt;    C - $A + 10;&lt;br /&gt;int(C) when $a =&lt; C, C =&lt; $f -&gt;&lt;br /&gt;    C - $a + 10.&lt;br /&gt;    &lt;br /&gt;to_hex(N) when N &lt; 256 -&gt;&lt;br /&gt;    [hex(N div 16), hex(N rem 16)].&lt;br /&gt; &lt;br /&gt;list_to_hexstr([]) -&gt; &lt;br /&gt;    [];&lt;br /&gt;list_to_hexstr([H|T]) -&gt;&lt;br /&gt;    to_hex(H) ++ list_to_hexstr(T).&lt;br /&gt;&lt;br /&gt;bin_to_hexstr(Bin) -&gt;&lt;br /&gt;    list_to_hexstr(binary_to_list(Bin)).&lt;br /&gt;&lt;br /&gt;hexstr_to_bin(S) -&gt;&lt;br /&gt;    list_to_binary(hexstr_to_list(S)).&lt;br /&gt;&lt;br /&gt;hexstr_to_list([X,Y|T]) -&gt;&lt;br /&gt;    [int(X)*16 + int(Y) | hexstr_to_list(T)];&lt;br /&gt;hexstr_to_list([]) -&gt;&lt;br /&gt;    [].&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-7048293983735569469?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/7048293983735569469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/03/binary-to-hex-string-back-to-binary-in.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/7048293983735569469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/7048293983735569469'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/03/binary-to-hex-string-back-to-binary-in.html' title='Binary to Hex String back to Binary in Erlang'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-4285661176393589338</id><published>2008-02-07T15:09:00.000-08:00</published><updated>2008-02-07T15:14:18.910-08:00</updated><title type='text'>Massively Cool Documetary</title><content type='html'>Dr. Brian Cox does a good job conveying really heavy topics&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab visible" href="http://video.google.com/googleplayer.swf?docId=-843994142204928073&amp;amp;hl=en"&gt;&lt;/a&gt;&lt;a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab visible ontop" href="http://video.google.com/googleplayer.swf?docId=-843994142204928073&amp;amp;hl=en"&gt;&lt;/a&gt;&lt;embed style="width: 400px; height: 326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-843994142204928073&amp;amp;hl=en" flashvars=""&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-4285661176393589338?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/4285661176393589338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/02/massively-cool-documetary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/4285661176393589338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/4285661176393589338'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/02/massively-cool-documetary.html' title='Massively Cool Documetary'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-799464198004282178</id><published>2008-02-07T01:01:00.000-08:00</published><updated>2008-02-07T01:10:52.773-08:00</updated><title type='text'>Abusing Erlang's Pattern Matching</title><content type='html'>I wrote a simple base62 encoder in erlang tonight. while it appears to be fast, I can't help but wonder if I'm abusing Erlang's pattern matching facilities.&lt;br /&gt;&lt;br /&gt;&lt;pre style="padding: 1em; background-color: black; color: green;"&gt;&lt;br /&gt;-module(base62).&lt;br /&gt;-export([encode/1, decode/1]).&lt;br /&gt;&lt;br /&gt;encode(Num) -&gt;&lt;br /&gt; encode(Num, []).&lt;br /&gt;&lt;br /&gt;encode(N,A) when N == 0 -&gt; A;&lt;br /&gt;encode(N,A) -&gt;&lt;br /&gt; encode(trunc(N/62), [e(N rem 62) |A]).&lt;br /&gt;&lt;br /&gt;decode(S) -&gt;&lt;br /&gt;  decode(lists:reverse(S),0,0).&lt;br /&gt;&lt;br /&gt;decode([], V, _) -&gt; V;&lt;br /&gt;decode([H|T], V, D) -&gt;&lt;br /&gt; decode(T, V + (round(math:pow(62,D)) * d(H)), D+1).&lt;br /&gt; &lt;br /&gt;e(0)  -&gt;$0; e(1)  -&gt;$1; e(2)  -&gt;$2;&lt;br /&gt;e(3)  -&gt;$3; e(4)  -&gt;$4; e(5)  -&gt;$5;&lt;br /&gt;e(6)  -&gt;$6; e(7)  -&gt;$7; e(8)  -&gt;$8;&lt;br /&gt;e(9)  -&gt;$9; e(10) -&gt;$a; e(11) -&gt;$b;&lt;br /&gt;e(12) -&gt;$c; e(13) -&gt;$d; e(14) -&gt;$e;&lt;br /&gt;e(15) -&gt;$f; e(16) -&gt;$g; e(17) -&gt;$h;&lt;br /&gt;e(18) -&gt;$i; e(19) -&gt;$j; e(20) -&gt;$k;&lt;br /&gt;e(21) -&gt;$l; e(22) -&gt;$m; e(23) -&gt;$n;&lt;br /&gt;e(24) -&gt;$o; e(25) -&gt;$p; e(26) -&gt;$q;&lt;br /&gt;e(27) -&gt;$r; e(28) -&gt;$s; e(29) -&gt;$t;&lt;br /&gt;e(30) -&gt;$u; e(31) -&gt;$v; e(32) -&gt;$w;&lt;br /&gt;e(33) -&gt;$x; e(34) -&gt;$y; e(35) -&gt;$z;&lt;br /&gt;e(36) -&gt;$A; e(37) -&gt;$B; e(38) -&gt;$C;&lt;br /&gt;e(39) -&gt;$D; e(40) -&gt;$E; e(41) -&gt;$F;&lt;br /&gt;e(42) -&gt;$G; e(43) -&gt;$H; e(44) -&gt;$I;&lt;br /&gt;e(45) -&gt;$J; e(46) -&gt;$K; e(47) -&gt;$L;&lt;br /&gt;e(48) -&gt;$M; e(49) -&gt;$N; e(50) -&gt;$O;&lt;br /&gt;e(51) -&gt;$P; e(52) -&gt;$Q; e(53) -&gt;$R;&lt;br /&gt;e(54) -&gt;$S; e(55) -&gt;$T; e(56) -&gt;$U;&lt;br /&gt;e(57) -&gt;$V; e(58) -&gt;$W; e(59) -&gt;$X;&lt;br /&gt;e(60) -&gt;$Y; e(61) -&gt;$Z.&lt;br /&gt;&lt;br /&gt;d($0) -&gt;  0; d($1) -&gt;  1; d($2) -&gt;  2;&lt;br /&gt;d($3) -&gt;  3; d($4) -&gt;  4; d($5) -&gt;  5;&lt;br /&gt;d($6) -&gt;  6; d($7) -&gt;  7; d($8) -&gt;  8;&lt;br /&gt;d($9) -&gt;  9; d($a) -&gt; 10; d($b) -&gt; 11;&lt;br /&gt;d($c) -&gt; 12; d($d) -&gt; 13; d($e) -&gt; 14;&lt;br /&gt;d($f) -&gt; 15; d($g) -&gt; 16; d($h) -&gt; 17;&lt;br /&gt;d($i) -&gt; 18; d($j) -&gt; 19; d($k) -&gt; 20;&lt;br /&gt;d($l) -&gt; 21; d($m) -&gt; 22; d($n) -&gt; 23;&lt;br /&gt;d($o) -&gt; 24; d($p) -&gt; 25; d($q) -&gt; 26;&lt;br /&gt;d($r) -&gt; 27; d($s) -&gt; 28; d($t) -&gt; 29;&lt;br /&gt;d($u) -&gt; 30; d($v) -&gt; 31; d($w) -&gt; 32;&lt;br /&gt;d($x) -&gt; 33; d($y) -&gt; 34; d($z) -&gt; 35;&lt;br /&gt;d($A) -&gt; 36; d($B) -&gt; 37; d($C) -&gt; 38;&lt;br /&gt;d($D) -&gt; 39; d($E) -&gt; 40; d($F) -&gt; 41;&lt;br /&gt;d($G) -&gt; 42; d($H) -&gt; 43; d($I) -&gt; 44;&lt;br /&gt;d($J) -&gt; 45; d($K) -&gt; 46; d($L) -&gt; 47;&lt;br /&gt;d($M) -&gt; 48; d($N) -&gt; 49; d($O) -&gt; 50;&lt;br /&gt;d($P) -&gt; 51; d($Q) -&gt; 52; d($R) -&gt; 53;&lt;br /&gt;d($S) -&gt; 54; d($T) -&gt; 55; d($U) -&gt; 56;&lt;br /&gt;d($V) -&gt; 57; d($W) -&gt; 58; d($X) -&gt; 59;&lt;br /&gt;d($Y) -&gt; 60; d($Z) -&gt; 61.&lt;br /&gt;&lt;/pre&gt;Enjoy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-799464198004282178?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/799464198004282178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/02/abusing-erlangs-pattern-matching.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/799464198004282178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/799464198004282178'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/02/abusing-erlangs-pattern-matching.html' title='Abusing Erlang&apos;s Pattern Matching'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-937951872901724642</id><published>2008-01-31T11:19:00.000-08:00</published><updated>2008-01-31T13:35:21.525-08:00</updated><title type='text'>Thurday Mornings</title><content type='html'>Thurday mornings, my work usually has a team meeting. This week, The Boss and The Company Owner are at a conference, one peer is leaving the company today and another is at Jury Duty. My assumption is that we wouldn't have a meeting this week. Wrong! The owner is there, with most of my co-workers, I am 10 minutes late, and I am not prepared. &lt;span style="font-weight: bold;font-family:georgia;" &gt;&lt;br /&gt;I receive loot:&lt;span style="color: rgb(153, 51, 153);"&gt;[Pants Crap of the Belated]&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-937951872901724642?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/937951872901724642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2008/01/thurday-mornings-my-work-usually-has.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/937951872901724642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/937951872901724642'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/01/thurday-mornings-my-work-usually-has.html' title='Thurday Mornings'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-6591164582801222529</id><published>2008-01-30T18:08:00.000-08:00</published><updated>2008-01-30T18:09:53.265-08:00</updated><title type='text'>Erlang logging example from #erlang</title><content type='html'>&lt;span style="font-family: courier new;"&gt;[5:24pm] Toad: anyone have a pointer for a good intro on error logging in production machines?&lt;br /&gt;[5:24pm] Toad: e.g. the various error_logger modules, whether I should implement my own event handlers, etc?&lt;br /&gt;[5:33pm] lisppaste4: archaelus pasted "system config snippet for prod logging" at http://paste.lisp.org/display/55103&lt;br /&gt;[5:33pm] archaelus: Toad: that's what I use - to access logs in production I use rb&lt;br /&gt;[5:34pm] archaelus: erl -remsh prodnode -name consolenode, rb:rescan([{max,10},{type, [error]}]), rb:list() and so on&lt;br /&gt;[5:59pm] Toad: cool, thanks archaelus&lt;br /&gt;&lt;br /&gt;{sasl, [{sasl_error_logger, {file, "priv/log/sasl.log"}},&lt;br /&gt;         {error_logger_mf_dir, "priv/log/sasl"},&lt;br /&gt;         {error_logger_mf_maxfiles, 20},&lt;br /&gt;         {error_logger_mf_maxbytes, 524288}, %512Kb log files&lt;br /&gt;         {releases_dir, "releases"}&lt;br /&gt;        ]}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-6591164582801222529?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6591164582801222529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/6591164582801222529'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2008/01/erlang-logging-example-from-erlang.html' title='Erlang logging example from #erlang'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32196415.post-115472808252882286</id><published>2006-08-04T14:43:00.000-07:00</published><updated>2006-08-04T15:51:16.800-07:00</updated><title type='text'>Jon comes to visit for coffee</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/necrobious/206763843/" title="Jon comes to visit for coffee"&gt;&lt;img src="http://static.flickr.com/71/206763843_f15ed03a3d_m.jpg" alt="" style="border: 1px solid rgb(0, 0, 0);" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="margin-top: 0px;font-size:0;" &gt;  &lt;a href="http://www.flickr.com/photos/necrobious/206763843/"&gt;Jon comes to visit for coffee&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;And then I show him that I have blogger working with flickr, all out of gmail!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32196415-115472808252882286?l=necrobious.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://necrobious.blogspot.com/feeds/115472808252882286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://necrobious.blogspot.com/2006/08/jon-comes-to-visit-for-coffee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/115472808252882286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32196415/posts/default/115472808252882286'/><link rel='alternate' type='text/html' href='http://necrobious.blogspot.com/2006/08/jon-comes-to-visit-for-coffee.html' title='Jon comes to visit for coffee'/><author><name>necrobious</name><uri>http://www.blogger.com/profile/13037951297436326191</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
