<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sean Neilan</title>
	<atom:link href="http://seanneilan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://seanneilan.com</link>
	<description>The voices in my head tell me I&#039;m the sanest man on the moon.</description>
	<lastBuildDate>Fri, 14 May 2010 15:13:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cindy Electronium</title>
		<link>http://seanneilan.com/2010/05/14/cindy-electronium/</link>
		<comments>http://seanneilan.com/2010/05/14/cindy-electronium/#comments</comments>
		<pubDate>Fri, 14 May 2010 15:13:54 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=183</guid>
		<description><![CDATA[This song is called Cindy Electronium. It is about the scientific way to admire someone for who they are.
http://seanneilan.com/wp-content/uploads/2010/05/00.-Cindy-Electronium.mp3
(right click &#38; save-as.)
]]></description>
			<content:encoded><![CDATA[<p>This song is called Cindy Electronium. It is about the scientific way to admire someone for who they are.</p>
<p><a href="http://seanneilan.com/wp-content/uploads/2010/05/00.-Cindy-Electronium.mp3">http://seanneilan.com/wp-content/uploads/2010/05/00.-Cindy-Electronium.mp3</a></p>
<p>(right click &amp; save-as.)</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/05/14/cindy-electronium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://seanneilan.com/wp-content/uploads/2010/05/00.-Cindy-Electronium.mp3" length="1678638" type="audio/mpeg" />
		</item>
		<item>
		<title>Argument Error #1</title>
		<link>http://seanneilan.com/2010/03/26/argument-error-1/</link>
		<comments>http://seanneilan.com/2010/03/26/argument-error-1/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 03:43:27 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=173</guid>
		<description><![CDATA[
I call this Argument Error #1. For those who don&#8217;t know, I love computer error messages in the same way a Swedish banker might demonstrate love and fervor for a terrorist captor. I&#8217;ve passed strings and integers to functions before but I&#8217;m not sure how I might pass this painting. Thus, g++ would probably give [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://seanneilan.com/wp-content/uploads/2010/03/CIMG0499.jpg"><img class="alignnone size-medium wp-image-174" title="Argument Error #1" src="http://seanneilan.com/wp-content/uploads/2010/03/CIMG0499-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>I call this <span style="text-decoration: underline;">Argument Error #1</span>. For those who don&#8217;t know, I love computer error messages in the same way a Swedish banker might demonstrate <a href="http://en.wikipedia.org/wiki/Stockholm_syndrome">love and fervor for a terrorist captor</a>. I&#8217;ve passed strings and integers to functions before but I&#8217;m not sure how I might pass this painting. Thus, g++ would probably give me an argument error for this.</p>
<p>Sorry for the bad photograph. I&#8217;ll make a better one once I get off spring break. I&#8217;ll also get back to ALL the emails. Every last one of them. And phone calls. And text messages. I disconnected myself while I worked on this.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/03/26/argument-error-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Link Gettin&#8217; Code</title>
		<link>http://seanneilan.com/2010/03/13/python-link-gettin-code-2/</link>
		<comments>http://seanneilan.com/2010/03/13/python-link-gettin-code-2/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 00:01:12 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=155</guid>
		<description><![CDATA[This is some code to get all links from a fully qualified url. It returns a list of fully qualified links from the page. Unfortunately, some sites (like this one) embed links in javascript so you can&#8217;t scrape all the mp3s. I&#8217;ll have a solution to that later with either Uzbl or Proxystrike. My experiences [...]]]></description>
			<content:encoded><![CDATA[<p>This is some code to get all links from a fully qualified url. It returns a list of fully qualified links from the page. Unfortunately, some sites (like <a href="http://gh.ffshrine.org/song/463/4">this one</a>) embed links in javascript so you can&#8217;t scrape all the mp3s. I&#8217;ll have a solution to that later with either <a href="http://www.uzbl.org/">Uzbl</a> or <a href="http://www.edge-security.com/proxystrike.php">Proxystrike</a>. My experiences with running javascript inside of python using <a href="http://code.google.com/p/python-spidermonkey/">spidermonkey</a> have not been good.</p>
<pre class="brush: python; gutter: false; collapse: true">
import re
import urlparse
import urllib

# retrieves a set of links for any html page
def links(url):
    page = urllib.urlopen(url)
    if page == None:
        return []

    try:
        html = page.read()
    except:
        return []

    # get all href='s into a list
    pattern = """href=['"][^'"]*"""
    pattern = re.compile(pattern, re.IGNORECASE)
    rawLinks = pattern.findall(html)

    # get scheme, host &#038; path of original url
    url = list(urlparse.urlsplit(url))
    if re.search("/$", url[2]) == None:
        urlPath = url[2].split("/")
        urlPath.pop(len(urlPath)-1)
        if urlPath == []:
            url[2] = "/"
        else:
            url[2] = "/".join(urlPath) + "/"

    # buffer for holding all links to be returned
    gewdLinks = []

    # turn each href into a fully qualified url
    for i in range(len(rawLinks)):
        # remove "href=" from each list[i]
        rawLinks[i] = rawLinks[i][6:]

        curLink = list(urlparse.urlsplit(rawLinks[i]))

        # no operations on emails or javascripts
        if not rawLinks[i].count("mailto") and not rawLinks[i].count("javascript"):

            # set scheme
            if curLink[0] == "":
                curLink[0] = url[0]

            # set host
            if curLink[1] == "":
                curLink[1] = url[1]

            # expand relative url
            if re.search("^/", curLink[2]) == None:
                curLink[2] = url[2] + curLink[2]

            # skip if https link.
            if curLink[0] != "https":
                rawLinks[i] = urlparse.urlunsplit(tuple(curLink))
                gewdLinks.append(rawLinks[i])

    return gewdLinks
</pre>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/03/13/python-link-gettin-code-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best MITM Thingy Ever</title>
		<link>http://seanneilan.com/2010/03/01/best-mitm-thingy-ever/</link>
		<comments>http://seanneilan.com/2010/03/01/best-mitm-thingy-ever/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:35:45 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=145</guid>
		<description><![CDATA[
is the best man in the middle attack thingy for http requests I&#8217;ve ever seen. If you ever want to quickly reverse engineer some program that connects to the internet or a private iphone api (like mint.com&#8217;s) You can configure your os to use iptables to http packets through this program. Or, if a program [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.edge-security.com/proxystrike.php"><img class="alignnone" title="Proxystrike" src="http://farm4.static.flickr.com/3411/3251415324_242d45c681.jpg" alt="Proxystrike" width="500" height="108" /></a></p>
<p>is the best man in the middle attack thingy for http requests I&#8217;ve ever seen. If you ever want to quickly reverse engineer some program that connects to the internet or a private iphone api (<a href="http://www.mint.com/">like mint.com</a>&#8217;s) You can configure your os to use iptables to http packets through this program. Or, if a program can detect that your using a proxy server, you can configure squid to act as a hidden proxy but then use proxy strike as its proxy. Kind of like a proxy-proxy. Next time I bother reverse engineering something I&#8217;ll post the code to this.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/03/01/best-mitm-thingy-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Solution to SFTP on Linux</title>
		<link>http://seanneilan.com/2010/03/01/my-solution-to-sftp-on-linux/</link>
		<comments>http://seanneilan.com/2010/03/01/my-solution-to-sftp-on-linux/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:22:42 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=134</guid>
		<description><![CDATA[SFTP and FTP Linux Clients Suck.
Fortunately, there&#8217;s a program called sshfs which mounts an sftp connection as a drive using fuse. To install in Ubuntu,
sudo apt-get install sshfs.
Then, when you want to connect to an sftp server, add two aliases to your bashrc file like this:
#mounting alias
alias seanneilan.com='mkdir ~/ftp/seanneilan.com/; sshfs -o uid=1000 -o gid=1000 sneilan@seanneilan.com:/ [...]]]></description>
			<content:encoded><![CDATA[<h4>SFTP and FTP Linux Clients Suck.</h4>
<p>Fortunately, there&#8217;s a program called <a href="http://fuse.sourceforge.net/sshfs.html">sshfs</a> which mounts an sftp connection as a drive using fuse. To install in Ubuntu,<br />
<code>sudo apt-get install sshfs.</code></p>
<p>Then, when you want to connect to an sftp server, add two aliases to your bashrc file like this:</p>
<p><code>#mounting alias<br />
alias seanneilan.com='mkdir ~/ftp/seanneilan.com/; sshfs -o uid=1000 -o gid=1000 sneilan@seanneilan.com:/ -p 22 ~/ftp/seanneilan.com/; cd ~/ftp/seanneilan.com/home/sneilan'<br />
#unmounting alias<br />
alias useanneilan.com='cd ~; fusermount -u ~/ftp/seanneilan.com; rmdir ~/ftp/seanneilan.com'</code></p>
<h4>To install</h4>
<p>Choose a name for your connection. Mine is seanneilan.com. Copy/paste &#038; replace all instances of seanneilan.com with the name of your connection. Replace sneilan@seanneilan.com:/ with your username, host &#038; initial directory. Be sure to create a folder called ftp in your home directory.</p>
<h4>How it works</h4>
<ol>
<li>Make a folder for the files inside a folder called ftp in your home directory.</li>
<li>Use sshfs to mount a connection inside that folder under your userid (no root required!) The uid=1000 &#038; gid=1000 is your user id &#038; group id on every linux system.</li>
<li>Then, changes to that directory!</li>
<li>The unmounting alias goes to your home directory, unmounts the ftp connection and removes the directory.</li>
</ol>
<h4>Issues</h4>
<p>If you lose your connection, you&#8217;ll have to unmount, remount and reopen all your files since the file pointers will get messed up.</p>
<h4>Ideas</h4>
<p>I was thinking about implementing something with <a href="http://www.stefan.buettcher.org/cs/fschange/index.html">fschange</a>. That way, I could make a program that makes a copy of whatever you&#8217;re about to edit and instead opens up the copy rather than the one on the sftp server. Then, when you save, fschange will notify some program to copy/paste your changes over to the sftp server. Should the sftp connection drop, the program will automatically reconnect. I might do this later.</p>
<h4>Tips</h4>
<p>It also helps if you use <a href="https://help.ubuntu.com/community/SSH/OpenSSH/Keys">ssh keys</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/03/01/my-solution-to-sftp-on-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xmonad is Amazing</title>
		<link>http://seanneilan.com/2010/03/01/xmonad-is-amazing/</link>
		<comments>http://seanneilan.com/2010/03/01/xmonad-is-amazing/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 14:10:10 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=131</guid>
		<description><![CDATA[There&#8217;s this window manager called Xmonad. It&#8217;s magnificient because it lets you manage windows with a keyboard. You have 8 or so portals to different workspaces on each monitor.

You can have different programs running on different workspaces and switch them by pressing Alt-~-0-9. Bring up a new program with Alt-p-p &#38; then type the name [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s this window manager called <a href="http://xmonad.org/">Xmonad</a>. It&#8217;s magnificient because it lets you manage windows with a keyboard. You have 8 or so portals to different workspaces on each monitor.</p>
<p><img class="alignnone" title="Xmonad Workspaces" src="http://xmonad.org/images/tour/workspaces.png" alt="Xmonad Workspaces" width="588" height="171" /></p>
<p>You can have different programs running on different workspaces and switch them by pressing Alt-~-0-9. Bring up a new program with Alt-p-p &amp; then type the name of the program. Kill a program with Alt-Shift-C. Send windows to other desktops with Alt-Shift-W or E. Use Wmii bindings like <a href="http://seanneilan.com/wp-content/uploads/2010/03/xmonad.txt">mine</a>. There&#8217;s a lot more to this xmonad and you can read my config file or just go <a href="http://xmonad.org/tour.html">here</a>.</p>
<p>Xmonad is definitely an advancement in interaction with computers for those who are willing to go an extra step to learn new things.</p>
<p>I&#8217;ve been running Linux for a long time. For the most part, I&#8217;ve understood the various linux desktops as largely trying to be like windows but more powerful. (At least when you look at Gnome or KDE, the great front ends to Linux.)</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/03/01/xmonad-is-amazing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dominicks/Jewel Price Wars Are BS</title>
		<link>http://seanneilan.com/2010/01/22/dominicksjewel-price-wars-are-bs/</link>
		<comments>http://seanneilan.com/2010/01/22/dominicksjewel-price-wars-are-bs/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 02:36:05 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dominicks jewel aldis]]></category>

		<guid isPermaLink="false">http://seanneilan.com/2010/01/22/dominicksjewel-price-wars-are-bs/</guid>
		<description><![CDATA[I just biked to Aldis and got something like $50 worth of groceries for like $22. That was awesome. Even with their supposed price cuts, Dominicks &#038; Jewel just can&#8217;t beat Aldi&#8217;s.
]]></description>
			<content:encoded><![CDATA[<p>I just biked to Aldis and got something like $50 worth of groceries for like $22. That was awesome. Even with their supposed price cuts, Dominicks &#038; Jewel just can&#8217;t beat Aldi&#8217;s.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2010/01/22/dominicksjewel-price-wars-are-bs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pybwsal so far</title>
		<link>http://seanneilan.com/2009/12/16/pybwsal-so-far/</link>
		<comments>http://seanneilan.com/2009/12/16/pybwsal-so-far/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 21:30:05 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pybwsal]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=117</guid>
		<description><![CDATA[Things have been a bit slow in a past couple days as my friend Derek &#38; I have been building an android application over winter break.
I have added the arbitrator, controller, buildmanager and constructionmanager classes to the project. The constructionmanager class is halfway done &#38; the other three classes haven&#8217;t been tested. I need to [...]]]></description>
			<content:encoded><![CDATA[<p>Things have been a bit slow in a past couple days as my friend Derek &amp; I have been building an android application over winter break.</p>
<p>I have added the arbitrator, controller, buildmanager and constructionmanager classes to the project. The constructionmanager class is halfway done &amp; the other three classes haven&#8217;t been tested. I need to complete the holy trinity of construction, production and morph manager to test them properly. Testing of course will probably take longer than it took to write, but, hey, by January 1st, we should have this whole pybwsal thing done.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2009/12/16/pybwsal-so-far/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>pybwsal &#8211; a python implementation of bwsal</title>
		<link>http://seanneilan.com/2009/12/12/pybwsal-a-python-implementation-of-bwsal/</link>
		<comments>http://seanneilan.com/2009/12/12/pybwsal-a-python-implementation-of-bwsal/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 18:57:05 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bwsal]]></category>
		<category><![CDATA[pybwsal]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=108</guid>
		<description><![CDATA[My friend Derek Schaefer &#38; I have started a project called pybwsal for the starcraft ai competition. Bwsal is a set of utility functions to making programming starcraft ai&#8217;s in bwapi (which is a set of utility functions in c++ for programming starcraft ai&#8217;s) easier.  
So far, the building placer has been implemented &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://derekschaefer.net/">Derek Schaefer</a> &amp; I have started a project called <a href="http://code.google.com/p/pybwsal/"><strong>pybwsal</strong></a> for the <a href="http://eis.ucsc.edu/StarCraftAICompetition">starcraft ai competition</a>. <a href="http://code.google.com/p/bwsal/">Bwsal</a> is a set of utility functions to making programming starcraft ai&#8217;s in <a href="http://code.google.com/p/bwapi/">bwapi</a> (which is a set of utility functions in c++ for programming starcraft ai&#8217;s) easier. <img src='http://seanneilan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So far, the building placer has been implemented &amp; I was working on implementing the building manager but unfortunately ran into issues yesterday. See <a href="http://code.google.com/p/pybw/issues/detail?id=20">http://code.google.com/p/pybw/issues/detail?id=20</a></p>
<p>In the meantime, I will work on programming the bid system as <a href="http://code.google.com/u/chad.retz/">Chad Retz</a> (and perhaps others) from the <a href="http://bwapi-jbridge.googlecode.com/">bwapi-jbridge</a> project is interested in that.</p>
<p>You can keep up to date on pybwsal by subscribing checking back to <a href="http://seanneilan.com/tag/pybwsal/">http://seanneilan.com/tag/pybwsal/</a> every once in a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2009/12/12/pybwsal-a-python-implementation-of-bwsal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NEWSBREAK: Youtube account oldcountrytunes is suspended..</title>
		<link>http://seanneilan.com/2009/12/08/newsbreak-youtube-account-oldcountrytunes-is-suspended/</link>
		<comments>http://seanneilan.com/2009/12/08/newsbreak-youtube-account-oldcountrytunes-is-suspended/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 03:54:39 +0000</pubDate>
		<dc:creator>sneilan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seanneilan.com/?p=106</guid>
		<description><![CDATA[My goodness. What a massive loss to the community. Thousands and thousands of country music songs have been lost from youtube thanks to copyright claims. I began to like country music too and now there is simply no way to get any of it without going to the library? I mean, never in my life [...]]]></description>
			<content:encoded><![CDATA[<p>My goodness. What a massive loss to the community. Thousands and thousands of country music songs have been lost from youtube thanks to copyright claims. I began to like country music too and now there is simply no way to get any of it without going to the library? I mean, never in my life would I pay for anything in this world that might be gotten for free on the Internet. (Library costs money! Gas!)</p>
<p>And if you care, here is his old bio:</p>
<blockquote><p>Old as dirt. retired. I am a Christian but I am also a mortal man. Not perfect, born in sin so I believe I must rely on something more powerful than man to guide and help me during my bad times. I want to do good when I am able and avoid doing bad . That is my goal although it is not possible to achieve all the time.</p></blockquote>
<p>Maybe I can troll thepiratebay.org for Corrina Cordwell, Slim Whitman, Jim Reeves, Merle Haggard, Merle Travis, Ernie Freeman, Kitty Wells, Marty Robbins, Highway 101, Eddy Arnold, Billy Walker, Frank Ifield, Tom T hall, Gene Autry, Roy Rodgers, Johnny Cash and Johnny Horton.</p>
]]></content:encoded>
			<wfw:commentRss>http://seanneilan.com/2009/12/08/newsbreak-youtube-account-oldcountrytunes-is-suspended/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
