<?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:blogger='http://schemas.google.com/blogger/2008' 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-5923858383394754770</id><updated>2024-09-01T01:44:34.309-04:00</updated><category term="iPhone"/><category term="cli"/><category term="programming"/><category term="MobilMe"/><category term="SysAdmin"/><category term="f#"/><category term="google"/><category term="vim"/><category term="Haskell"/><category term="Lisp"/><category term="OO"/><category term="R61"/><category term="RAM"/><category term="RealWorldHaskell"/><category term="SMS"/><category term="Vikus"/><category term="WorseIsBetter"/><category term="apple"/><category term="backup"/><category term="blogger"/><category term="browser"/><category term="c#"/><category term="calendars"/><category term="chrome"/><category term="code-snippet"/><category term="compile"/><category term="compositing"/><category term="cygwin"/><category term="delete"/><category term="dvorak"/><category term="excel"/><category term="fold"/><category term="foldr"/><category term="freenode"/><category term="gentoo"/><category term="gmail"/><category term="hakell"/><category term="iPod"/><category term="indirection"/><category term="install"/><category term="irc"/><category term="keyboard"/><category term="lenovo"/><category term="linq"/><category term="quotes"/><category term="remap"/><category term="rsync"/><category term="sed"/><category term="sort"/><category term="textEditor"/><category term="transparency"/><category term="transset"/><category term="xcompmgr"/><category term="xml"/><category term="xmonad"/><title type='text'>Tech Talk</title><subtitle type='html'>musings about my current tech itches</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-3727262221202431631</id><published>2014-01-21T23:24:00.001-05:00</published><updated>2014-01-21T23:24:35.022-05:00</updated><title type='text'>emacs windmove and Mavericks Terminal.app</title><content type='html'>&lt;p&gt;I had trouble getting emacs&#39; windmove mode working right under Mavericks&#39; terminal app. It seems that the terminal app does not have a keyboard mapping for S-up and S-down.  For posterity&#39;s sake, here is what I did.&lt;/p&gt;

&lt;p&gt;First, I had to add these to terminal&#39;s keyboard map:&lt;/p&gt;

