Why Doesn’t My Car Run Android?

A lot of cars are putting a big touchscreen LCD into cars, hooked up to a mediocre GPS system. And then they integrate it into some proprietary system. Not necessary proprietary as in “icky and closed-source,” though it’s that, too. But I suspect every car manufacturer has their own interface, each reinventing the wheel, and poorly.

At my apartment, I have a weather station that shows a 7-day forecast. On my desktop, I have a weather app that shows the weather. So sometimes when I’m getting out of my car, I glance at the center console to see if I need to bring an umbrella. But every time, I’m disappointed: my car doesn’t know the weather. At all. I could pull out my iPhone and look, but by the time I’ve realized that the oversized AC button doesn’t tell me the weather, I’ve lost interest.

Or there’s the radio. Six stations and rarely a good song. When I was in Raleigh earlier this month, I rented a car with Sirius (and a terrific sound system). But with ~150 stations, I still found myself aimlessly turning the dial, rarely finding anything that was even tolerable. I have a CD player, but one CD gets old very quickly. I can play my iPod through an FM transmitter, but the signal is weak and since my MP3 player is also my cell phone, I get horrible noises through my speakers whenever my phone transmits data back to the network, so it’s not really workable. You know what I really want? Pandora. Pandora never disappoints me.

I just had to update the maps on my GPS. They were years out of date, and it was a hassle. It’d be nice if my GPS could get updates automatically, a la Google Maps. (But a Google Maps with aggressive caching.)

My clock isn’t all that precise, either. If you have a GPS signal, you have an extremely accurate clock. (The GPS satellites carry atomic clocks and transmit this data, as precision timing is fundamental to how GPS works. One microsecond of deviation from atomic time in a GPS receiver implies almost 1,000 feet of error.) And then you could apply DST shifts automatically, too.

Oh, speaking of GPS. Some higher-end models apparently include gimmicky dead reckoning to try to estimate your position if you go into a tunnel and lose reception. But it’s based on an accelerometer inside the GPS, along with a digital compass. I can’t imagine an accelerometer inside a GPS is terribly accurate, which is probably why GPS dead reckoning isn’t held to be that accurate. But you know what has exacting information on precisely how far you’ve traveled, at precisely what speed? Your car’s onboard computer. So make that data available to the GPS as well, along with a high-quality digital compass, and you ought to be able to keep a very accurate fix on your location even when losing GPS entirely.

Plus, imagine the graphs you could make!

The only downside with an open platform like Android is that you couldn’t practically keep people from installing Angry Birds on their car, which would lead to mass casualties.

Back Up

We should be back in business now, though I’m not sure for how long. The server this is hosted on seems to be having some hardware issues; I’m not sure yet whether it’s a bad disk or a bad RAID controller. (BTW, the extra cost for RAID and iLo lights-out management are suddenly well worth it!)

I’m making some backups now in case things go down again.

GPS Updates

My GPS is complaining that the maps are old. Last time it did this, I realized I got one free upgrade and that the maps were, in fact, several years old, so I took my free update. Now they’re a couple years out of date again.

So here are the options I see:

  • Illegally download the maps from BitTorrent or similar. They’re out there. But besides being illegal, this would really be a huge pain, as I’d need to juggle other programs to crack the copy-protection. Even discounting my ethics, this is just too much of a bother for me.
  • Buy the update from Garmin. Looks like it’s $49.99 and delivered online. (They also offer a download.) But my GPS is at least three years old at this point.
  • Buy a new GPS. The linked one is $130 — only $80 more than the map update for my current GPS — and has a bigger screen and free traffic, which could actually be really helpful. (Hmm… It’s almost like Garmin is steering me down this path!)
  • Buy a new smartphone. I’m going to do this soon anyway. The downside to a GPS is that, being a high-theft device, I never keep it in my car, which means I only bring it with me when I think I’m going to need it. I bring my cell phone with me whenever I leave the house. Plus GPSs have the hassle of downloading map updates as I’m going through now. Plus there’s the hassle that it doesn’t have the Internet. A new smartphone would bring turn-by-turn directions and just use Google Maps, so the only updates would be when the app itself decided to request an update, and that would be free and quick.

