<?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>jr conlin&#039;s ink stained banana</title>
	<atom:link href="http://blog.unitedheroes.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.unitedheroes.net</link>
	<description>it&#039;s teaching the monkey to stop typing that&#039;s hard...</description>
	<lastBuildDate>Tue, 21 May 2013 15:34:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Voice of Dissnt</title>
		<link>http://blog.unitedheroes.net/archives/p/4654/voice-of-dissnt/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4654/voice-of-dissnt/#comments</comments>
		<pubDate>Tue, 21 May 2013 03:33:52 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cranky]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4654</guid>
		<description><![CDATA[So, flickr got a redesign. A lot of people love it. i'm not one of those. Mind you, what i liked about Flickr was that it presented me images that were meant for public display. They were easy to find and really took effort to show them off. This meant that a lot of folks [...]]]></description>
				<content:encoded><![CDATA[<p>So, <a href="http://blog.flickr.net/en/2013/05/20/a-better-brighter-flickr/" target="_blank">flickr got a redesign</a>. </p>
<p><a href="https://twitter.com/search?q=flickr%20redesign%20gorgeous&#038;src=typd" target="_blank">A lot of people love it</a>. i'm not one of those.</p>
<p>Mind you, what i liked about Flickr was that it presented me images that were meant for public display. They were easy to find and really took effort to show them off. This meant that a lot of folks saw and remarked on your images. Folks who wanted to share them could use Creative Commons licenses and offer them up for general consumption. i'm astounded that a few of my images were used that way. i'm also sure that a lot of images that weren't marked as CC were also used and i'm positive some of mine were abused as well. </p>
<p>It doesn't really matter, since that's what that site was about. Heck, they even had a page full of images considered to be Most Interesting. </p>
<p>So, with the latest image focused iteration, i should be over the moon right? Images are not only on display, but smooshed together in one big firehose of imagery goodness pointed at my optical nerves. </p>
<p>Well, no, i'm not.</p>
<p>See, there's this thing called "White Space" that lets you appreciate what you're looking at. It's why the Mona Lisa is displayed like this</p>
<p><a href="http://upload.wikimedia.org/wikipedia/commons/f/fe/Mona_Lisa_installation_in_Louvre,_empty_room.JPG" target="_blank"><img src="http://upload.wikimedia.org/wikipedia/commons/f/fe/Mona_Lisa_installation_in_Louvre,_empty_room.JPG" width="400"/></a> </p>
<p>and not like this<br />
<a href="http://blog.unitedheroes.net/wp-content/uploads/2013/05/flatMona.png" target="_blank"><img src="http://blog.unitedheroes.net/wp-content/uploads/2013/05/flatMona.png" alt="flatMona" width="400" height="300" class="alignnone size-full wp-image-4655" /></a></p>
<p>Granted, there have been a few museums i've been to that do something similar to this. That doesn't mean that it's a good idea, and generally, there are other than aesthetic concerns for why they may do that. i'll add that "white space" isn't always "white". It means uncluttered areas that don't distract. The much maligned windows8 interface even follows that practice by having very simple graphics, all smooshed together like a cubist version of Twister.</p>
<p>So, the layout thing isn't my cup of tea. So, there's the 1TB of image storage. That's worth something, right? </p>
<p>Eh, no. Not really. </p>
<p>Much like how Y!Mail once touted that it offered 1GB of mail storage, there are other services that offer a lot more. Imgur and SmugMug offer fairly unlimited image storage, and have for years. Likewise, while kind of the opposite of flickr in the discovery and usability side, Facebook and Instagram also offer loads of storage as part of their service. In some respects, flickr's announcement could easily be interpreted as "We're limiting the amount of storage to only 1TB". </p>
<p>i'll also note that you still can't pull images via RSS
<div class="update">As Derek notes, there are still <a href="http://www.flickr.com/services/feeds/" target="_blank">some RSS feeds</a> available</div>
<p>, the price of not bugging visitors with ads has doubled, you're feedback and comments are less important, as are details like how the photo was taken if you're interested in photography at all. Some of the reasons that Flickr was awesome for folks who want to share their photos and develop as photographers. Heck, i can't even learn a way to say "Hello" in Kurdish unless i carefully hover over my icon.</p>
<p>That's the other thing, is it me or does this layout look <a href="https://plus.google.com/" target="_blank">oddly</a> <a href="https://www.facebook.com/jrconlin" target="_blank">familiar</a>? i know how long it takes to roll out products, but seriously, did the design teams all go to the same talk or something?</p>
<p>So, yeah, not really as impressed as i could be, sorry. i'm sure i'm in the vast majority, and not 100% on board with this whole Flat Design thing that has everyone's knickers in knots, kind of like how i wasn't awestruck by <a href="https://www.google.com/search?q=mac+aqua+u&#038;tbm=isch" target="_blank">Aqua</a> or <a href="https://www.google.com/search?q=mac+aqua+u&#038;tbm=isch" target="_blank">Aero</a> either, and heaven knows those aged well. </p>

[2 Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4654/voice-of-dissnt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Goodbye Letter</title>
		<link>http://blog.unitedheroes.net/archives/p/4648/goodbye-letter/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4648/goodbye-letter/#comments</comments>
		<pubDate>Fri, 17 May 2013 16:23:13 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cranky]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4648</guid>
		<description><![CDATA[Dear Colleagues, When i joined Company, Inc. a year ago, i signed up to work with fantastic folks who wanted to change the world. When i arrived, Company, Inc was just starting a plan to rid hunger from the third world by creating self-piloting food delivery systems to ensure against corruption. During that time i [...]]]></description>
				<content:encoded><![CDATA[<div class="letter">Dear Colleagues,</p>
<p>When i joined Company, Inc. a year ago, i signed up to work with fantastic folks who wanted to change the world. When i arrived, Company, Inc was just starting a plan to rid hunger from the third world by creating self-piloting food delivery systems to ensure against corruption. During that time i saw the release of several projects that i knew would bring about great things. It is with much sadness that i am writing this note to tell you that i'm leaving.</p>
<p>You see, while i appreciate that whole "change the world" thing, it's a lot of work. It means being personally invested in actually seeing things through. That means that i have to battle not only outside the safe company walls to get folks to see the value of what i'm doing, but internally to convince others why they need to stay on track. Fighting battles are like, well, fighting battles, and there's a reason that people don't do that sort of thing on weekends or on vacations.</p>
<p>What really made the difference for me was when that truckload of money appeared in my driveway. Mind you, that was one of the "great things" that i was talking about earlier. Company, Inc. looks fan-fucking-tastic on resumes and let me tell you, launching the WidgetTron 3000 tripled the number of recruiting emails i got. </p>
<p>Sure, i could have fought to make sure that the WidgetTron 3000 we launched this quarter actually did allow near universal document parsing like it was originally intended, but once we moved it to the cloud and added Facebook Integration and weather updates, well, you know how hard it can be to stop linking paperclips together? Yeah, adding features can be like that. As a bonus, i managed to grow my tiny empire from just myself to a team of over 200. The WidgetTron consumed nearly every available resource in the company. Most folks working on the project had little idea what the actual use case of the product was ("use cases will come later" Ha-ha!) or that the key component was the burning eye of evil we hitched up in a remote colo. It's really amazing the sorts of things you can get developers to do if you lure them with "sexy" technologies like node.js and mongo.</p>
<p>Oh sure, WidgetTron 3000 is powered by puppy souls and i still resoundingly dispute those CDC reports about it causing the undead to walk among us, but the good news is that it has a skeleton staff (in this case, literally) and will be forgotten about in a quarter or two.</p>
<p>So, truly, it is with sadness that i write this contractually required goodbye as i leave you all to deal with the Class 1 superfund mess i leave behind. i'm off to live a life that makes Scrooge McDuck look like a skid-row bum. </p>
<p>If you'd like to stay in touch, my email is<br />
IWillNeverReadThis@yahoo.com</p>
<p>Best of luck in the future!</p>
<p>(suckers)
</p></div>
<div class="update">No, i'm not leaving my current employer, nor do i have any intention of doing so. Just being snarky about the various "farewell" emails i've read everywhere i worked.</div>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4648/goodbye-letter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Many Sockets does AWS Support Anyway?</title>
		<link>http://blog.unitedheroes.net/archives/p/4633/how-many-sockets-does-aws-support-anyway/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4633/how-many-sockets-does-aws-support-anyway/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 20:15:33 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4633</guid>
		<description><![CDATA[i'm working on a project that will require Websockets. Actually, it'll require quite a few of them. i suspect that, by the time i'm done, i may need to have servers holding open 400,000,000 of the little darlings, with about 20% churn as connections are dropped and reopened. Since The Cloud doesn't really exist for [...]]]></description>
				<content:encoded><![CDATA[<style>table.data {background-color:#ccc;position:relative:left:20%} table.data td {background-color:#fff}</style>
<p>i'm working on a project that will require <a href="http://www.websocket.org/" target="_blank">Websockets</a>. Actually, it'll require quite a few of them. i suspect that, by the time i'm done, i may need to have servers holding open 400,000,000 of the little darlings, with about 20% churn as connections are dropped and reopened. Since <i>The Cloud</i> doesn't really exist for me (this will probably be a ranty follow up post, but let's just say that i'm working at the level that most folks call "<i>The Cloud</i>", so i have to actually make stuff work), i need to figure out how to make this happen.</p>
<p>Somewhat surprisingly, there's very little information online about this. It could be that the folks that have figured this out have decided that it's proprietary information that they can use for whatever makes them happy, but since i don't have that problem, i'm going to happily post what i've found out here.</p>
<p>By the way, i would be thrilled if someone were to point out my plate ignorance and provide a set of test numbers and profiles that correct whatever errors i've made. i'm publishing this because i couldn't find anything like this, not because i consider it definitive. </p>
<p><b>Knowing what you know</b><br />
i'll note that a fair bit of this was done with the able assistance of <a href="https://github.com/rtilder" target="_blank">Ryan Tilder</a>. One of the problems was determining what to use to actually test things out. There are a lot of technologies out there that promise a good deal, but as i learned at the previous employer, promises are nothing against real numbers. Node.js and Python Tornado both promise that they hold open a phenomenal number of sockets, and a quick mock program in each showed that they were reporting lots of socket connections. The problem was that when we did a <a href="http://linux.die.net/man/8/netstat" target="_blank">netstat</a>, we didn't see anywhere near the same number of active sockets open. We're not 100% sure why this was, but they were both fairly quickly eliminated from testing.</p>
<p>Eventually we settled on two candidate applications. For the socket client app, we picked Go, which not only reported back the same number of active sockets as netstat did, but also kept a fairly large number of sockets open at any time. The other candidate server was a simple <a href="http://netty.io/" target="_blank">Java/Netty</a> demo application. This also just echoed back whatever was tossed at it.</p>
<p>For test instances we picked an <a href="http://aws.amazon.com/ec2/instance-types/" target="_blank">AWS Small, Medium and Large</a> as servers. For clients we spun up a number of Smalls. (We very specifically did not pick Micros because they are the instance time most subject to external effect. Such as, say, being a micro on one of the boxes when we were doing a test.) </p>
<p>We applied the following tweaks to the boxes to try and boost the available number of handles:</p>
<p><code><br />
echo "<br />
## Increase the file handle space<br />
# Increase the ipv4 port range:<br />
sysctl -w net.ipv4.ip_local_port_range = 1024 65535<br />
# General gigabit tuning:<br />
net.core.rmem_max = 16777216<br />
net.core.wmem_max = 16777216<br />
net.ipv4.tcp_rmem = 4096 87380 16777216<br />
net.ipv4.tcp_wmem = 4096 65536 16777216<br />
net.ipv4.tcp_syncookies = 1<br />
#<br />
# This gives the kernel more memory for tcp which you need with many (100k+) open socket connections<br />
net.ipv4.tcp_mem=50576   64768   98152<br />
net.core.netdev_max_backlog=2500<br />
" >> /etc/sysctl.conf<br />
# AWS sets the ulimit to "unlimited". This is optional:<br />
# ulimit -n 999999<br />
# modify /etc/security/limits.conf<br />
echo "<br />
* soft nofile 50000<br />
* hard nofile 50000<br />
" >> /etc/security/limits.conf<br />
# modified /etc/sshd.conf<br />
echo "<br />
UsePrivilegeSeparation no<br />
" >> /etc/sshd/sshd_config<br />
</code></p>
<p>i then built a very simple <a href="https://github.com/jrconlin/go_pound" target="_blank">Go based "pounder"</a> that opens up sockets on whatever server you want, and then sends data across the port every specified period. For the servers, we either ran a netty demo server, or the craptastic "srv.go" in go_pound that just echoed back what it got. We don't really care about it doing much more than writing and clearing the socket data. We wanted it to do more than "just exist" since the actual program will also be doing more than that. </p>
<p><b>Knowing what you don't know</b></p>
<p>You'll also note that we're not going through the ELB at this point. We were trying to reduce the number of potential variables, although i will note that for websockets, you have to use "TCP" as the protocol, not HTTP. ELB aggressively terminates HTTP socket connections. </p>
<p>We also knew that since sockets are effectively file handles, we wanted to eliminate as many open files or extra connections we could. i won't go into details about what we did, but basically we got things to under 100 active file connections which we felt was a reasonable number of system level handles.</p>
<p>We did encounter some unusual things. One being that smalls are VERY UNHAPPY when you use more than about 24K sockets. (24,500 is kind of pushing things.) At that number, SSH becomes fairly unstable and you may have to reboot the box externally. This may be an issue with how we set net.ipv4.tcp_[rw]mem and how AWS actually provisions memory. i'll admit that the high number i picked there was a bit aggressive and potentially optimistic, but since we were creating fairly specialized boxes and were hitting max, i'm not really concerned. If you're planning on sticking to smalls, you may want to do a tad more homework and pick a more appropriate number.</p>
<p><b>Knowing what you didn't know</b><br />
So&#8230; the numbers.</p>
<p>Well, here's what we saw (all numbers rounded down)</p>
<table class="data">
<tr>
<th></th>
<th colspan=3>Instance Size</th>
</tr>
<tr>
</tr>
<tr>
<th></th>
<th>small</th>
<th>medium</th>
<th>large</th>
</tr>
<tr>
<th>Go</th>
<td>24K</td>
<td>120K<sup>1</sup></td>
<td>200K<sup>2</sup></td>
</tr>
<tr>
<th>Netty<sup>3</sup></th>
<td>24K</td>
<td>190K</td>
<td>200K</td>
</tr>
</table>
<div class="update">These were the mean results from multiple runs. The small pounders showed the most variance, while the larges were more stable. We were trying to determine a rough baseline and not an accurate survey.</div>
<p><b><i>Notes</i></b><br />
<sup>1</sup>Go topped out at 120K when being pounded by requests every 8s. When we increased this number to 20s, it was able to handle the load. >20s between transactions is a more realistic number for our project, but i like being aggressive for testing like this.<br />
<sup>2</sup>Larges also seemed to top out at just over 200K connections. Again, this may be something related to the tcp_mem setting. We may need to do additional testing on this.<br />
<sup>3</sup>Netty was able to handle both 8s and 20s transaction, with CPU being the more limiting factor.</p>
<p><b>Not Knowing the Unknowns</b><br />
Is this a complete win for Netty? Possibly. There are a few other factors that i'll have to consider before switching over to just that (logging, operational and developmental familiarity, etc.) Likewise, running enough "larges" to handle the problem may solve the issue to the extend that building out the Java server isn't cost effective. </p>
<p>One thing Ryan points out is that when you start dealing with Very Large numbers of concurrent connections, you start to seriously tax your CPUs. If you have a lot of very active channels, that tax goes up a great deal more. It may make sense to opt for CPU friendly configurations, more so than memory heavy ones. i'll try to remember to post up what sort of configurations we found work best for us if we stay with AWS as a solution.</p>
<p>Still, these are the numbers that we came up with. Hopefully, they'll be reasonably useful to you.</p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4633/how-many-sockets-does-aws-support-anyway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Quick Updated Refresher</title>
		<link>http://blog.unitedheroes.net/archives/p/4625/a-quick-updated-refresher/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4625/a-quick-updated-refresher/#comments</comments>
		<pubDate>Fri, 22 Mar 2013 23:07:31 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cranky]]></category>
		<category><![CDATA[crap]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4625</guid>
		<description><![CDATA[i wrote A Quick Refresher seven years ago, and i think it needs a bit of correction: Please note: The following rules need not only apply to the internet. Don't be an asshole. An asshole is someone who thinks of themselves first, and without consideration of anything else. An evil bastard is someone who actively [...]]]></description>
				<content:encoded><![CDATA[<style>.fix {color:red;}</style>
<p>i wrote <a href="http://blog.unitedheroes.net/archives/p/1782/a-quick-refresher/" target="_blank">A Quick Refresher</a> seven years ago, and i think it needs a bit of correction:</p>
<p>Please note:</p>
<p>The following rules need not only apply to the internet.</p>
<ol>
<li>Don't be an asshole.
<ol type=a>
<li class="fix">An asshole is someone who thinks of themselves first, and without consideration of anything else.
</li>
<li class="fix">An evil bastard is someone who actively seeks not only to be an asshole, but to inflict pain and suffering on others.
</li>
<li>Nobody likes an asshole, <span class="fix">and everyone hates evil bastards</span>.</li>
<li class="fix">Assholes should be ignored or treated like infants (at best). Evil bastards should be opposed.</li>
</ol>
</li>
<li>If you do something nice (like link to someone else's page, hold the door open, upvote a post), never expect to see the favor returned.</li>
<li>People who ask/plead/demand your generosity, should be avoided. Their actions should be enough to warrant your contributions.</li>
<li><span class="fix">It is possible that someone else may share your opinion. This neither validates that opinion nor implies that they agree with you in all other aspects.</span>
<ol type=a>
<li>Your point of view is only valid because you have no idea what the person <span class="fix">who opposes your view</span> has experienced.</li>
<li>Their point of view is equally valid, unless, of course, they're just being an asshole or evil bastard.</li>
<li class="fix">Correcting a person to their face is always better than scolding in public. Doing the latter without trying the former makes you someone who is intentionally inflicting harm on someone else so that you look better. (See "evil bastard")</li>
<li>Tragedy and comedy are both sides of the same coin. This is why folks find slapstick funny. i'll come over and help you back up, but don't be offended if i'm giggling.</li>
<li span="fix">If i do something stupid, i'm ok with you laughing while you help.</li>
</ol>
</li>
<li>Always presume the worst until pleasantly suprised otherwise.</li>
<li>Nobody actually rolls on the floor, laughing out loud.</li>
<li>Most of the stuff you see is done by a lot less folks than you think.
<ol type=a>
<li>Stuff breaks.</li>
<li>When it breaks, they want to fix it</li>
<li>It may take them a while to fix it because of other things that are even more broken that you don't know about</li>
<li>It's not that they don't like you, it's just that it's hard for five people to respond to several million messages a day.</li>
</ol>
</li>
<li>There are people smarter than you.</li>
<li>There are people dumber than you.</li>
<li>On an average day, half of the people you meet will be in each category.</li>
<li>Nobody expects courtesy, it confuses them. Use it with abandon just to catch them off-guard.</li>
<li>The best reason to be nice is that it means the person is less likely to screw you over.
<ol type=i>
<li>Not that there's any reason for them not to try anyway.</li>
</ol>
</li>
<li>Friendship and trust must be earned every day.</li>
<li>Be open about what you accept, but strict about what you provide.</li>
<li>Good and Evil are relative ideas and need context. </li>
<li>Never agree to someone's protocol/ideology without really understanding what that protocol/ideology is.</li>
<li>Always understand that every protocol/ideology is subject to corruption. If you can't get it from the <span class="fix">original</span> source, it's probably invalid.</li>
<li>Read the documentation.</li>
<li>Never blame the user for a failure of the protocol. Simply report the error as clearly as you can and move on.</li>
<li>Errors are errors and no amout of argument will change them. Work around them if you need to get something done or consider using another system.</li>
</ol>
<p>Thank you, please pull ahead to the second window, and have a nice day.</p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4625/a-quick-updated-refresher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fáilte Dining</title>
		<link>http://blog.unitedheroes.net/archives/p/4622/failte-dining/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4622/failte-dining/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 03:35:08 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cooking]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4622</guid>
		<description><![CDATA[Ah St. Paddy's Day. A day when everyone is a bit Irish and tuck into a taste of the Emerald Isle. Well, no, not really. No sane, sober person would, but let me explain a little about why i tend to enjoy Pasta or Thai instead of Corned Beef and Cabbage. First off, let me [...]]]></description>
				<content:encoded><![CDATA[<p>Ah St. Paddy's Day. A day when everyone is a bit Irish and tuck into a taste of the Emerald Isle.</p>
<p>Well, no, not really. No sane, sober person would, but let me explain a little about why i tend to enjoy Pasta or Thai instead of Corned Beef and Cabbage.</p>
<p>First off, let me introduce you to <a href="http://www.flickr.com/photos/jrconlin/8566620941/in/photostream" target="_blank">my Grandfather</a>. That's him, tending the bar that he ran for a few years in Brooklyn. Sadly, the pub he ran closed, partly due to his tendency to be more generous than business savvy, but that did have one interesting side-note.</p>
<p>Far more often than my Grandmother appreciated, he'd come home with someone he'd met while at the pub. His arms would be filled with unusual ingredients and he'd usher his wife from the kitchen and away from the shortbreads and creamed tripe stew, and soon the apartment was filled with exotic scents and tastes from strange and wondrous lands, like Germany or Italy. My sainted Grandmother generally hated whenever he did this, but my Mom and her siblings didn't. </p>
<p>Irish cooking tends to "use everything but the grunt", and <a href="http://www.dochara.com/the-irish/food-recipes/traditional-foods-of-ireland/" target="_blank">they pretty much mean it</a>. Traditional Irish country food tends to use a, frankly, terrifying amount of pork, cabbage and potatoes, most of it boiled in pots above peat fires. One need remember that it was the loss of the Potato that pretty much devastated the country and lead to massive starvation. This was not a country with a wide and varied diet. Special occasions might include a bit of roasted lamb, but that tended to (literally) eat into the export business.</p>
<p>This might also explain why folks drank, but only a wee bit.</p>
<p>Mind you, modern Irish cuisine is a helluva lot better now and has even included things like fish and beef. i'll also note that Irish have taken to, ahem, "embracing the foods of other cultures" with a surprising enthusiasm to those not familiar with traditional fare. </p>
<p>So, aye, i'll not be partaking of the bacon knot and cabbage this year (or the next), and i prefer my corned beef peppered and sliced thin from the deli counter. i'm not exactly sure how many shepherds kept meat grinders in the dairy, either. </p>
<p>Still, raise a glass and a toast. To my ancestors from Roscommon, <i>Tabhair dom ar ais ar mo dhia damanta caorach, bastaird tú!</i></p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4622/failte-dining/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Off My LAN</title>
		<link>http://blog.unitedheroes.net/archives/p/4614/get-off-my-lan/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4614/get-off-my-lan/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 18:01:19 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cranky]]></category>
		<category><![CDATA[crap]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4614</guid>
		<description><![CDATA[i'll admit it, i've been having an increasing number of "Get Off MY LAN" moments. i suppose you could also declare these as "Old Man Shouts at iCloud" stories as well. As i get older (and one supposes, progressively more jaded), i've been increasingly frustrated by just how often folks build things that they haven't [...]]]></description>
				<content:encoded><![CDATA[<p>i'll admit it, i've been having an increasing number of "Get Off MY LAN" moments.</p>
<p>i suppose you could also declare these as "Old Man Shouts at iCloud" stories as well. </p>
<p>As i get older (and one supposes, progressively more jaded), i've been increasingly frustrated by just how often folks build things that they haven't really thought out. Mind you, twenty years ago, when we were first building this crap, you'd be excused for not knowing that there's little difference between "Success" and "DDoS Attack" or that cracking SHA1 would be a simple matter of harnessing the power of an internal graphics processing unit, but you can't really say that anymore.</p>
<p>Technology, at least in theory, is supposed to build off of itself. We're supposed to be at that stage of the game where we've determined reasonable, objective facts about how to create and provide services. There will always be new tools introduced, but fundamentally the principles of data exchange and processing should really be kind of A Thing&trade; by now. </p>
<p>There are supposed to be a few Golden Rules that all engineers follow (or at least know of):</p>
<ol>
<li><b>Be lenient about what you accept, strict about what you create.</b><br />
Other people will screw up, try to work with what you've got so that things continue to work reasonably well. File bugs against the crappy providers, but don't reject them unless it's total jibberish. That said, only output stuff in strict, predictable form that adheres to published standards so that everyone else isn't trying to accommodate you.</li>
<li> <b>Play with the new, work with the old.</b><br />
Play and explore new technology. Revel in discovery and insight, but when it comes time to provide a service for more than a few hundred people, build it using boring, well tested, reliable tools and technologies. If the new stuff is good, eventually it too will become boring, well tested and reliable. Every project should dream of becoming "useful, but not hip" because that means you're now key to infrastructure.</li>
<li><b>Bad guys have infinite time and infinite resources</b><br />
If there's a flaw in your code, bad guys will find and exploit it. Protect your systems from yourself. If you can break it, even with some attack that is so remote that "nobody will ever do that", someone else will do that attack.</li>
<li><b>Don't fall in love with your code</b><br />
You may have come up with a good solution. Someone else may have come up with a better one. Always be willing to admit that someone else's answer may be better than yours (again, metrics beat statements), and be ready to move to it. <br />
<i>Yes, i added this one after i wrote the original.</i></li>
<li><b>There is no One True Tech</b><br />
No technology is perfect and all applicable. Everything sucks for some reason. Only a fool uses one tool to solve all problems. The first question any maker of hammers should ask is, "Do i need a screwdriver?"</li>
<li><b>Open is better than closed</b><br />
Being open is like growing dozens or millions of extra brains. Suddenly, it's not just you or a few folks working on a problem, it's lots and lots of folks, constantly working on a problem. Of course, the Achilles Heel of any open project is getting someone else to care about it, but that's where the rest of the rules come into play.</li>
<li><b>Write your documentation for five year olds</b><br />
There are people smarter than you. They have different areas of expertise and interest than you do. Not everyone has spent the past decade focused on AES encryption wrapper math, phoneme pattern analysis, or efficient regular expression syntax. By all means, encourage folks to explore the wonders of elliptical compression algorithms, but understand that the reason they are looking at your library/code/application is because it's a small part of the larger problem they're trying to solve. Spending hours to learn interesting tricks in 64bit binomial storage so that they know to call your function with a proper set of prime Fibonacci numbers isn't going to make them love you.</li>
<li><b>Teaching makes you smarter</b><br />
You only really understand something when you can explain it to someone else. This ensures that you understand not only one aspect, but the various effects and inputs so that you can answer their questions. Teaching someone else will make you say "i don't know" a surprising number of times.</li>
<li><b>You are not alone</b><br />
This is a big one. If you're pounding on a problem, chance are, so is someone else. Or they've worked a problem similar to yours in some fashion. Ask and answer questions. Share knowledge and findings. Humans are capable of sharing information and that's what made us more successful than Bonobos. Use and contribute to that advantage every chance you can.
</li>
</ol>
<p>And, yet, every goddamn day, i see folks gleefully ignore those rules. So i wind up posting cranky notes, laughing at other people's completely avoidable failures, and otherwise turning into an angry old coot standing on his digital porch yelling at the kids these days.</p>
<p>Honestly, this is why the jocks and douchebags became Brogrammers who write crappy code. There's nothing preventing them from doing it and no tools for pointing out the obvious flaws.</p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4614/get-off-my-lan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are Humans Reading It?</title>
		<link>http://blog.unitedheroes.net/archives/p/4604/are-humans-reading-it/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4604/are-humans-reading-it/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 18:40:03 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[cranky]]></category>
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4604</guid>
		<description><![CDATA[i'll admit it. i fell for the allure as well, but ultimately, most of the Human Readable Protocol concepts are stupid. Allow me to explain. Say, you've got two computers that want to talk to each other (chances are very good that this is the case). You have infinite ways that they can go about [...]]]></description>
				<content:encoded><![CDATA[<p>i'll admit it. i fell for the allure as well, but ultimately, most of the Human Readable Protocol concepts are stupid.</p>
<p>Allow me to explain. Say, you've got two computers that want to talk to each other (chances are very good that this is the case). You have infinite ways that they can go about doing this, but a rather attractive way is to have something that you can read. </p>
<p>so instead of getting something like <span class="code">^A&lt;long stream of binary cruft&gt;^D</span> you get something more like:<br />
<code>HELO<br />
FROM potamus.p@example.com<br />
TO birdman.h@bar.com <birdman , Harvey><br />
SUBJ That thing i sent you<br />
&nbsp;<br />
Did you get that thing i sent you?<br />
&nbsp;<br />
.</birdman></code><br />
It's nice and readable, with the added benefit that if you're ever stuck somewhere without a mail client, you can telnet to port 25 and send out an email. Provided you remember the order of the steps. And get the format of the lines right (pretty sure i didn't just now). And don't make spelling mistakes, etc&#8230;</p>
<p>There are lots of protocols that have Human Readable Formats. FTP, SMTP (e-mail), HTTP (web), etc. Some of these make sense, particularly if they're for short, on then off right away sorts of things. The problem is that if you want to do something really complicated, there's a lot of work trying to figure out what "HELO\r\n" means, vs. two characters. It becomes even more of an issue when you're talking about small devices that pay per KB (Hi there mobile devices!)</p>
<p>That's when looking at something like<br />
<code>&lt;message to="alice@wonderland.lit" id="if00lu" ><br />
  &lt;body>Hi you&lt;/body><br />
  &lt;body xml:lang="cy">Prynhawn da&lt;/body><br />
  &lt;nick xmlns="http://jabber.org/protocol/nick">Alice&lt;/nick><br />
  &lt;active xmlns="http://jabber.org/protocol/chatstates"/><br />
&lt;/message><br />
</code><br />
becomes absolutely terrifying. (really, i need to fully specify the namespace of a nick with a URL that doesn't resolve just so that the consumer knows what i mean?) </p>
<p>It's at this point that i cry out that anyone that proposes such a protocol is forbidden from using a client in order to use it. </p>
<p>There's a good reason that TCP is not human readable. It's never meant to be displayed directly to humans. Likewise, things like Finger and HTTP <b><i>are</i></b> meant to be displayed to humans. Yeah, yeah, you're probably not going to understand the stream of crap that adds up to a JPG image or movie, and depending on how aggressively a server compresses outbound data or collects additional content you might have issues figuring out what it all says, but a minimal HTML page is:<br />
<code>&lt;html><br />
   &lt;head><br />
     &lt;title>This is a page&lt;/title><br />
   &lt;/head><br />
   &lt;body><br />
      No, really, this is valid HTML and will render just fine.<br />
   &lt;/body><br />
 &lt;/html><br />
</code></p>
<p>If you didn't have a browser you could just enter the command:<br />
<span class="code"> wget http://jrconlin.com/simple.html </span></p>
<p>and be able to mostly read what you got back. </p>
<p>Granted, most folks (as in > 99.999% folks) don't do that, and thus we have things like <a href="http://www.chromium.org/spdy/spdy-whitepaper" target="_blank">SPDY</a>, which is optimized for Machines and is generally faster.</p>
<p>Really, the question becomes, how realistic is it that J. Random User is going to get a screen full of raw protocol they have to act on? If the answer is "Not often", do you really need to have it be "human readable", or can you <a href="http://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html" target="_blank">just build</a> a <a href="http://wireshark.org" target="_blank">tool</a> for the less than 1% of developers and systems folks that need to see what's going on?</p>

[2 Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4604/are-humans-reading-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RepScore</title>
		<link>http://blog.unitedheroes.net/archives/p/4600/repscore/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4600/repscore/#comments</comments>
		<pubDate>Sat, 02 Feb 2013 23:35:38 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[crap]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4600</guid>
		<description><![CDATA[Do you know your RepScore? i'm on fairly good terms with my Real Estate agent. He's smart, has a great contact list and unlike a lot of folks in his profession (sadly), he is a professional. That means that he thinks about this as a career, not a means to an end. i got a [...]]]></description>
				<content:encoded><![CDATA[<p>Do you know your RepScore?</p>
<p>i'm on fairly good terms with <a href="http://www.homesofsiliconvalley.com/" target="_blank">my Real Estate agent</a>. He's smart, has a great contact list and unlike a lot of folks in his profession (sadly), he is a professional. That means that he thinks about this as a career, not a means to an end. i got a chance to talk with him today and we both keyed on a rather interesting point.</p>
<p>i'd been thinking about how there's a weird diminishing return on my reviews of places, while a lot of folks are (frankly) <a href="http://reviewercard.com/" target="_blank">abusing things to get unwarranted favorable treatments</a>. </p>
<p>He noted that with sites like AirB&#038;B, it's not only important for you to look at the reviews for where you're staying, but for the folks that are opening their home to you <a href="http://techcrunch.com/2011/07/27/the-moment-of-truth-for-airbnb-as-users-home-is-utterly-trashed/" target="_blank">to know about your history as well</a>. That's when it hit me that i can easily see a future where you have a Reputation Score to maintain, kind of like you have a Credit Score now. </p>
<p>Better people have better scores, and worse ones have worse scores. The score could be generated from things like review feedback, vendor responses and other aspects of life like the way you drive. Yes, <a href="http://www.reputation.com/" target="_blank">there will be ways to "game" the system</a>, as well as <a href="http://www.slashgeek.net/2012/06/15/how-to-be-completely-anonymous-online/" target="_blank">ways to avoid it</a>, just like there are ways to game and avoid your credit score. Want to be <a href="http://www.penny-arcade.com/comic/2004/03/19" target="_blank">a F*ckwad</a>? Be anonymous, but understand that if you're a raging F*ckwad, folks might take the extra effort to tie it back to you. Kind of like how a criminal record will effect your credit rating.</p>
<p>Being a privacy wonk, i'm on the fence about this. Sure, i'd prefer if this sort of thing didn't come to pass, but i'd be a moron if i didn't think we weren't on the road to it happening. On the other hand, if this information was accessible, standardized and there was an effective challenge channel in place, it would make these sort of personal tracking that's already being done more transparent to you.</p>
<p>Heh, i have seen the Big Brother, and He is Us. </p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4600/repscore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Being John Whatsisname</title>
		<link>http://blog.unitedheroes.net/archives/p/4588/being-john-whatsisname/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4588/being-john-whatsisname/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 21:28:56 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4588</guid>
		<description><![CDATA[Hey! Oh, Hi! How are you doing? Crap, i can't remember this guy's name. i haven't seen him in over a month and i swear my brain keeps info for less time that an Air Traffic controller at O'Hare. Think, think, who the hell is this again? Good seeing you. i was down in the [...]]]></description>
				<content:encoded><![CDATA[<style> i.think {color: #AAA;}</style>
<p class="v2">Hey!</p>
<p class="v1">Oh, Hi! How are you doing?</p>
<p><i class="think">Crap, i can't remember this guy's name. i haven't seen him in over a month and i swear my brain keeps info for less time that an Air Traffic controller at O'Hare. Think, think, who the hell is this again?</i></p>
<p class="v2">Good seeing you. i was down in the area again and was just walking around.</p>
<p><i class="think">Dammit, ok, so he's a remotie. Perfect. That means that i may have only actually met him twice in my life. Well, go for the general small talk route, i guess.</i></p>
<p><i class="think">Wait, he's talking to the guy that wrote Javascript. Ok, this is someone more important. Wait, they're talking about FuncLib? Oh Holy Hell, He is important and there are things i need to talk to him about. But he's smart, like REALLY smart. Like the kind of person who can probably focus their mind enough to fry ants with theoretical physics or something. Think, you stupid simian, what's this guy's name!?!</i></p>
<p class="v1">Wait, so the FuncLib stuff is all solid and working? That's awesome. You've been working on that for years!</p>
<p class="v2">Yep, really happy about it. Got a few smaller issues to deal with, but otherwise it's great. Want to see a demo?</p>
<p class="v1">Of course i do! Wow, this is fantastic, have you heard about some of the stuff that the XYZ team is working on that could really use this?</p>
<p>
<i class="think">Wow, this <b>IS</b> awesome. The XYZ team would cream themselves to have this. So would Ryan. Ok, so now we know what he's been working on. Neato! There's only a few names tied to that project. </p>
<p>&#8230; If i could only remember any of them&#8230;</p>
<p>&#8230; i'm an idiot.</i>
</p>
<p class="v1">i'd love to help out, but there's another guy named Ryan who would be better suited to pitch in.</p>
<p class="v2">Fantastic! i'd love the help. Send me an email with his contact info.</p>
<p><i class="think">Shit</i></p>
<p class="v2">Great talking with you as always. i've got to get to a meeting, but we'll catch up, right!</p>
<p class="v1">You bet. i'll send out that email as soon as i can&#8230;</p>
<p><i class="think">&#8230;get into the company phone book and remember your name. Please don't fry me with your massive focused intellect. i can feel my schoolbus losing seats. Bob? John? Mike? Think you sponge, think.</i></p>
<p><i class="think">Oh yeah, and that other guy you work with that has a bunch of monogrammed shirts? Thank him the next time you see him.</i></p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4588/being-john-whatsisname/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keeping an Eye On Things</title>
		<link>http://blog.unitedheroes.net/archives/p/4548/keeping-an-eye-on-things/</link>
		<comments>http://blog.unitedheroes.net/archives/p/4548/keeping-an-eye-on-things/#comments</comments>
		<pubDate>Sun, 16 Dec 2012 00:52:41 +0000</pubDate>
		<dc:creator>jrconlin</dc:creator>
				<category><![CDATA[crap]]></category>

		<guid isPermaLink="false">http://blog.unitedheroes.net/?p=4548</guid>
		<description><![CDATA[So, in the midst of being a paranoid little geek, i've been mucking about with the idea of setting up some cameras around my house. Fortunately, that's something that's become a tad more affordable as of late. Mostly thanks to the fact that folks insist on getting the latest generation of electronic gizmo and orphan [...]]]></description>
				<content:encoded><![CDATA[<p>So, in the midst of being a paranoid little geek, i've been mucking about with the idea of setting up some cameras around my house. Fortunately, that's something that's become a tad more affordable as of late. Mostly thanks to the fact that folks insist on getting the latest generation of electronic gizmo and orphan the old one. </p>
<p>This is interesting because many of those said gizmos have wifi and cameras built in. In addition, you can get real wireless cameras for a lot less than you could a few years ago, so there's that.</p>
<p>Here's how i set up my configuration (or at least the bits that are interesting):</p>
<p>What you'll need:<br />
N Wireless<br />
a Linux server with a fair bit of space on it (Pics and videos take space)<br />
IP cameras.</p>
<p><strong>1) The pre-install.</strong><br />
Technically, N wireless does 300Mbps per channel, with bursting up to 450Mpbs. A lot of devices top at 100Mbps. i'd recommend getting <a href="https://www.amazon.com/dp/B0058NN6CS/ref=as_li_ss_til?tag=unitedheroesn-20&#038;camp=0&#038;creative=0&#038;linkCode=as4&#038;creativeASIN=B0058NN6CS&#038;adid=0JXGY4PA1K0J6ZYQD179&#038;" target="_blank">a dual band router</a> and keep the devices on the broader 2.4Ghz channel.</p>
<p>The linux box is also kinda key. It doesn't have to be spectacular (i run a dual core franken-box i built about 7 years ago), and has <a href="http://www.ubuntu.com/download/server" target="_blank">Ubuntu server</a> loaded on it. It runs headless, so there's no need for anything fancy. </p>
<p><strong>2) The real webcameras</strong><br />
i picked up some <a href="https://www.amazon.com/dp/B006ZPWS4U/ref=as_li_ss_til?tag=unitedheroesn-20&#038;camp=0&#038;creative=0&#038;linkCode=as4&#038;creativeASIN=B006ZPWS4U&#038;adid=166EH8GXDB1A6C5XK1N0&#038;" target="_blank">FOSCAMs</a> that were on sale on Amazon. These are nice little cameras that have built-in wifi, as well as remote movement controls. They also have the ability to do motion detection and have a pretty powerful set of IR lights. They're not without a few problems, though.</p>
<p>For one thing, getting the camera on the network. The easiest way to do that is to plug it into the router, find the IP in the attached device list and then http to that. Once you're there you can set the network, IP address, port, and all the other settings you'll need. Fortunately, once they're configured, they're pretty autonomous.</p>
<p>Another issue is that they reboot every so often. When they do, they turn on the IR lights. The problem with that is IR reflects amazingly well off of glass which blinds the camera. Sadly, there's no way have the camera remember to not turn those on, but you can use a remote command to force the IR off.<br />
<code><br />
/usr/bin/curl -n --silent http://$CAMERA_ADDR/decoder_control.cgi?command=94 > /dev/null<br />
</code></p>
<p>i have a crontab entry that sends that command every so often to make sure the damn lights stay off.<br />
<strong><br />
3) The more disposable webcams</strong><br />
Like i said, depending on where you are and how tech savvy your community happens to be, you can get things like first generation ipod touches for as low as $1. Old Android phones can also be had for darn cheap, so it can be fairly easy to load up just by visiting craigslist. Once you have your handfuls of junk cameras, you can then load them with <a href="http://itunes.apple.com/us/app/ipcam-mobile-ip-camera/id440270152?mt=8" target="_blank">ipCam for iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.pas.webcam&#038;hl=en" target="_blank">IPWebcam for Android</a>. Both of these apps let you route the camera to the local LAN, and that's a delightful thing, as we'll discover in a second.<br />
<strong><br />
4) Setting things in Motion</strong><br />
Now comes the fun bit&#8230;</p>
<p>On the linux box, grab a copy of <a href="http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome" target="_blank">motion</a>. Motion will pull the cameras for images and do some quick analytics to detect motion. It will also capture snapshots and compile a stream of activity for the day. </p>
<p>Be sure to point motion at a directory with "ample space". In my case, i record about 2GB of data for 4 days. i have a script that goes through the directories and purges files older than that, but that's me. Granted, in an era of sub $100 2 TB drives, this is probably being overly aggressive. Here's the cleanup code:<br />
<code class="collapse">#!/bin/sh<br />
/usr/bin/find /d2/media/ipcam -type f -ctime +2 -delete<br />
for i in `ls -1` ; do<br />
    /usr/bin/find /d2/media/ipcam/$i/jpg -type d -empty -delete<br />
    /usr/bin/find /d2/media/ipcam/$i/swf -type d -empty -delete<br />
done;<br />
</code></p>
<p>And for those that are interested, my motion.conf file is below. i've trimmed out the comments and blank lines, but this shows the values.<br />
<code class="collapse">process_id_file /var/run/motion/motion.pid<br />
setup_mode off<br />
videodevice /dev/video0<br />
v4l2_palette 8<br />
input 8<br />
norm 0<br />
frequency 0<br />
rotate 0<br />
width 320<br />
height 240<br />
framerate 2<br />
minimum_frame_time .5<br />
netcam_tolerant_check off<br />
auto_brightness off<br />
brightness 0<br />
contrast 0<br />
saturation 0<br />
hue 0<br />
roundrobin_frames 1<br />
roundrobin_skip 1<br />
switchfilter off<br />
threshold 1500<br />
threshold_tune off<br />
noise_level 32<br />
noise_tune on<br />
despeckle EedDl<br />
smart_mask_speed 0<br />
lightswitch 0<br />
minimum_motion_frames 1<br />
pre_capture 0<br />
post_capture 0<br />
gap 60<br />
max_mpeg_time 0<br />
output_all off<br />
output_normal on<br />
output_motion off<br />
quality 75<br />
ppm off<br />
ffmpeg_cap_new on<br />
ffmpeg_cap_motion off<br />
ffmpeg_timelapse 0<br />
ffmpeg_timelapse_mode daily<br />
ffmpeg_bps 600000<br />
ffmpeg_variable_bitrate 0<br />
ffmpeg_video_codec swf<br />
ffmpeg_deinterlace off<br />
snapshot_interval 0<br />
text_right %Y-%m-%d\n%T-%q<br />
text_changes off<br />
text_event %Y%m%d%H%M%S<br />
text_double off<br />
target_dir /tmp/motion<br />
webcam_quality 70<br />
webcam_motion off<br />
webcam_maxrate 1<br />
webcam_localhost off<br />
webcam_limit 0<br />
control_port 8080<br />
control_localhost off<br />
control_html_output on<br />
track_type 0<br />
track_auto off<br />
track_motorx 0<br />
track_motory 0<br />
track_maxx 0<br />
track_maxy 0<br />
track_iomojo_id 0<br />
track_step_angle_x 10<br />
track_step_angle_y 10<br />
track_move_wait 10<br />
track_speed 255<br />
track_stepsize 40<br />
quiet on<br />
thread /etc/motion/lr.conf<br />
thread ...<br />
</code><br />
And the main camera config (remember, this replaces the values from motion.conf)<br />
<code class="collapse">lightswitch 0<br />
pre_capture 3<br />
width 640<br />
height 480<br />
target_dir /d2/media/ipcam/lr<br />
snapshot_filename jpg/%Y%m%d/s-%H%M%S-%q<br />
jpeg_filename jpg/%Y%m%d/%H%M%S-%q<br />
movie_filename swf/%Y%m%d/%H%M%S<br />
timelapse_filename tl/%Y%M%d<br />
ffmpeg_timelapse 5<br />
text_left LivingRoom<br />
webcam_port 8081<br />
netcam_url http://192.168.2.26/videostream.cgi?rate=11<br />
netcam_userpass ##:##<br />
netcam_http 1.1<br />
auto_brightness on<br />
text_left LivingRoom<br />
webcam_port 8081<br />
on_picture_save /home/jrconlin/bin/newPic.sh %f<br />
</code><br />
The "on_picture_save" bit stores a copy of the latest picture to my remote server. i have something else pull movies, but i could have also had motion push them just as easily. It's also possible to have motion monitor just parts of an image and fire a script when it sees activity at that position. i've thought about rigging that up for Halloween one year to scare the pants off of kids coming up the driveway.</p>
<p>That's it! Happy monitoring.</p>

[No Comments]]]></content:encoded>
			<wfw:commentRss>http://blog.unitedheroes.net/archives/p/4548/keeping-an-eye-on-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.854 seconds -->
<!-- Cached page served by WP-Cache -->