&lt;code&gt;
shift cursor up:     \033[1;2A&lt;br&gt;
shift cursor down:   \033[1;2B&lt;br&gt;
&lt;/code&gt;

&lt;p&gt;Then, in my init.el, I had to add:&lt;/p&gt;

&lt;code&gt;
(define-key input-decode-map &quot;\e[1;2A&quot; [S-up])&lt;br&gt;
(windmove-default-keybindings)&lt;br&gt;
&lt;/code&gt;

&lt;p&gt;I&#39;m sure there&#39;s got to be an easier way to do this, but this got me running.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/3727262221202431631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/3727262221202431631' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3727262221202431631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3727262221202431631'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2014/01/emacs-windmove-and-mavericks-terminalapp.html' title='emacs windmove and Mavericks Terminal.app'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-5288537097218499651</id><published>2010-04-27T17:11:00.001-04:00</published><updated>2010-04-27T17:20:53.952-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="f#"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>F# weirdness of the day...</title><content type='html'>I have a piece of code that says:&lt;pre&gt;links
    |&gt; Seq.map (fun x -&gt; x.GetAttributeValue (&quot;href&quot;, &quot;no url&quot;))&lt;/pre&gt;&lt;br /&gt;
Which I wanted to rewrite to &quot;the other syntax&quot; accepted by F#:&lt;pre&gt;links
    |&gt; Seq.map (fun x -&gt; (x.GetAttributeValue &quot;href&quot; &quot;no url&quot;))&lt;/pre&gt;&lt;br /&gt;
But I have no luck.  The amusing thing is the error message I get from Visual Studio:&lt;blockquote&gt;The member or object constructor &#39;GetAttributeValue&#39; taking 2 arguments are not accessible from this code location.  All accessible versions of method &#39;GetAttributeValue&#39; take 2 arguments.&lt;/blockquote&gt;Say what?&lt;br /&gt;
&lt;br /&gt;
[p.s. I &lt;a href=&quot;http://stackoverflow.com/questions/2725202/f-function-calling-syntax-confusion&quot;&gt;posted this to Stack Overflow&lt;/a&gt; to in hopes of getting a bit of wisdom.  Check there for possible answers.]</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/5288537097218499651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/5288537097218499651' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5288537097218499651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5288537097218499651'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2010/04/f-weirdness-of-day.html' title='F# weirdness of the day...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-5984580623500222681</id><published>2010-04-27T17:02:00.001-04:00</published><updated>2010-04-27T17:11:53.317-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="f#"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>Getting all a hrefs from a webpage -- F# warm-ups</title><content type='html'>Been needing this for quite some time, and decided it was about time to tackle it as a way to flex my F# muscles a bit.  I wanted to make this a command line utility, but haven&#39;t gotten around to it yet.  If I do, I&#39;ll have it consume the html from STDIN, and spit the links to STDOUT.  I want to do it that way to allow flexibility in how the pages are fetched.&lt;br /&gt;
&lt;br /&gt;
Here is the code:&lt;script src=&quot;http://gist.github.com/381315.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/5984580623500222681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/5984580623500222681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5984580623500222681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5984580623500222681'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2010/04/getting-all-hrefs-from-webpage-f-warm.html' title='Getting all a hrefs from a webpage -- F# warm-ups'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-7649035364356059261</id><published>2010-04-15T16:59:00.000-04:00</published><updated>2010-04-15T16:59:31.603-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cygwin"/><category scheme="http://www.blogger.com/atom/ns#" term="SysAdmin"/><category scheme="http://www.blogger.com/atom/ns#" term="Vikus"/><title type='text'>Getting cron to play nice with me in cygwin</title><content type='html'>Our machines at &lt;a href=&quot;http://www.vikus.com/&quot;&gt;work&lt;/a&gt;&amp;nbsp;are currently running Win7, with &lt;a href=&quot;http://www.cygwin.com/&quot;&gt;cygwin&lt;/a&gt;. I&#39;ve been a long time linux user, and have always enjoyed the composability of the command line tools. &amp;nbsp;I finally bit the bullet and decided to stop using Scheduled Tasks for a tool I&#39;m more comfortable with: cron. Here is what it took to get all things working nice.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Install a MTA of your choice. &amp;nbsp;I did not want to deal with trying to setup qmail, sendmail or any other of the big tools for a machine that only needs to relay mail out. &amp;nbsp;I looked at nullmailer, ssmtp, and msmtp. &amp;nbsp;Ended up installing msmtp. &amp;nbsp;We use google apps for our mail needs, so I configured msmtp to work with it. &amp;nbsp;Here is my ~/.msmtprc config:&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;pre&gt;defaults
logfile ~/.msmtp.log

account gmail
host smtp.gmail.com
port 587
auth on
user &lt;username&gt;@&lt;google-app-domain&gt;&lt;/google-app-domain&gt;&lt;/username&gt;
password *****
tls on
from &lt;username&gt;@&lt;google-app-domain&gt;&lt;/google-app-domain&gt;&lt;/username&gt;
tls_certcheck off

account default : gmail&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Make sure that the MTA is working. &amp;nbsp;You might need to run msmtp-config to set things up, such as repointing /usr/sbin/sendmail to /usr/bin/msmtp. &amp;nbsp;As you can see, I turned off tls_certcheck. &amp;nbsp;I could not figure out, in the time I had, how to get certs into my machine. &amp;nbsp;Seems that openSSL doesn&#39;t install them anymore. &amp;nbsp;Might want to make sure that you &quot;chmod 600&quot; that config file to prevent your password from getting out.&lt;/li&gt;
&lt;li&gt;Install cron. &amp;nbsp;As a user with right to intall services on your machine, run &quot;cron-config&quot;. &amp;nbsp;That should take care of things.&lt;/li&gt;
&lt;li&gt;Create a crontab. &amp;nbsp;Here is a very simple one I created. &amp;nbsp;It&#39;s nice to have it send me email with the output. &amp;nbsp;Read up on cron if you don&#39;t want that feature. &amp;nbsp;This file lives in: /var/cron/tabs/&lt;username&gt;&lt;/username&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;pre&gt;MAILTO=youremail@yourdomain.net
SHELL=/usr/bin/bash
PATH=$HOME/bin:/usr/local/bin:/usr/bin:$PATH

# 0-59 &amp;nbsp;0-23 &amp;nbsp; &amp;nbsp;1-31 &amp;nbsp; &amp;nbsp;1-12 &amp;nbsp; &amp;nbsp;0-6 &amp;nbsp; &amp;nbsp; cmd
# min &amp;nbsp; hour &amp;nbsp; &amp;nbsp;DoM &amp;nbsp; &amp;nbsp; mon &amp;nbsp; &amp;nbsp; DoW &amp;nbsp; &amp;nbsp; cmd

# silly test
&amp;nbsp;*/5 &amp;nbsp; &amp;nbsp; &amp;nbsp;* &amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; * &amp;nbsp; &amp;nbsp; &amp;nbsp; date
&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
That&#39;s all folks! Hope this helps someone out there.</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/7649035364356059261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/7649035364356059261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7649035364356059261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7649035364356059261'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2010/04/getting-cron-to-play-nice-with-me-in.html' title='Getting cron to play nice with me in cygwin'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-5335923206750331280</id><published>2010-04-12T12:10:00.000-04:00</published><updated>2010-04-12T12:10:10.889-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="indirection"/><category scheme="http://www.blogger.com/atom/ns#" term="OO"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><title type='text'>OO&#39;s N-levels of indirection</title><content type='html'>&lt;div&gt;OO relly frustrates the daylights out of me sometimes. &amp;nbsp;You find a function that gets passed an IThing, which has referectes to other IThingies. &amp;nbsp;In working with some code, you find there there is a call to an IThing.IThingy.Foo, and you try to determine which piece of code is responsible for it. &amp;nbsp;Good luck.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;This anoying trip ussually starts with trying to figure out what classes implement which interfaces, &amp;nbsp;something that VS2010 still doesn&#39;t seem to make trivial (maybe my Kung fu is just not strong). &amp;nbsp;Trusty Reflector to the rescue. &amp;nbsp;If you are lucky, there is only one implementor, and this journey is over. &amp;nbsp;If you are not lucky, you get to try to traverse the call stack, to see which implementation got instantiated and passed to the function at hand. &amp;nbsp;If your are completely unlucky, there is a dynamic (i.e. reflection) call somewhere in there, at which point your brain segfaults.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/5335923206750331280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/5335923206750331280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5335923206750331280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5335923206750331280'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2010/04/oos-n-levels-of-indirection.html' title='OO&#39;s N-levels of indirection'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-5126419108693537747</id><published>2010-04-01T11:32:00.005-04:00</published><updated>2010-04-01T11:40:14.560-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cli"/><category scheme="http://www.blogger.com/atom/ns#" term="SysAdmin"/><title type='text'>Echo and Process from cmdline</title><content type='html'>&lt;p&gt;Here is a quick one for the sys admin tasks.  I want to execute a command, and based on the output, not the exit code, execute something else.  At the same time, I want to see the output of the original program displayed on the screen.  The following does not work because &lt;b&gt;grep&lt;/b&gt; swallows the input.&lt;/p&gt;
&lt;pre&gt;$ cmd | grep &#39;pattern to find&#39; &amp;&amp; doSomething&lt;/pre&gt;
&lt;p&gt;My current solution is not optimal, me thinks, but at least it lets me see what the original output is.  Here is what I have:&lt;/p&gt;
&lt;pre&gt;$ cmd | tee /dev/stderr | grep -q &#39;pattern to find&#39; &amp;&amp; doSomething&lt;/pre&gt;
&lt;p&gt;Got any other way to do this?&lt;/p&gt;
&lt;p&gt;P.D. I hate blogger&#39;s formatting...&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/5126419108693537747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/5126419108693537747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5126419108693537747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5126419108693537747'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2010/04/echo-and-process-from-cmdline.html' title='Echo and Process from cmdline'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-7296332416096132723</id><published>2009-06-09T08:21:00.004-04:00</published><updated>2009-06-09T08:35:26.084-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Haskell"/><category scheme="http://www.blogger.com/atom/ns#" term="Lisp"/><category scheme="http://www.blogger.com/atom/ns#" term="WorseIsBetter"/><title type='text'>Ouch: Bashing the &quot;right thing&quot;</title><content type='html'>&lt;p&gt;Finally got around to reading &lt;a href=&quot;http://www.jwz.org/doc/worse-is-better.html#&quot;&gt;Worse is Better&lt;/a&gt; by D. Gabriel.  I must admit, I feel I&#39;m more of a &quot;right thing&quot; kind of guy, but I can see what Gabriel&#39;s point is.  It seems to be a variation on &quot;the perfect is the enemy of the good&quot; (Voltaire, me thinks).  I specially liked the idea that trying to design a system that has all the correct interface leads to a system that rarely sees the light of day.  The implementation is just a nightmare for these 100% perfect interface systems.&lt;/p&gt;

&lt;p&gt;I&#39;ve know for a while now that the kind of compromises that this paper brings to light are hard for me to swallow.  Probably the reason why I think I&#39;d much rather do science than engineering.  Darn, I want simplest and complete interface, AND simplest and efficient implementation.&lt;/p&gt;

&lt;p&gt;On thought that came to my mind as I read the paper was: is Haskell trying to be the &quot;right thing&quot;?  What do you think?&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/7296332416096132723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/7296332416096132723' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7296332416096132723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7296332416096132723'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/06/auch-bashing-right-thing.html' title='Ouch: Bashing the &quot;right thing&quot;'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-1930933283810047748</id><published>2009-04-08T08:34:00.003-04:00</published><updated>2009-04-08T08:46:29.111-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dvorak"/><category scheme="http://www.blogger.com/atom/ns#" term="keyboard"/><category scheme="http://www.blogger.com/atom/ns#" term="remap"/><title type='text'>Keyboard remapping FTW!</title><content type='html'>&lt;p&gt;Just installed an evaluation copy of Windows 7, and lost the key mappings I had setup under XP.  I really like my &lt;a href=&quot;http://www.typematrix.com/&quot;&gt;dvorak keyboard&lt;/a&gt;, but for my taste, the RControl and RAlt are too far down.  I use those keys quite a bit, and my right pinky gets hurt with the default layout.  I was very glad to find this &lt;a href=&quot;http://webpages.charter.net/krumsick/&quot;&gt;remapper&lt;/a&gt; that seemed to work with Windows 7!</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/1930933283810047748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/1930933283810047748' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/1930933283810047748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/1930933283810047748'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/04/keyboard-remapping-ftw.html' title='Keyboard remapping FTW!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-969312211700560701</id><published>2009-03-24T17:36:00.004-04:00</published><updated>2009-03-24T17:38:58.056-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="excel"/><title type='text'>Excel madness</title><content type='html'>&lt;p&gt;Sometimes your data lives inside an excel spreadsheet...&lt;/p&gt;
&lt;pre&gt;=IF(X2&amp;lt;0,&quot;-&quot;,&quot;&quot;)&amp;FLOOR(ABS(X2)/$&#39;Year Summary&#39;.$H$20,1,1)&amp;&quot;d, &quot;&amp;FLOOR(MOD(ABS(X2),$&#39;Year Summary&#39;.$H$20),1,1)&amp;&quot;:&quot;&amp;IF(FLOOR(MOD(ABS(X2),1)*60,1,1)&amp;lt;10,&quot;0&quot;&amp;FLOOR(MOD(ABS(X2),1)*60,1,1),FLOOR(MOD(ABS(X2),1)*60,1,1))&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/969312211700560701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/969312211700560701' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/969312211700560701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/969312211700560701'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/03/excel-madness.html' title='Excel madness'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-3628115608757727059</id><published>2009-03-18T16:45:00.007-04:00</published><updated>2009-03-18T19:38:07.992-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linq"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>Xml cleanup fun (thanks to linq)</title><content type='html'>&lt;p&gt;
Today at work I got to clean up some xml handling code I had written a while back.  Here are the versions that came out.
&lt;/p&gt;

&lt;pre style=&quot;background-color:lightgray; border:1px solid black;&quot;&gt;using System.Xml;

// original code fragment
XmlElement el;

el = xdoc.CreateElement(&quot;name1&quot;, xdoc.DocumentElement.NamespaceURI);
el.InnerText = &quot;some value gathered from environment&quot;;
root.AppedChild(el);

el = xdoc.CreateElement(&quot;name2&quot;, xdoc.DocumentElement.NamespaceURI);
el.InnerText = &quot;some value gathered from environment&quot;;
root.AppedChild(el);

// ... and so on&lt;/pre&gt;

&lt;pre style=&quot;background-color:lightgray; border:1px solid black;&quot;&gt;using System.Xml.Linq;

// using linq

root.Add(new XElement(ns + &quot;name1&quot;, &quot;some value from the environment&quot;));
root.Add(new XElement(ns + &quot;name1&quot;, &quot;some value from the environment&quot;));

// ... and so on&lt;/pre&gt;

&lt;pre style=&quot;background-color:lightgray; border:1px solid black;&quot;&gt;using System.Xml.Linq;

// using linq AND getting fancy. Made things much more readable IMHO
Action&amp;lt;string,string&amp;gt; f = (n,v) =&gt; root.Add(new XElement(ns + n, v));

f(&quot;name1&quot;, &quot;some value from the environment&quot;);
f(&quot;name1&quot;, &quot;some value from the environment&quot;);

// ... and so on&lt;/pre&gt;

&lt;p&gt;
Beautiful! The list of entries was quite large, so the noise prunnning looked more significant in my code. Things you end up doing after you use Haskell&#39;s &lt;b&gt;where&lt;/b&gt;.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/3628115608757727059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/3628115608757727059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3628115608757727059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3628115608757727059'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/03/xml-cleanup-fun-thanks-to-linq.html' title='Xml cleanup fun (thanks to linq)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-7685960772920407661</id><published>2009-03-12T00:44:00.004-04:00</published><updated>2014-09-11T22:19:09.901-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cli"/><title type='text'>My new cmdline friend</title><content type='html'>&lt;p&gt;
While I still profess my love for &lt;i&gt;xargs&lt;/i&gt;, I must admit I&#39;ve been using something else quite a bit lately. In my search for a way to more easily do lambda style operations from the command line, I was directed to &lt;i&gt;while&lt;/i&gt;.  &lt;i&gt;while&lt;/i&gt; has not only allowed me to use the variable I&#39;m iterating over more easier, it has also allowed me to have multi-statement commands in my loops.&lt;/p&gt;

&lt;p&gt;
Here is a sample of what I&#39;m now able to easily do:
&lt;/p&gt;

&lt;pre&gt;
find -maxdepth 1 -type d | while read x; do echo &#39;&gt;&gt;&gt; Doing &#39; $x; ( cd &quot;$x&quot;; printf &quot;ID: &quot;; hg id; hg purge --all; ); done
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/7685960772920407661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/7685960772920407661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7685960772920407661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7685960772920407661'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/03/my-new-cmdline-friend.html' title='My new cmdline friend'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-7650374156118928594</id><published>2009-03-12T00:28:00.004-04:00</published><updated>2009-03-12T00:43:39.896-04:00</updated><title type='text'>Solutions, not features</title><content type='html'>&lt;p&gt;
Just heard this quote in a video, and I could not agree with it more:
&lt;/p&gt;

&lt;blockquote&gt;Implement solutions, not features.&lt;/blockquote&gt;

&lt;p&gt;
I&#39;ve turned into a firm believer that it is not what you choose to implements that sets you apart, but rather what you choose NOT to implement.  As a developer, I don&#39;t have a hard time coming up with yet more things I &lt;b&gt;could&lt;/b&gt; add to something.  Yes, I could make that thing do x, y, z, AND even talk to me while it is doing it! 
&lt;/p&gt;

&lt;p&gt;
The other urge that as a developer I have to fight against is the adding of candy, which can be considered a feature, for no other reason than adding candy.  Oh... can&#39;t I use that new water drop effect when opening a window?  Come on... that&#39;s what would make my solution &quot;cool&quot;, right?  If a given candy is not making something easier to use, then IMHO, it has the same value as blinking text did not so long ago.  It ends up accomplishing one thing: annoy the end user.
&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/7650374156118928594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/7650374156118928594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7650374156118928594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7650374156118928594'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/03/solutions-not-features.html' title='Solutions, not features'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-7295543800106146432</id><published>2009-02-24T13:58:00.004-05:00</published><updated>2009-02-24T17:03:26.791-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iPod"/><category scheme="http://www.blogger.com/atom/ns#" term="rsync"/><title type='text'>Sync my music directory with my iPod</title><content type='html'>&lt;p&gt;I use &lt;a href=&quot;http://www.rockbox.org/&quot;&gt;rockbox&lt;/a&gt; on my iPod, and I can never remember the rsync line I need to sync the music folder on my machine with the folder on the player.  Here is the line I used last (expanded, so I can tell what the options are):&lt;/p&gt;

&lt;pre&gt;
rsync --recursive --update --whole-file --delete --stats --progress --dry-run ~/audio/ ~/iPod/Music/&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/7295543800106146432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/7295543800106146432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7295543800106146432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/7295543800106146432'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/02/sync-my-music-directory-with-my-ipod.html' title='Sync my music directory with my iPod'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-8559273375373573860</id><published>2009-02-14T03:34:00.006-05:00</published><updated>2009-02-24T16:58:41.583-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compositing"/><category scheme="http://www.blogger.com/atom/ns#" term="transparency"/><category scheme="http://www.blogger.com/atom/ns#" term="transset"/><category scheme="http://www.blogger.com/atom/ns#" term="xcompmgr"/><category scheme="http://www.blogger.com/atom/ns#" term="xmonad"/><title type='text'>xmonad, compositing, transparancy</title><content type='html'>&lt;p&gt;
I&#39;ve been happly using xmonad for quite some time now.  I love the fact that my window manager is just that, a window manager.  At first I didn&#39;t even have a background image, since I never really did see my background.  I&#39;ve given in.  It started with transparent urxvts which allow me to see my background.  I&#39;m discovering that using a tiling window manager does not have to equate with having an ugly work environment.&lt;/p&gt;

&lt;p&gt;
This story picks up with some of the envy I&#39;ve been having about some features in compositing WMs.  Specifically, global transparency (i.e. any and all windows are semi-transparent, ala uxrvt), and switching workspaces using &quot;the cube&quot;.  I realize that these are nothing more than eye candy, but life doesn&#39;t always just have to be about pragmatism, does it?&lt;/p&gt;

&lt;p&gt;
The main xmonad page seems to indicate that xmonad supports compositing.  I&#39;m not 100% sure I know what they mean by that.  From what I seem to find in the intertubes, it means that you can run xcompmgr alongside.  I need to jump into #xmonad and ask some questions about it.  There seems to be some contrib modules that play in the compositing arena, but haven&#39;t found anything that seemed obvious.&lt;/p&gt;

&lt;p&gt;
I&#39;ve managed to have some sort of transparency for any of my windows.  This has involved installing xcompmgr, and transset.  After running &#39;xcompmgr &amp;&#39;, I can use &#39;transset .9&#39;, which gives me a cross-hairs pointer used to select the window I want to target.  It&#39;s not the greatest thing in the world, as it only does opacity and targets a single window.  Haven&#39;t found a way to do tinting yet.  It&#39;s a start, none the less.  Now, my urxvt terms are using their native transparency to bleed my background thru, and firefox is using &#39;transset .9&#39; to let me see the background as well.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/8559273375373573860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/8559273375373573860' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8559273375373573860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8559273375373573860'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/02/xmonad-compositing-transparancy.html' title='xmonad, compositing, transparancy'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-5501940317842526765</id><published>2009-02-09T21:05:00.005-05:00</published><updated>2009-02-24T14:09:11.413-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fold"/><category scheme="http://www.blogger.com/atom/ns#" term="foldr"/><category scheme="http://www.blogger.com/atom/ns#" term="hakell"/><category scheme="http://www.blogger.com/atom/ns#" term="RealWorldHaskell"/><title type='text'>splitWith using foldr</title><content type='html'>&lt;p&gt;Real World Haskell&#39;s chapter 4 has the following problem:&lt;/p&gt;

&lt;blockquote&gt;Write a function splitWith that acts similarly to words, but takes a predicate and a list of any type, and splits its input list on every element for which the predicate returns False.&lt;/blockquote&gt;

&lt;p&gt;I really wanted to do this with a foldr.  The problem just seems to call for fold.  Here is my attempt.  I put a bit extra there to make sure I handle things I didn&#39;t like.&lt;/p&gt;

&lt;script src=&quot;http://gist.github.com/69724.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;I feel dirty.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/5501940317842526765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/5501940317842526765' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5501940317842526765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/5501940317842526765'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/02/splitwith-using-foldr.html' title='splitWith using foldr'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-364779919674307074</id><published>2009-01-26T23:53:00.002-05:00</published><updated>2009-01-26T23:55:30.132-05:00</updated><title type='text'>Random wallpaper</title><content type='html'>Low fat random wallpaper switcher.  I use it with xmonad.
&lt;pre&gt;
#!/bin/sh
feh --bg-center &quot;$(find /home/me/img/wallpapers/ -type f | shuf | head -n 1)&quot;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/364779919674307074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/364779919674307074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/364779919674307074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/364779919674307074'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/01/random-wallpaper.html' title='Random wallpaper'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-8322432015977653431</id><published>2009-01-15T10:12:00.003-05:00</published><updated>2009-01-15T10:16:47.417-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compile"/><category scheme="http://www.blogger.com/atom/ns#" term="RAM"/><title type='text'>Me needs more RAM</title><content type='html'>Our compiling time keeps on increasing.  Today I decided to run very rudimentary timings on the process:
&lt;pre&gt;
real    4m56.703s
user    0m1.004s
sys     0m1.507s
&lt;/pre&gt;
Oh... so sad.  Most of the time is spent in IO. Yes, I curse the hdd. Wish I knew of a good ramdisk solution for Windows.</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/8322432015977653431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/8322432015977653431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8322432015977653431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8322432015977653431'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/01/me-needs-more-ram.html' title='Me needs more RAM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-895256986182878125</id><published>2009-01-09T10:16:00.003-05:00</published><updated>2009-01-09T10:24:24.930-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><title type='text'>C# partial methods</title><content type='html'>I just got introduced to partial methods in c#.  Vewy vewy sneaky!  So... it&#39;s like having an optional abstract method.  If not implemented, the compiler will remove the definition and all the calls to that method.  Code generators seem to be using this technique to set up things like the famous &lt;i&gt;Initialize()&lt;/i&gt; methods.  For some examples, read &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/wa80x488.aspx&quot;&gt;the msdn doc&lt;/a&gt; for it.</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/895256986182878125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/895256986182878125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/895256986182878125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/895256986182878125'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2009/01/c-partial-methods.html' title='C# partial methods'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-4463532439913595267</id><published>2008-12-17T08:43:00.002-05:00</published><updated>2008-12-17T08:47:42.957-05:00</updated><title type='text'>Understanding closures a bit more</title><content type='html'>&lt;p&gt;Here is an 18 line C# program that gives some insights into closures.  Try to anticipate what it would print.  For those that haven&#39;t seen lambda expressions before, it might give hints as to how they can be used too.&lt;/p&gt;

&lt;pre&gt;
using System;
namespace ClosureTest {
 class Program {
  public delegate int TestDelegate(int i);
  
  public static void Main(string[] args) {
   var add2 = Adder(2);
   Console.WriteLine(add2(8).ToString());
   Console.WriteLine(add2(15).ToString());
   Console.WriteLine(add2(add2(12)).ToString());
   Console.ReadLine();
  }
  
  public static TestDelegate Adder(int i) {
   return x =&gt; x + i;
  }
 }
}
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/4463532439913595267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/4463532439913595267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/4463532439913595267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/4463532439913595267'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/12/understanding-closures-bit-more.html' title='Understanding closures a bit more'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-2185703973236773048</id><published>2008-12-11T15:15:00.005-05:00</published><updated>2008-12-11T15:20:22.046-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gmail"/><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="SMS"/><title type='text'>SMS from gmail, uh...</title><content type='html'>&lt;p&gt;Tried the new SMS from gmail.  Seems to work like a charm, now some friends that don&#39;t have SMS on their phone can still contact me!  We did hit a use case that I would have thought to be pretty basic:&lt;/p&gt;

&lt;p&gt;I sent a SMS to a friend via the gmail interface.  I then proceeded to sign out of the chat.  The friend replied to the message... and I never got a new email about it.  Where did it go?  It went to the &quot;Chats&quot; label, as a response to my message.  It was not, however, obvious that I had not seen this new message.  I really would have thought that the reply would have gone to my email if I&#39;m not &quot;online&quot;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/2185703973236773048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/2185703973236773048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/2185703973236773048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/2185703973236773048'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/12/sms-from-gmail-uh.html' title='SMS from gmail, uh...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-3895532302150212535</id><published>2008-12-11T01:49:00.003-05:00</published><updated>2008-12-11T02:01:22.356-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="MobilMe"/><title type='text'>A sad tale of MobileMe and the iPhone</title><content type='html'>&lt;p&gt;I lost all my contacts information on my iPhone recently.  Sad tale this is.&lt;/p&gt;

&lt;p&gt;I signed up with MobileMe when it first came out.  My iPhone was then setup to sync contact and other info with MobileMe via their &quot;Push&quot; mechanism.  It worked worderfully for a while, and I should have gone into MobileMe and exported everything every once in a while.&lt;/p&gt;

&lt;p&gt;This last week the free account that I had with MobileMe ended, and I decided I did not want to pay for the service.  So, I logged in, and canceled my account.  Nothing seemed to be affected on my phone.&lt;/p&gt;

&lt;p&gt;This morning I tried to make a call from one of my &quot;Favorites&quot;, and found that my &quot;Favorites&quot; list only had phone numbers, with no names attached.  I opened my &quot;Contacts&quot;, and.... well, like they say, the rest is history.  I tried to restory from a previous full system backup, but it didn&#39;t help any.  I&#39;m guessing that the backup only stored the fact that my contacts where up in MobileMe.&lt;/p&gt;

&lt;p&gt;Lesson: ALWAYS backup your data somewhere where _YOU_ have full access to it.  I guess this goes for the stuff that I have with google too.  I&#39;m going to have to find a way to back my email, calendar, docs, etc., to a location where it cannot be beyond my reach.  Sad.&lt;/p&gt;

&lt;p&gt;I emailed a bunch of people today asking for their bits, and have gotten a ton of them back.  Now I have my contact data backed up to 3 different locations: iPhone backup, windows address book, plain text vCard data.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/3895532302150212535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/3895532302150212535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3895532302150212535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/3895532302150212535'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/12/sad-tale-of-mobileme-and-iphone.html' title='A sad tale of MobileMe and the iPhone'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-6357909669269227230</id><published>2008-12-11T00:23:00.002-05:00</published><updated>2016-04-18T10:04:14.994-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="freenode"/><category scheme="http://www.blogger.com/atom/ns#" term="irc"/><title type='text'>Reset password for freenode.net</title><content type='html'>--- Edit with new information&lt;br&gt;
&lt;br&gt;
As many people here have noted, you can message NickServ with the following:&lt;br&gt;
&lt;br&gt;
Syntax: SET PASSWORD&lt;br&gt;
&lt;br&gt;
Example:&lt;br&gt;
/msg NickServ SET PASSWORD swordfish&lt;br&gt;
&lt;br&gt;
--- Original&lt;br&gt;
&lt;br&gt;
So, I had a hard time finding this info.  If you have registered a nick in irc.freenode.net, and have forgotten your password, you must join #freenode and ask an operator to send you a reset password email.  Ping me if this helped you!&lt;br&gt;
&lt;br&gt;
</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/6357909669269227230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/6357909669269227230' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/6357909669269227230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/6357909669269227230'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/12/reset-password-for-freenodenet.html' title='Reset password for freenode.net'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-8399692353684811808</id><published>2008-11-13T22:49:00.002-05:00</published><updated>2008-11-13T22:54:46.968-05:00</updated><title type='text'>Running resolution in X</title><content type='html'>Nice bit to get the current running resolution under X, for the poor souls running gentoo + paludis + xmonad: &lt;pre&gt;paludis -i xdpyinfo
xdpyinfo | grep dimensions
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/8399692353684811808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/8399692353684811808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8399692353684811808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/8399692353684811808'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/11/running-resolution-in-x.html' title='Running resolution in X'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-2290721149938146595</id><published>2008-10-08T16:39:00.005-04:00</published><updated>2008-10-08T16:47:06.244-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cli"/><category scheme="http://www.blogger.com/atom/ns#" term="delete"/><category scheme="http://www.blogger.com/atom/ns#" term="sed"/><category scheme="http://www.blogger.com/atom/ns#" term="sort"/><category scheme="http://www.blogger.com/atom/ns#" term="vim"/><title type='text'>Bits from today</title><content type='html'>More &quot;sed&quot; powers:&lt;pre&gt;sqlcmd somecommand | sed &#39;1,2d; /^$/ d; /^\(.* rows affected\)/ d; s/ *$//&#39;&lt;/pre&gt;That&#39;ll delete the first two lines, delete empty lines, delete &quot;rows affected&quot; lines, and trim out ending whitespace!

And from vim:&lt;pre&gt;:sort u&lt;/pre&gt;Sort and keep only unique lines.  Beautimus!</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/2290721149938146595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/2290721149938146595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/2290721149938146595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/2290721149938146595'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/10/bits-from-today.html' title='Bits from today'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5923858383394754770.post-1809366281558647874</id><published>2008-10-06T23:53:00.000-04:00</published><updated>2008-10-06T23:54:15.653-04:00</updated><title type='text'>Hmmm...</title><content type='html'>Bloatware comes one cool feature at a time.</content><link rel='replies' type='application/atom+xml' href='http://zurktech.blogspot.com/feeds/1809366281558647874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5923858383394754770/1809366281558647874' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/1809366281558647874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5923858383394754770/posts/default/1809366281558647874'/><link rel='alternate' type='text/html' href='http://zurktech.blogspot.com/2008/10/hmmm.html' title='Hmmm...'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>