In conclusion, I wouldn’t buy stock in Garmin or other GPS makers. They work great right now, but I don’t see how they can compete when devices people already carry with them everywhere are starting to — without really trying — best the products they’re making.

Interviews

I was just reading this news article about a former political aide found dead in a Delaware landfill. The news is terrible, of course, but the quotes really bother me. For one, “He was just not the sort of person who would wind up in a landfill” seems to imply that there are some people who you would expect to find dead in a landfill without anyone really caring. I think I know what he meant — that he was a nice guy that got along well with everyone — but it certainly didn’t come out that way. Even if it was a heroin-dealing rapist who crossed the Mafia that was found, I’m not sure anyone would really say, “I always expected that he’d end up in a landfill.” The same guy later says, “He was a very humble kind of guy, actually…” Again, I know what he means: in spite of all the really impressive things he’s accomplished, he was very humble. But to me, the “actually” dangling on the end is akin to saying, “Believe it or not, he wasn’t a jerk!” How about ditching both sentences, and just saying, “He was such a nice guy. This is such a great shock” or something to that effect? Normally, I wouldn’t critique the quotes of a grieving relative of someone who died in a horrible manner. But see, I’m not critiquing the quotes of a grieving relative, or even a relative at all. What I’m really wondering is why the Associated Press chose to use the quotes of the lawyer representing him and his wife in a zoning dispute for the news article about his tragic death. He served during multiple Presidents’ administrations, was the first executive in Mothers Against Drunk Driving and avoid having to get Virginia DUI attorneys for hire, had a lead role in building the Vietnam Vet’s Memorial, and the best person the Associated Press can find to give a quote is “an attorney who was representing Wheeler in a dispute over a couple’s plans to build a new home”? And when he said, “He was a very humble kind of guy, actually,” the reporter didn’t think of omitting the quote or finding a better one? People can check out DUI defense lawyers based in Colorado if people get a DUI for drunk driving.

Finding the Largest Image on a Page

Here’s a challenge I’m facing right now for a little side project I’m dabbling with. Given an arbitrary webpage, return the ‘representative’ image that you would use if you were constructing a link to the page. For example, this Uncrate post should show the trailer, as it’s directly relevant. This news story should show one of the two maps used.

In some cases, we get lucky. Sites that use the Open Graph Protocol can define an og:image, and Uncrate uses which is easy to parse. So in those cases, I take those. But 95% of sites don’t do these things, so I’m left grabbing all of the nodes on the page and trying to decide which is most representative.

Here are the possible solutions I’m weighing:

  • Look at the height and width parameters, multiple, and return the largest, which is presumably the ‘main’ image. This is what I’m doing now. It turns out that the images used in blog posts and such — the things I want to return as the ‘main’ image — rarely have height and width parameters, so their size is effectively zero, leaving me returning static parts of the site layout as the ‘main’ image. Often, it’s small 16×16 icons, or the site’s logo, or banner ads (!).
  • Try to intelligently find the ‘main content’
    and grab the first image in there. This would really only work if people used a handful of common names for the main content areas of their site, and then, only if they refrained from putting something like an author headshot or social media sharing icons first, which is not at all a safe assumption to make. But “not safe globally” is really the story of the Internet; it just has to be less-bad than the above method to be worth doing.
  • Download every image on the page, load each into memory, and compute the total number of pixels; keep the largest.

The concept of the largest image is still slightly funky, in that if you had a blog post with a small image, but a huge banner ad or logo on your site, the largest image wouldn’t be the one relevant to the story. That would argue that trying to find the ‘main div’ is best, but I don’t see how that could ever work reliably. The first idea — using height and width attributes to find the largest — works maybe 50% of the time, but when it doesn’t work, it’s astonishingly bad. (The news story I linked to returns a one-pixel transparent GIF. Using it on Lifehacker returns banner ads.) Downloading every image on the page is a huge bother, as it would be slow and use a lot of bandwidth. (I might be able to get away with sending a HEAD and picking the image with the largest Content-Length, which I very foolishly assume is the most ‘important’ image on the page.)

Anyone have any better ideas?

Standards: They’re Nice.

I’m toying with building a small library that will take a URL, load and parse it (using Mechanize and Loofah), and spit out a title, description/summary, and the ‘main’ image. Sometimes it’s a piece of cake, like when they have Open Graph tags indicating all of that information in the headers. (I also plan to work on oEmbed support.)

But it’s a huge headache, because there are myriad standards, with most people not bothering to follow any of them. I’ve learned about all sorts of declaring “the image” for a page, like og:image or a rel=”image_src” link, but most of the time I have to try to parse all the tags and find the biggest. But that’s really error-prone, because lots of people don’t bother setting height and width parameters on their images, so I end up picking a 16×16-pixel icon as the “biggest”. (I categorically refuse to actually download every image to extract its dimensions for this. It’s a huge waste of bandwidth.) On Lifehacker, my code typically returns a banner image as the largest image.

And when an og:image is defined in the headers, all bets are off for what it is. Maybe it’s the largest image on the page — yay! Maybe it’s a 64×64-pixel thumbnail. (Boo!) Or maybe it’s the site’s logo. It might be an absolute path, but it might be relative, in which case I have to construct a new URL to it based on what I think the site’s domain is after account for having followed redirects.

And then there’s just insane stuff. If no og:title is set, I try to get the tag. You wouldn’t believe how many times the <title> tag has HTML inside of it, like <h1> tags, or newlines. Often, <em>multiple</em> newlines, in the middle. On big, well-known sites. What the heck? Or the title is in ALL CAPS LIKE A CRAZY DERANGED PERSON IS WRITING for no apparent reason, so I’m inclined to <a href="http://apidock.com/rails/ActiveSupport/CoreExtensions/String/Inflections/titlecase">titlecase</a> it. Or perhaps the title is actually just the site’s name. Or perhaps it’s actually the text “Untitled,” which is frighteningly common. Or perhaps there just <em>isn’t</em> a title.</p> <p>And don’t even get me <em>started</em> on character encoding.</p> <p>Right now, the code to extract these few bits of information is 124 lines, and I don’t feel anywhere near ready to change its name away from “Parser::Crude” yet. And I’ve really only implemented basic functionality thus far. I still need to add oEmbed, which is a huge can of worms.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/" rel="category tag">Uncategorized</a> </span> <span class="sep"> | </span> <span class="comments-link"><a href="https://blogs.n1zyy.com/n1zyy/2010/12/19/standards-theyre-nice/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- #entry-meta --> </article><!-- #post-3306 --> <article id="post-3296" class="post-3296 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"><a href="https://blogs.n1zyy.com/n1zyy/2010/12/14/the-web-my-way/" title="Permalink to The Web, My Way" rel="bookmark">The Web, My Way</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://blogs.n1zyy.com/n1zyy/2010/12/14/the-web-my-way/" title="2:19 pm" rel="bookmark"><time class="entry-date" datetime="2010-12-14T14:19:54-05:00" pubdate>December 14, 2010</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blogs.n1zyy.com/n1zyy/author/n1zyy/" title="View all posts by n1zyy" rel="author">n1zyy</a></span></span> </div><!-- .entry-meta --> <div class="comments-link"> <a href="https://blogs.n1zyy.com/n1zyy/2010/12/14/the-web-my-way/#respond"><span class="leave-reply">Reply</span></a> </div> </header><!-- .entry-header --> <div class="entry-content"> <p>I used to work for an ad-supported company, so I’ve always felt kind of bad using <a href="https://addons.mozilla.org/en-US/firefox/addon/1865/">AdBlock</a>. I bifurcated for a while between keeping AdBlock off except for obnoxious sites, or keeping AdBlock and whitelisting sites I frequent that aren’t obnoxious. It ended up getting to be too much of a hassle, so I’ve browsed with AdBlock on full-time, and a handful of sites whitelisted. I still feel bad doing so, but not bad enough to unblock.</p> <p>Recently I’ve noticed a couple sites that are really slow. Firebug shows they’re doing <em>tons of crap</em>. Uncrate seems to have something that will go off and do an AJAX post any time I scroll to expose new content, and content from several other sites is pulled in. Slowly. The site locks up my browser for a moment. Some other site I went to the other day managed to peg one of my cores at 100% CPU usage. I don’t even know what it was doing.</p> <p>I’ve declined to use <a href="http://noscript.net/">NoScript</a> for a long time, because in 2010, the Internet just doesn’t <em>work</em> without JavaScript. It would be like me trying to avoid surveillance cameras in public, or trying to avoid using WiFi because I didn’t trust it. But I’ve just had a mini-rebellion. There is so much <em>crap</em> on pages. A page pulls in JavaScript tags from a half-dozen sites, and each of those pulls in <em>more</em> scripts that all make calls all over the place. I have a <a href="https://blogs.n1zyy.com/n1zyy/2010/12/05/overclocking/">pretty fast computer</a> and keep Firefox locked down, so when a page is able to lock up Firefox for a moment, something is really wrong.</p> <p>So I’m browsing the web on my terms now. NoScript blocks just about all JavaScript and I’m starting to selectively whitelist. I did permit Google Analytics.</p> <p>The other great thing about NoScript is that it blocks Flash by default. I like Flash for things like videos. But Flash is also insidious in its use of persistent cookies that your browser doesn’t control. Using Adobe’s site to <a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html">view saved Flash cookies</a>, I have a ton, mostly from sites I’ve never even heard of. I deleted content from all of them, but also don’t permit Flash to run by default.</p> <p>The Internet looks pretty crappy now, but right now I prefer that to sites that <em>are</em> crappy.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/" rel="category tag">Uncategorized</a> </span> <span class="sep"> | </span> <span class="comments-link"><a href="https://blogs.n1zyy.com/n1zyy/2010/12/14/the-web-my-way/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- #entry-meta --> </article><!-- #post-3296 --> <article id="post-3287" class="post-3287 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"><a href="https://blogs.n1zyy.com/n1zyy/2010/12/05/overclocking/" title="Permalink to Overclocking" rel="bookmark">Overclocking</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://blogs.n1zyy.com/n1zyy/2010/12/05/overclocking/" title="4:06 pm" rel="bookmark"><time class="entry-date" datetime="2010-12-05T16:06:47-05:00" pubdate>December 5, 2010</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blogs.n1zyy.com/n1zyy/author/n1zyy/" title="View all posts by n1zyy" rel="author">n1zyy</a></span></span> </div><!-- .entry-meta --> <div class="comments-link"> <a href="https://blogs.n1zyy.com/n1zyy/2010/12/05/overclocking/#respond"><span class="leave-reply">Reply</span></a> </div> </header><!-- .entry-header --> <div class="entry-content"> <p>When I put together my system, I picked the i7-930 because Microcenter offered it for less than the i7-920. Both are practically the same processor; the i7-920 is 2.66 GHz and mine is 2.8 GHz. Both are legendary for their ability to be overclocked. I didn’t necessarily run with the overclocking crowd, but I’ve always had in the back of my mind that it could be done. Last night I ran into some forum posts with people complaining that they “only” got to 4.1 GHz with my processor/cooler combination before they started hitting stability issues.</p> <p>I don’t want to push things <em>that</em> hard, especially when I’m concerned about whether my CPU cooler is working at full efficiency. (I want to pick up some thermal grease and remount it.) But I was bit by the bug.</p> <p>I can’t actually change the multiplier of my processor — it’s fixed at 21x the <a href="http://www.techarp.com/showfreebog.aspx?lang=0&bogno=422">base clock</a> frequency. But the base clock is trivial to change. I made sure all the thermal monitoring and auto-shutoffs were enabled and bumped it up from 133 MHz to 150MHz. And presto! I’m running a bit hot now, but one simple change and:</p> <p><a href="https://blogs.n1zyy.com/n1zyy/files/2010/12/Screen-shot-2010-12-05-at-2.38.01-PM.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3288" title="i7-930 Hackintosh at 3.15 GHz" src="https://blogs.n1zyy.com/n1zyy/files/2010/12/Screen-shot-2010-12-05-at-2.38.01-PM.png" alt="" width="320" height="364" /></a></p> <p>I’m not certain why it’s reported as a Xeon; <a href="http://ark.intel.com/Product.aspx?id=41447">it’s not</a>. But the clock speed is accurate. When I get around to trying to remount the cooler, I think I’m going to have a go at the 4 GHz barrier, though I don’t want to run too far out of spec.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/" rel="category tag">Uncategorized</a> </span> <span class="sep"> | </span> <span class="comments-link"><a href="https://blogs.n1zyy.com/n1zyy/2010/12/05/overclocking/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- #entry-meta --> </article><!-- #post-3287 --> <article id="post-3252" class="post-3252 post type-post status-publish format-standard hentry category-uncategorized"> <header class="entry-header"> <h1 class="entry-title"><a href="https://blogs.n1zyy.com/n1zyy/2010/10/24/when-geeks-watch-tv/" title="Permalink to When Geeks Watch TV" rel="bookmark">When Geeks Watch TV</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://blogs.n1zyy.com/n1zyy/2010/10/24/when-geeks-watch-tv/" title="7:57 pm" rel="bookmark"><time class="entry-date" datetime="2010-10-24T19:57:04-04:00" pubdate>October 24, 2010</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://blogs.n1zyy.com/n1zyy/author/n1zyy/" title="View all posts by n1zyy" rel="author">n1zyy</a></span></span> </div><!-- .entry-meta --> <div class="comments-link"> <a href="https://blogs.n1zyy.com/n1zyy/2010/10/24/when-geeks-watch-tv/#respond"><span class="leave-reply">Reply</span></a> </div> </header><!-- .entry-header --> <div class="entry-content"> <p>I live about 10 miles outside of Boston, and probably about 5 miles from all the towers that the Boston stations use.</p> <p>I rarely watch TV, so I opted to not get cable TV. (To the fury of Comcast, FiOS, and RCN, who each send me several advertisements every week.) However, I do want to watch local TV every once in a blue moon. Not having time to go to the store the first time I wanted to watch TV, I just strung a length of random wire behind the TV, connecting it to the antenna input. It worked passably at best. The signals were fairly weak and would occasionally drop frames or lose synchronization and drop out entirely for a bit.</p> <p>I eventually hooked a higher-gain handheld ham radio antenna, and found that it works great. However, the setup was even more outrageously improvised: the antenna was a male <a href="http://en.wikipedia.org/wiki/BNC_connector">BNC</a> and I had the existing wire ‘antenna’ twisted around the center pin. This was a really unstable connection, so I used some electrical tape. This was really just a jury-rigged test. But it worked phenomenally well: the weak signals that dropped out are now <a href="http://en.wikipedia.org/wiki/DFQ">DFQ</a>. (Okay, “DFQ” isn’t meant to describe HDTV, but I can’t bring myself down to the level of describing my TV as having “full bars” now, and I don’t have a signal meter to be able to give an actual signal strength.)</p> <p>I refused to buy a real HDTV antenna, partially because they’re $75+, partially because they’re huge, and largely because they’re typically meant for people who live further away and tend to feature preamps which can’t possibly do me any good. So my homebrew setup works great. It is, however, a touch, umm, <em>improvisational</em>.</p> <p>Radio Shack <em>does not sell</em> female BNC connectors. Seriously. I found five separate types of uncrimped male BNCs, but not a single female. So that set me up for trouble right away. I eventually found a bulkhead-style connector that was female on both sides, and realized I could use that. I didn’t find any good stand, so I improvised a bit:</p> <p><a href="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4420.jpg"><img decoding="async" class="aligncenter size-medium wp-image-3253" title="TV Antenna Mounted to Cardboard Box" src="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4420-300x200.jpg" alt="" width="300" height="200" /></a>The opening in the top is just wide enough for the connector to stick through, but the white plastic connector doesn’t. Sadly, my inability to find a crimp-on female BNC connector means that the coax you see is just sitting with its conductor in the connector, not attached in any way. It’s secure enough that I don’t think it’ll pop out, though.</p> <p>I also didn’t have any proper crimping equipment, so for the F connector into my TV, I had to try to crimp it with pliers, which didn’t work so well:</p> <p><a href="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4421.jpg"><img decoding="async" class="aligncenter size-medium wp-image-3254" title="Horribly Crimped F Connector on TV" src="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4421-300x200.jpg" alt="" width="300" height="200" /></a></p> <p>(An astute observer may not that it’s not even on right. It won’t screw in.) Obviously, if this were some sort of transmitting apparatus, the build quality would have to be much higher. But for receiving multi-kilowatt TV transmitters five miles away, I can get away with a lot.</p> <p>When it’s all said and done, here’s how it looks:</p> <p><a href="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4427.jpg"><img loading="lazy" decoding="async" class="aligncenter size-medium wp-image-3255" title="My Ghetto TV Antenna" src="https://blogs.n1zyy.com/n1zyy/files/2010/10/IMG_4427-300x200.jpg" alt="" width="300" height="200" /></a></p> <p>From the couch, you can’t see it.</p> <p>Of course, what <em>really</em> matters isn’t how ridiculously amateur it looks, but how it performs. And in that regard, well, it’s perfect. And since it’s over-the-air HDTV, I get flawless, <em>uncompressed</em> 1080p.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/" rel="category tag">Uncategorized</a> </span> <span class="sep"> | </span> <span class="comments-link"><a href="https://blogs.n1zyy.com/n1zyy/2010/10/24/when-geeks-watch-tv/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- #entry-meta --> </article><!-- #post-3252 --> <nav id="nav-below"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/page/9/" ><span class="meta-nav">←</span> Older posts</a></div> <div class="nav-next"><a href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/page/7/" >Newer posts <span class="meta-nav">→</span></a></div> </nav><!-- #nav-above --> </div><!-- #content --> </section><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="search-2" class="widget widget_search"> <form method="get" id="searchform" action="https://blogs.n1zyy.com/n1zyy/"> <label for="s" class="assistive-text">Search</label> <input type="text" class="field" name="s" id="s" placeholder="Search" /> <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" /> </form> </aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <h3 class="widget-title">Recent Posts</h3> <ul> <li> <a href="https://blogs.n1zyy.com/n1zyy/2024/11/11/building-a-stratum-1-ntp-server-on-ec2/">Building a stratum 1 NTP server on EC2</a> </li> <li> <a href="https://blogs.n1zyy.com/n1zyy/2024/11/11/its-back/">It’s back!</a> </li> <li> <a href="https://blogs.n1zyy.com/n1zyy/2023/09/15/the-myth-of-prunella-shriek/">The myth of Prunella Shriek</a> </li> <li> <a href="https://blogs.n1zyy.com/n1zyy/2019/12/26/skyking-skyking-do-not-answer/">Skyking, Skyking, Do Not Answer</a> </li> <li> <a href="https://blogs.n1zyy.com/n1zyy/2019/11/30/murray-g2250030-snowblower-parts/">Murray G2250030 Snowblower Parts</a> </li> </ul> </aside><aside id="recent-comments-2" class="widget widget_recent_comments"><h3 class="widget-title">Recent Comments</h3><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">dokemoj747</span> on <a href="https://blogs.n1zyy.com/n1zyy/2007/10/30/a-partial-upgrade/#comment-499414">A Partial Upgrade</a></li><li class="recentcomments"><span class="comment-author-link">B-Ba</span> on <a href="https://blogs.n1zyy.com/n1zyy/2008/02/22/roomwizard/#comment-499402">RoomWizard</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://theanimallawcenter.com/2025/07/08/what-does-police-code-211-mean/" class="url" rel="ugc external nofollow">What Does Police Code 211 Mean and When Is It Used Today? - Criminal Immigration Law Firm in New York, New Jersey</a></span> on <a href="https://blogs.n1zyy.com/n1zyy/tutorials/boston-police-codes/#comment-499280">Boston Police Radio Codes</a></li><li class="recentcomments"><span class="comment-author-link"><a href="https://wanderingmattlarson.com/the-uncanoonuc-mountains/" class="url" rel="ugc external nofollow">The Uncanoonuc Mountains - wandering matt</a></span> on <a href="https://blogs.n1zyy.com/n1zyy/2018/01/15/towerspotting-mt-uncanoonuc/#comment-499201">Towerspotting: Mt. Uncanoonuc</a></li><li class="recentcomments"><span class="comment-author-link"><a href="http://w1pac.pacmannion.net" class="url" rel="ugc external nofollow">Patrick W1PAC</a></span> on <a href="https://blogs.n1zyy.com/n1zyy/tutorials/boston-police-codes/#comment-499051">Boston Police Radio Codes</a></li></ul></aside><aside id="archives-2" class="widget widget_archive"><h3 class="widget-title">Archives</h3> <ul> <li><a href='https://blogs.n1zyy.com/n1zyy/2024/11/'>November 2024</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2023/09/'>September 2023</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2019/12/'>December 2019</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2019/11/'>November 2019</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2018/05/'>May 2018</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2018/02/'>February 2018</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2018/01/'>January 2018</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2017/12/'>December 2017</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2017/06/'>June 2017</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2017/05/'>May 2017</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2017/03/'>March 2017</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2016/12/'>December 2016</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2016/11/'>November 2016</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2016/04/'>April 2016</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/11/'>November 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/10/'>October 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/07/'>July 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/06/'>June 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/04/'>April 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/03/'>March 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/02/'>February 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2015/01/'>January 2015</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/12/'>December 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/09/'>September 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/08/'>August 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/07/'>July 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/05/'>May 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/04/'>April 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/03/'>March 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2014/02/'>February 2014</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2013/08/'>August 2013</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2013/04/'>April 2013</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2013/03/'>March 2013</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/12/'>December 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/11/'>November 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/10/'>October 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/08/'>August 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/07/'>July 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/05/'>May 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/03/'>March 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/02/'>February 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2012/01/'>January 2012</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/12/'>December 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/11/'>November 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/10/'>October 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/09/'>September 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/07/'>July 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/06/'>June 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/05/'>May 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/04/'>April 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/03/'>March 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/02/'>February 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2011/01/'>January 2011</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/12/'>December 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/11/'>November 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/10/'>October 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/09/'>September 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/08/'>August 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/07/'>July 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/06/'>June 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/05/'>May 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/04/'>April 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/03/'>March 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/02/'>February 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2010/01/'>January 2010</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/12/'>December 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/11/'>November 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/10/'>October 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/09/'>September 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/08/'>August 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/07/'>July 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/06/'>June 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/05/'>May 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/04/'>April 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/03/'>March 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/02/'>February 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2009/01/'>January 2009</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/12/'>December 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/11/'>November 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/10/'>October 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/09/'>September 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/08/'>August 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/07/'>July 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/06/'>June 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/05/'>May 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/04/'>April 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/03/'>March 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/02/'>February 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2008/01/'>January 2008</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/12/'>December 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/11/'>November 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/10/'>October 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/09/'>September 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/08/'>August 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/07/'>July 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/06/'>June 2007</a></li> <li><a href='https://blogs.n1zyy.com/n1zyy/2007/05/'>May 2007</a></li> </ul> </aside><aside id="categories-2" class="widget widget_categories"><h3 class="widget-title">Categories</h3> <ul> <li class="cat-item cat-item-2"><a href="https://blogs.n1zyy.com/n1zyy/category/2008/">2008</a> </li> <li class="cat-item cat-item-3"><a href="https://blogs.n1zyy.com/n1zyy/category/business/">Business</a> </li> <li class="cat-item cat-item-4"><a href="https://blogs.n1zyy.com/n1zyy/category/computers/">Computers</a> </li> <li class="cat-item cat-item-5"><a href="https://blogs.n1zyy.com/n1zyy/category/cool-links/">Cool Links</a> </li> <li class="cat-item cat-item-6"><a href="https://blogs.n1zyy.com/n1zyy/category/funny/">Funny</a> </li> <li class="cat-item cat-item-7"><a href="https://blogs.n1zyy.com/n1zyy/category/ham-radio/">Ham Radio</a> </li> <li class="cat-item cat-item-8"><a href="https://blogs.n1zyy.com/n1zyy/category/hero-of-the-day/">Hero of the Day</a> </li> <li class="cat-item cat-item-9"><a href="https://blogs.n1zyy.com/n1zyy/category/humanitarianism/">Humanitarianism</a> </li> <li class="cat-item cat-item-10"><a href="https://blogs.n1zyy.com/n1zyy/category/ideas/">Ideas</a> </li> <li class="cat-item cat-item-11"><a href="https://blogs.n1zyy.com/n1zyy/category/insanity/">Insanity</a> </li> <li class="cat-item cat-item-12"><a href="https://blogs.n1zyy.com/n1zyy/category/interesting/">Interesting</a> </li> <li class="cat-item cat-item-13"><a href="https://blogs.n1zyy.com/n1zyy/category/linux-tips/">Linux Tips</a> </li> <li class="cat-item cat-item-14"><a href="https://blogs.n1zyy.com/n1zyy/category/lists/">Lists</a> </li> <li class="cat-item cat-item-15"><a href="https://blogs.n1zyy.com/n1zyy/category/living/">Living</a> </li> <li class="cat-item cat-item-16"><a href="https://blogs.n1zyy.com/n1zyy/category/materialism/">Materialism</a> </li> <li class="cat-item cat-item-34"><a href="https://blogs.n1zyy.com/n1zyy/category/ntp/">NTP</a> </li> <li class="cat-item cat-item-17"><a href="https://blogs.n1zyy.com/n1zyy/category/obama/">Obama</a> </li> <li class="cat-item cat-item-18"><a href="https://blogs.n1zyy.com/n1zyy/category/ocd/">OCD</a> </li> <li class="cat-item cat-item-19"><a href="https://blogs.n1zyy.com/n1zyy/category/performance/">Performance</a> </li> <li class="cat-item cat-item-20"><a href="https://blogs.n1zyy.com/n1zyy/category/photography/">Photography</a> </li> <li class="cat-item cat-item-21"><a href="https://blogs.n1zyy.com/n1zyy/category/politics/">Politics</a> </li> <li class="cat-item cat-item-22"><a href="https://blogs.n1zyy.com/n1zyy/category/programming/">Programming</a> </li> <li class="cat-item cat-item-23"><a href="https://blogs.n1zyy.com/n1zyy/category/rails/">Rails</a> </li> <li class="cat-item cat-item-24"><a href="https://blogs.n1zyy.com/n1zyy/category/rants-raves/">Rants & Raves</a> </li> <li class="cat-item cat-item-25"><a href="https://blogs.n1zyy.com/n1zyy/category/scanner-listening/">Scanner Listening</a> </li> <li class="cat-item cat-item-26"><a href="https://blogs.n1zyy.com/n1zyy/category/school/">School</a> </li> <li class="cat-item cat-item-27"><a href="https://blogs.n1zyy.com/n1zyy/category/security/">Security</a> </li> <li class="cat-item cat-item-1 current-cat"><a aria-current="page" href="https://blogs.n1zyy.com/n1zyy/category/uncategorized/">Uncategorized</a> </li> </ul> </aside><aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">Meta</h3> <ul> <li><a href="https://blogs.n1zyy.com/n1zyy/wp-login.php">Log in</a></li> <li><a href="https://blogs.n1zyy.com/n1zyy/feed/">Entries feed</a></li> <li><a href="https://blogs.n1zyy.com/n1zyy/comments/feed/">Comments feed</a></li> <li><a href="https://wordpress.org/">WordPress.org</a></li> </ul> </aside> </div><!-- #secondary .widget-area --> </div><!-- #main --> <footer id="colophon" role="contentinfo"> <div id="site-generator"> <a href="http://wordpress.org/" title="Semantic Personal Publishing Platform" rel="generator">Proudly powered by WordPress</a> with an unholy mashup of <a href="http://wordpress.org/themes/twentyeleven">Twenty Eleven</a> and <a href="http://designdisease.com/compositio-wordpress-theme/">Compositio</a> themes. </div> </footer><!-- #colophon --> </div><!-- #page --> </body> </html> <!-- Page cached by LiteSpeed Cache 7.8.0.1 on 2026-04-21 18:36:14 -->