<?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>Statamic</title>
        <link></link>
        <generator>https://statamic.com</generator>
        <description>I am a software engineer based out of Seattle, WA</description>
        <lastBuildDate>Sun, 02 Apr 2023 00:00:00 +0000</lastBuildDate>
        <language>en-us</language>
        <copyright>Copyright 2026</copyright>
        <ttl>3600</ttl>
        
        <item>
            <title><![CDATA[<p>Another small project of mine, for pilots: <a href="https://www.weatherabove.com/">https://www.weatherabove.com/</a></p>
<p>Most of the existing METAR/TAF websites are not great, in my opinion, and lack access to more powerful forecasts like NBM. Hopefully this fills in a very small niche</p>
]]></title>
            <link>https://mastodon.munsell.io/@andrew/110132922292730118</link>
            <guid>https://mastodon.munsell.io/@andrew/110132922292730118</guid>
            <pubDate>Sun, 02 Apr 2023 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Another small project of mine, for pilots: <a href="https://www.weatherabove.com/">https://www.weatherabove.com/</a></p>
<p>Most of the existing METAR/TAF websites are not great, in my opinion, and lack access to more powerful forecasts like NBM. Hopefully this fills in a very small niche</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[<p>It&#39;s been over 6 years since I updated my website. This is mostly because I have been incredibly busy, but Wordpress&#39;s clunkiness certainly contributed to a lack of motivation to post anything.</p><p>I used <a href="https://mastodon.munsell.io/tags/Statamic" class="mention hashtag" rel="tag">#<span>Statamic</span></a> a very long time ago and it&#39;s good to finally move back.</p><p>Notable additions: auto cross-posting from Mastodon to my blog (the reverse might come at some point), and being self-hosted in my <a href="https://mastodon.munsell.io/tags/homelab" class="mention hashtag" rel="tag">#<span>homelab</span></a> Kubernetes cluster (plus Cloudflare Always Online to make up for my home Internet)</p>
]]></title>
            <link>https://mastodon.munsell.io/@andrew/109593133186207133</link>
            <guid>https://mastodon.munsell.io/@andrew/109593133186207133</guid>
            <pubDate>Wed, 28 Dec 2022 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>It&#39;s been over 6 years since I updated my website. This is mostly because I have been incredibly busy, but Wordpress&#39;s clunkiness certainly contributed to a lack of motivation to post anything.</p><p>I used <a href="https://mastodon.munsell.io/tags/Statamic" class="mention hashtag" rel="tag">#<span>Statamic</span></a> a very long time ago and it&#39;s good to finally move back.</p><p>Notable additions: auto cross-posting from Mastodon to my blog (the reverse might come at some point), and being self-hosted in my <a href="https://mastodon.munsell.io/tags/homelab" class="mention hashtag" rel="tag">#<span>homelab</span></a> Kubernetes cluster (plus Cloudflare Always Online to make up for my home Internet)</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[<p>Some late-night hacking and I have a very much experimental bot that posts images generated by <a href="https://mastodon.munsell.io/tags/StableDiffusion" class="mention hashtag" rel="tag">#<span>StableDiffusion</span></a> based on a poll from users. </p><p>Check it out and let me know what you think, or if it breaks :) </p><p><span class="h-card"><a href="https://mstdn.social/@androiddreams" class="u-url mention">@<span>androiddreams</span></a></span> </p><p>Note: it actually does abide by the poll results…</p>
]]></title>
            <link>https://mastodon.munsell.io/@andrew/109544645069146458</link>
            <guid>https://mastodon.munsell.io/@andrew/109544645069146458</guid>
            <pubDate>Tue, 20 Dec 2022 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Some late-night hacking and I have a very much experimental bot that posts images generated by <a href="https://mastodon.munsell.io/tags/StableDiffusion" class="mention hashtag" rel="tag">#<span>StableDiffusion</span></a> based on a poll from users. </p><p>Check it out and let me know what you think, or if it breaks :) </p><p><span class="h-card"><a href="https://mstdn.social/@androiddreams" class="u-url mention">@<span>androiddreams</span></a></span> </p><p>Note: it actually does abide by the poll results…</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Formingo: Easy, free HTML form processing for static websites]]></title>
            <link>http://www.andrewmunsell.com/blog/formingo-free-html-form-processing</link>
            <guid>http://www.andrewmunsell.com/blog/formingo-free-html-form-processing</guid>
            <pubDate>Tue, 28 Jun 2016 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>One thing I ran across when <a href="https://www.andrewmunsell.com/course/learning-jekyll-by-example/" target="_blank">building my website with Jekyll</a>, a static website generator, was that it restricted my ability to have dynamic content, such an HTML form and blog comments.</p>
<p>Disqus, a popular service that manages comments, alleviated the latter pain, however, the inability to have a simple contact form was huge. There are a couple third-party services that allow you to build forms, but many of them (such as Google Forms) are unnecessarily complex. They often embedded in iFrames or take you to their own domain to submit the form, meaning that they present visitors with a form that doesn't match the rest of the website stylistically, or are taken away from your website altogether.</p>
<p>To fix this, I built <a href="https://www.formingo.co" target="_blank">Formingo</a>. Formingo is a new service that allows you to easily create HTML forms that get sent directly to your email address. It's completely free to use for up to 500 submissions a month, and there are a ton of new features coming. In fact, just today, I launched pre-verified email addresses and domains.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Edge of Nowhere]]></title>
            <link>http://www.andrewmunsell.com/blog/edge-of-nowhere</link>
            <guid>http://www.andrewmunsell.com/blog/edge-of-nowhere</guid>
            <pubDate>Wed, 08 Jun 2016 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>If you have an Oculus Rift, you owe it to yourself to buy <a href="http://www.insomniacgames.com/games/edge-of-nowhere/" target="_blank">Edge of Nowhere</a>. It's an incredibly atmospheric game, and well worth the purchase.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Oculus Rift: A Bug with Windows Power Plan Configuration]]></title>
            <link>http://www.andrewmunsell.com/blog/oculus-rift-bug-power-plan-configuration</link>
            <guid>http://www.andrewmunsell.com/blog/oculus-rift-bug-power-plan-configuration</guid>
            <pubDate>Mon, 04 Apr 2016 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I pre-ordered the Oculus Rift, a virtual reality headset, on January 6th of this year. After following the Rift from its Kickstarter campaign to trying it in person at PAX 2014, I've been waiting for the promise of virtual reality for years. Last week, my dream finally came true-- I received one of the very first Oculus Rift "CV1" headsets. After plugging it in and launching demos that cannot be explained with words, I noticed something wrong with my PC. The CPU fan was going crazy, and the sensors were reporting abnormally high temperatures.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Predicting Disney World Wait Times with Neural Networks]]></title>
            <link>http://www.andrewmunsell.com/blog/predicting-disney-world-wait-times-neural-networks</link>
            <guid>http://www.andrewmunsell.com/blog/predicting-disney-world-wait-times-neural-networks</guid>
            <pubDate>Wed, 24 Feb 2016 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Machine learning is an extremely important topic in computer science. We've come to the point where there's some problems that just cannot be solved with algorithms and code, and machine learning is the solution.</p>
<p>I haven't had a ton of experience with machine learning beyond Andrew Ng's amazing <a href="https://www.coursera.org/learn/machine-learning">Machine Learning course</a> and I recently set out to change that.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Oculus Rift Pre-Orders]]></title>
            <link>http://www.andrewmunsell.com/blog/oculus-rift</link>
            <guid>http://www.andrewmunsell.com/blog/oculus-rift</guid>
            <pubDate>Wed, 06 Jan 2016 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>The <a href="http://oculus.com/" target="_blank">Oculus Rift</a> is finally available for pre-order and many are having sticker shock with the $599 price tag. With tax and shipping costs (really? shipping costs on a $599 device? I suppose I might be spoiled by Amazon), it can come out to almost $700 in the United States. However, this is pretty close to the price of a high-end monitor (such as the curved 34-37 inch models), and you get a decent amount of hardware included: motion tracking, the tracking camera, Xbox controller, Oculus Remote, etc.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Needlepoint 1.0.5]]></title>
            <link>http://www.andrewmunsell.com/blog/needlepoint-dependency-injection-1-0-5</link>
            <guid>http://www.andrewmunsell.com/blog/needlepoint-dependency-injection-1-0-5</guid>
            <pubDate>Tue, 29 Dec 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><em>For more information on Needlepoint-- my JavaScript dependency injection system--you can take a look at <a href="https://www.andrewmunsell.com/blog/dependency-injection-for-modern-javascript-using-es6-classes-and-es7-decorators/" target="_blank">my introductory blog post</a> or the README file <a href="https://github.com/andrewmunsell/needlepoint" target="_blank">on GitHub</a>.</em></p>
<p>I have updated Needlepoint to version 1.0.5 in NPM. There's a couple changes, none of which should break if you use an older version and upgrade to this version.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Learning to Create a Full-Stack Redux-React Website]]></title>
            <link>http://www.andrewmunsell.com/blog/learning-to-create-a-full-stack-redux-react-website</link>
            <guid>http://www.andrewmunsell.com/blog/learning-to-create-a-full-stack-redux-react-website</guid>
            <pubDate>Mon, 28 Dec 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Though I am an Angular JS type of person, I regularly follow other JavaScript frameworks to keep up with the rest of the world. React, along with the Flux design pattern, is a relatively popular alternative to the Angular ecosystem. However, React+Flux is extremely different from other frameworks-- for starters, React isn't actually a full JavaScript framework by itself, and Flux isn't actually a <em>thing</em>: it's a type of architecture. <a href="http://teropa.info/" target="_blank">Tero Parviainen</a> wrote an amazing introduction to the Redux+React ecosystem with an overview of how not only the two libraries themselves work, but conceptually how they fit together and why the Flux architecture and immutability makes sense in a web application.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Dependency Injection for Modern Javascript Using ES6 Classes and ES7 Decorators]]></title>
            <link>http://www.andrewmunsell.com/blog/dependency-injection-for-modern-javascript-using-es6-classes-and-es7-decorators</link>
            <guid>http://www.andrewmunsell.com/blog/dependency-injection-for-modern-javascript-using-es6-classes-and-es7-decorators</guid>
            <pubDate>Fri, 18 Sep 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>In the past, I've done a lot of work with PHP and the Laravel framework. One of the coolest features about Laravel is its Inversion of Control system, which dynamically injects dependencies into your application at runtime.</p>
<p>This is beneficial for many reasons, including modularity, readability, and testability. With a dependency injected system, you can simply request that your application receives an instance of an object, and the DI container will do all of the work to initialize the object and all of <i>its</i> dependencies.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Getting Started with Rancher, a self-hosted Docker PaaS]]></title>
            <link>http://www.andrewmunsell.com/blog/getting-started-with-rancher-a-self-hosted-docker-paas</link>
            <guid>http://www.andrewmunsell.com/blog/getting-started-with-rancher-a-self-hosted-docker-paas</guid>
            <pubDate>Sat, 25 Jul 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Docker is fantastic for building a scalable infrastructure. Not only does it force you to isolate your application into reasonable chunks, but it also encourages you to build these pieces as stateless services. This is fantastic for high availability and scalability, but actually scaling out a pure Docker-based infrastructure is difficult if done manually.</p>
<p>Docker Swarm and Compose are the "official" solutions to this problem-- they allow for you to build a giant, elastic Docker cluster that appears as a single machine to your client. Additionally, Compose allows you to scale your application easily to multiple instances.</p>
<p>Despite this, these two components are lacking a couple critical features-- cross-machine service discovery, as well as a built-in load balancer that distributes traffic to your scaled Docker infrastructure.</p>
<p><a href="https://www.tutum.co" target="_blank">Tutum</a> is a service that adds these remaining components, and to great success. Though you can use your own nodes with Tutum, sometimes it's desirable to use your own, self-hosted service.</p>
<p><a href="http://rancher.com/rancher/" target="_blank">Rancher</a> is an open source Docker PaaS that includes features like service discovery and DNS, load balancing, multi-node support, cross-host networking, health checks, multi-tenancy, and more. Essentially, Rancher takes all the features of Tutum and packs it into a single Docker container that is hosted on your own nodes so that you have complete control.</p>
<p>Even better, Rancher is extremely easy to install in a matter of minutes.</p>
<p>To find out how, check out <a href="https://www.andrewmunsell.com/course/getting-started-with-rancher-a-self-hosted-docker-paas/">my new mini-course</a> that I will be expanding over the next several weeks to cover new features in Rancher, as well as expand it to cover how to use advanced features such as service discovery. It's <strong>completely free</strong>, and I hope you find it useful!</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Northwestern - A Wordpress Theme Inspired by the Pacific Northwest]]></title>
            <link>http://www.andrewmunsell.com/blog/northwestern-a-wordpress-theme-inspired-by-the-pacific-northwest</link>
            <guid>http://www.andrewmunsell.com/blog/northwestern-a-wordpress-theme-inspired-by-the-pacific-northwest</guid>
            <pubDate>Sun, 28 Jun 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I just launched a brand new, responsive, and completely free Wordpress theme. Inspired by my home-- the Pacific Northwest (of the United States)-- Northwestern is a <a href="https://www.andrewmunsell.com/store/themes/northwestern-wordpress-theme/">minimalistic Wordpress theme</a> for independent bloggers.</p>
<p>The theme's look can also be customized to fit your personality, with the primary colors and hero image changeable. Northwestern also supports several of the Wordpress post formats, including "aside", links, and quotes.</p>
<p>Go ahead and grab it for free <a href="https://www.andrewmunsell.com/store/themes/northwestern-wordpress-theme/">from my website</a>, and feel free to use it for both personal and commercial websites. More information on the license can be found on the store page.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[CI/CD with Docker Containers]]></title>
            <link>http://www.andrewmunsell.com/blog/ci-cd-with-docker-containers</link>
            <guid>http://www.andrewmunsell.com/blog/ci-cd-with-docker-containers</guid>
            <pubDate>Thu, 30 Apr 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I've been experimenting with Docker for a while, but in the last year or so there has been an influx in the number of tools that help put Docker containers into production easily. Some of these are from third party companies, such as CoreOS, and some from Docker itself (such as the new Docker Swarm, Docker Machine, and Docker Compose. However, I've recently been testing a new Docker workflow that allows me to push code, have it tested, built, and deployed into a production server cluster running Docker.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[LoopPay's Big Problem, and How Samsung Could Fix It]]></title>
            <link>http://www.andrewmunsell.com/blog/looppay-s-big-problem-and-how-samsung-could-fix-it</link>
            <guid>http://www.andrewmunsell.com/blog/looppay-s-big-problem-and-how-samsung-could-fix-it</guid>
            <pubDate>Wed, 18 Feb 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Today, LoopPay announced that they were acquired by Samsung. This wasn't entirely unforeseen, considering rumors have been popping up regarding LoopPay's future integration with Samsung phones. The LoopPay system is a new technology that is tied to the current magnetic stripe credit card system. Using a small loop of wires in a special hardware device, the LoopPay devices essentially mimic the magnetic field caused by a swipe of a credit card, enabling mobile payments at nearly every existing credit card swipe terminal.</p>
<p><img src="http://www.andrewmunsell.com/wp-content/uploads/2015/06/loop-devices.jpg" alt="LoopPay Devices" width="720" height="420" class="alignnone size-full wp-image-129" /></p>
<p>The device works like magic-- simply place the Fob or Card next to the magnetic swipe slot on an existing credit card machine, press a button on your LoopPay, and the reader will act as if a physical card was swiped. I've owned one of these devices for a little over a month (specifically, the LoopPay Card) and it has worked flawlessly every time I've used it on a traditional terminal, but there's one big problem that needs to be solved before LoopPay can become a major player in the mobile payments space.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[How to Install NOOBS on Your Raspberry Pi]]></title>
            <link>http://www.andrewmunsell.com/blog/raspberry-pi-noobs-tutorial</link>
            <guid>http://www.andrewmunsell.com/blog/raspberry-pi-noobs-tutorial</guid>
            <pubDate>Fri, 06 Feb 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><abbr title="New Out Of the Box Software">NOOBS</abbr> is a system designed by the Raspberry Pi foundation for installing operating systems onto your Raspberry Pi's SD card. Not only are you able to install an operating system with a single click, but you can install it over a network or even install multiple operating systems on multiple partitions.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Raspberry Pi 2 - What's New, and What's the Same]]></title>
            <link>http://www.andrewmunsell.com/blog/raspberry-pi-2-whats-new-and-whats-the-same</link>
            <guid>http://www.andrewmunsell.com/blog/raspberry-pi-2-whats-new-and-whats-the-same</guid>
            <pubDate>Tue, 03 Feb 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>A couple days ago, the Raspberry Pi foundation released the Raspberry Pi 2. The Raspberry Pi 2 comes with some fantastic new features that I'm looking forward to utilizing, including an upgraded processor and RAM. Even better, the hardware comes in at the same $35 as the original model B.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Learn How to Use JavaScript ES6 Classes and Arrow Functions]]></title>
            <link>http://www.andrewmunsell.com/blog/how-to-use-javascript-es6-classes-and-arrow-functions</link>
            <guid>http://www.andrewmunsell.com/blog/how-to-use-javascript-es6-classes-and-arrow-functions</guid>
            <pubDate>Fri, 02 Jan 2015 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>What better way to start the new year than with a couple quick lessons on new JavaScript features. I'm in the process of writing a series of short lessons on the new ES2015/ES6/ES7 JavaScript features, such as the immensely helpful <a href="https://www.andrewmunsell.com/lesson/introduction-to-classes/">classes</a> and <a href="https://www.andrewmunsell.com/lesson/arrow-functions/">arrow functions</a>.</p>
<p>For this course, I've also written a series of quizzes that help you keep on your toes-- simply <a href="https://www.andrewmunsell.com/my-account/" target="_blank">register for an account</a>, navigate to <a href="https://www.andrewmunsell.com/course/modern-javascript/" target="_blank">the course page</a>, and click the button titled "Start Taking this Course". You'll be able to take the quizzes and see your results, along with keep tabs on your reading progress. All of this is completely free and you are not added to mailing lists of any kind (the email address is required so that you can reset your password if needed)!</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[How to Remove the 12 mbps Limitation from Plex to Chromecast]]></title>
            <link>http://www.andrewmunsell.com/blog/how-to-remove-the-12mbps-limitation-from-plex-to-chromecast</link>
            <guid>http://www.andrewmunsell.com/blog/how-to-remove-the-12mbps-limitation-from-plex-to-chromecast</guid>
            <pubDate>Wed, 10 Dec 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><strong>Update:</strong> As of October 15th, 2015 (about 10 months after I originally wrote these instructions), Plex has <a href="https://forums.plex.tv/discussion/comment/1036131/#Comment_1036131"><em>finally</em> removed</a> the hard coded maximum bitrate. This guide will remain for historical reasons, but you should now not be required to follow these steps to stream high bitrate video to your Chromecast.</p>
<p>I am an enthusiastic user of Plex, but recently I discovered that they were making the poor choice of hard-coding a bitrate limitation in their Chromecast application. Essentially, this enforced a 12,000 kbps (~12 mbps) limitation on media, meaning that anything that has a higher bitrate would be transcoded. This isn't a problem when you have a decent server running Plex, but I am running it on an old laptop that can barely keep up with 4 mbps transcodes.</p>
<p>I was able to get around the hard coded limitation (the technical how-I-did-it is <a href="https://www.andrewmunsell.com/blog/reducing-transcoding-on-chromecast-from-plex">also available</a>), and you can do it to:</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Reverse Engineering Plex: Casting High Bitrate Video to Chromecast]]></title>
            <link>http://www.andrewmunsell.com/blog/reducing-transcoding-on-chromecast-from-plex</link>
            <guid>http://www.andrewmunsell.com/blog/reducing-transcoding-on-chromecast-from-plex</guid>
            <pubDate>Wed, 10 Dec 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I am a big fan of <a href="http://plex.tv">Plex Media Server</a>-- it has a great set of software, both server and client side, and is much easier to setup and use than alternatives such as XBMC. Attached to my ReadyNAS, my Plex server has access to 6 TB of storage.</p>
<p>I also have several <a href="http://amzn.to/1zR8LwG" target="_blank">Chromecast</a> devices-- they're great little media streamer sticks that simply plug into your HDMI port on your TV. Using your phone as a remote, you can "cast" media from an app (such as Netflix, HBO, or Plex) and onto your TV. Chromecast also has a browser API, so Plex's website also allows you to cast media to your local TVs.</p>
<p>There's one major issue, however, in terms of compatibility between Plex and the Chromecast-- and it's not actually the Chromecast's fault. Plex, for whatever reason, has decided to limit the maximum bitrate of a video file to 12 mbps when casting to a Chromecast device. If you have a powerful PC running as your Plex server, this is fine-- the server software will transcode the higher bitrate videos on the fly to 12 mbps. But, I am using an old laptop that can barely transcode to 4 mbps, 720p video files, so the video playback stutters.</p>
<p>Plex claims this forced transcoding is due to "performance issues" with media over 12 mbps, but this is not true<sup id="fnref-245-performance-issues"><a href="#fn-245-performance-issues" rel="footnote">1</a></sup>. Not only have users casted media higher than 12 mbps from <em>other</em> apps, but I have successfully gotten around this hard coded limitation and streamed 20+ mbps video <em>without a problem</em>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Mapping Ebola with D3]]></title>
            <link>http://www.andrewmunsell.com/blog/mapping-ebola-with-d3</link>
            <guid>http://www.andrewmunsell.com/blog/mapping-ebola-with-d3</guid>
            <pubDate>Mon, 24 Nov 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Ebola has been a big topic in the news lately, but just how bad is it, and how quickly is it spreading? As a part of a web programming course in the iSchool at the University of Washington, I developed an interactive visualization of the 2014 spread of the disease using D3 and web technologies.</p>
<p><a href="https://ebola.andrewmunsell.com" target="_blank">View the Visualization</a></p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Microsoft Band]]></title>
            <link>http://www.andrewmunsell.com/blog/microsoft-band</link>
            <guid>http://www.andrewmunsell.com/blog/microsoft-band</guid>
            <pubDate>Thu, 20 Nov 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Shortly after the sync applications were leaked early, Microsoft officially unveiled their latest wearable product-- the Microsoft Band. The Band is not a smartwatch, but rather a fitness centered wearable device with several smartwatch-like features. The device's claim to fame comes from its unique blend of 10 sensors that constantly input data and send it up to Microsoft's new Health platform.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Remote Access to ReadyNAS with ZeroTier One]]></title>
            <link>http://www.andrewmunsell.com/blog/remote-access-to-readynas-zerotier-one</link>
            <guid>http://www.andrewmunsell.com/blog/remote-access-to-readynas-zerotier-one</guid>
            <pubDate>Sun, 21 Sep 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I recently purchased a <a href="http://amzn.to/1sirYYD">diskless ReadyNAS 104</a> device from Netgear and filled it with a trio of WD Red 3 TB drives for my personal file storage. In this configuration, the NAS has a capacity of approximately 6 TB (one of the disks is used for parity), and houses backups of my files, photos, and home videos.</p>
<p>But, considering the device is attached to my apartment's WiFi network, it's not so useful outside of the premises. Netgear provides a client application called "ReadyNAS Remote", which provides remote access to the NAS device presumably by relaying your traffic through one of their servers. However, this can be slow and potentially a security concern. As an alternative, I compiled <a href="https://www.zerotier.com">ZeroTier One</a>, a mesh VPN, to connect to my NAS remotely.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Getting Started with Panamax: Creating an Internet-Accessible App]]></title>
            <link>http://www.andrewmunsell.com/blog/getting-started-with-panamax</link>
            <guid>http://www.andrewmunsell.com/blog/getting-started-with-panamax</guid>
            <pubDate>Mon, 18 Aug 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>The world of <a href="http://docker.com">Docker</a> has had some very exciting releases lately. From the self-hosted PaaS <a href="https://flynn.io">Flynn</a> having their first beta release, to the <a href="http://blog.docker.com/2014/06/its-here-docker-1-0/">1.0-and-beyond release</a> of Docker itself, to the new Docker web UI from CenturyLink called <a href="http://panamax.io">Panamax</a> and based on CoreOS, Docker has become easier to use for newcomers.</p>
<p>Today, I'll briefly go over how to setup and use one of these tools--Panamax--and create your own application template to produce a fully internet-accessible web application that requires zero configuration.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[HSTS: Enforced HTTPS]]></title>
            <link>http://www.andrewmunsell.com/blog/hsts</link>
            <guid>http://www.andrewmunsell.com/blog/hsts</guid>
            <pubDate>Sat, 16 Aug 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Though HTTPS has been an option for my site for a little while now, I haven't enforced it outside of various commerce related pages (e.g. the shopping cart). Starting now, not only is HTTPS required to browse my site, I've enabled the HSTS header to ensure that unencrypted connections are never allowed.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Setup Hack and HHVM on Digital Ocean]]></title>
            <link>http://www.andrewmunsell.com/blog/setup-hack-and-hhvm-on-digital-ocean</link>
            <guid>http://www.andrewmunsell.com/blog/setup-hack-and-hhvm-on-digital-ocean</guid>
            <pubDate>Wed, 02 Jul 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>PHP is an interesting language, and to many it is considered a language that is archaic and badly designed. In fact, I largely agree that PHP's design is not optimal, but there is no other language in the world that is both easy to learn and deployable on almost any shared hosting service so easily. This is changing, but for now, PHP is here to stay.</p>
<p>By design, PHP does not have explicit typing-- a variable can be any type, and can <em>change</em> to any type at any time. This is in stark contrast to other languages, such as <a href="https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_417">Apple's Swift</a>, Java, and many others. Depending on your background, you may consider PHP's lack of explicit typing to be dangerous.</p>
<p>Not only this, but PHP is not the most performant language by any means. You can see this for yourself in <a href="http://www.techempower.com/benchmarks/">TechEmpower's famous framework benchmarks</a>. These results clearly show that PHP is at or near the bottom of the pile, being beat outright by languages such as Java and Go.</p>
<p>So, how do you make one of the most popular languages in the world for web applications usable again? Many say that PHP simply needs to be killed off entirely, but Facebook disagrees.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Looking Through Glass]]></title>
            <link>http://www.andrewmunsell.com/blog/looking-through-glass</link>
            <guid>http://www.andrewmunsell.com/blog/looking-through-glass</guid>
            <pubDate>Wed, 09 Apr 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Over the course of two days in a relatively quiet area of south Seattle, one of the biggest companies in technology took over a quiet building called Sodo Park.</p>
<p>The space, a small, old looking building, is commonly used for events such as weddings, holiday parties, and other corporate gatherings. From the outside, it wasn't apparent anything was occurring at all-- only a few lone parking signs across the street gave any hint of the company's presence. But as you walked to the front door, flanked by a couple employees in nondescript black T-Shirts, it was apparent that this was more than just a "corporate event."</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Install and Secure RethinkDB on DigitalOcean]]></title>
            <link>http://www.andrewmunsell.com/blog/install-rethinkdb-digitalocean</link>
            <guid>http://www.andrewmunsell.com/blog/install-rethinkdb-digitalocean</guid>
            <pubDate>Mon, 24 Feb 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>RethinkDB is a <a href="http://rethinkdb.com/" target="_blank">distributed document-store database</a> that is focused on easy of administration and clustering. RethinkDB also features functionality such as map-reduce, sharding, multi-datacenter functionality, and distributed queries. Though the database is relatively new, it has <a href="http://rethinkdb.com/blog/funding/" target="_blank">been funded</a> and is moving quickly to add new features and a Long Term Support release.</p>
<p><img src="http://www.andrewmunsell.com/wp-content/uploads/2015/06/rethinkdb.jpg" alt="RethinkDB Home Page" width="971" height="357" class="alignnone size-full wp-image-240" /></p>
<p>One major issue still remains with RethinkDB, however-- it's relatively difficult to secure properly unless you have security group or virtual network functionality from your hosting provider (a la Amazon Web Services Virtual Private Cloud, security groups, etc.). For example, RethinkDB's web administration interface is completely unsecured when exposed to the public Internet, and the clustering port does not have any authentication mechanisms. Essentially, this means that if you have an exposed installation of RethinkDB, anyone can join your database cluster and run arbitrary queries.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[The Fight for Wireless Power]]></title>
            <link>http://www.andrewmunsell.com/blog/the-fight-for-wireless-power</link>
            <guid>http://www.andrewmunsell.com/blog/the-fight-for-wireless-power</guid>
            <pubDate>Tue, 11 Feb 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Nowadays, it's rare that a technology direct from science fiction makes it to a household appliance before your smartphone or laptop. For example, fingerprint scanners, common in some industrial and high-security applications, finally appeared in several laptops, the Motorola Photon, and most recently the iPhone 5S. But wireless charging has been integrated into electronic toothbrushes for over a decade, and yet we've seen a minimal number of consumer devices integrated with the technology.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Introducing Jekyll Themes]]></title>
            <link>http://www.andrewmunsell.com/blog/introducing-jekyll-themes</link>
            <guid>http://www.andrewmunsell.com/blog/introducing-jekyll-themes</guid>
            <pubDate>Mon, 06 Jan 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>The past week I've been busy with a small project of mine that I've been planning on getting off the ground since March of last year-- <a href="https://www.jekyllthemes.net/?utm-source=andrewmunsell.com">Jekyll Themes</a>. Jekyll Themes is a repository for authors to list themes and pre-built templates for the Jekyll static site generator.</p>
<p>While I've previously <a href="http://www.andrewmunsell.com/tutorials/jekyll-by-example">written</a> about how to create a Jekyll website from scratch, a lot of developers or bloggers don't necessarily want to spend the time designing or creating a website from a blank canvas. Thankfully, there are a lot of great themes out there, but many of theme are spread throughout individual GitHub pages and projects. Hopefully, with <a href="https://www.jekyllthemes.net/?utm-source=andrewmunsell.com">Jekyll Themes</a>, the themes scattered across the internet can be consolidated into a single listing where they are tagged by their <a href="https://www.jekyllthemes.net/item-tag/light/?utm-source=andrewmunsell.com">color scheme</a>, <a href="https://www.jekyllthemes.net/item-tag/responsive/?utm-source=andrewmunsell.com">responsive-ness</a>, or other attributes.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Kraken.io - Image Optimization Web Service]]></title>
            <link>http://www.andrewmunsell.com/blog/kraken-image-optimization-service</link>
            <guid>http://www.andrewmunsell.com/blog/kraken-image-optimization-service</guid>
            <pubDate>Fri, 03 Jan 2014 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><a href="http://kraken.io">Kraken</a> is a web service designed to perform a similar function to desktop based applications such as <a href="http://imageoptim.com">ImageOptim</a>. For as little as $7 a month (for half-a-gigabyte of images processed a month), you can have Kraken.io process your images and compress them. Alternatively, you can use their free web service by uploading files individually. The service works significantly faster than ImageOptim because of the powerful servers that they use to crunch your images.</p>
<p>But, how does it compare to the desktop equivalent?</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Using Jekyll For Blazing Fast Websites]]></title>
            <link>http://www.andrewmunsell.com/blog/using-jekyll-for-blazing-fast-websites</link>
            <guid>http://www.andrewmunsell.com/blog/using-jekyll-for-blazing-fast-websites</guid>
            <pubDate>Tue, 31 Dec 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>When I first started my blog, I used Tumblr. I didn't choose it for the social integration or community, but rather to offload the management of servers to a third party.</p>
<p>My decision was justified when one of my posts, <a href="http://www.andrewmunsell.com/blog/captchas-are-becoming-ridiculous/">Captchas Are Becoming Ridiculous</a>, hit the top spot of Hacker News. Over the course of two days, over 22,000 visitors visited my post. It's common to see the servers of front page Hacker News posts struggle or even go down entirely due to the surge of traffic, but thanks to Tumblr, my website stayed online the entire time.</p>
<p>But while Tumblr was resilient to sudden surges in traffic, the service has had its <a href="http://news.cnet.com/8301-1023_3-57558871-93/tumblr-goes-dark-with-massive-outage/">struggles</a> and periodically went offline. There's several huge, day long gaps in my Analytics-- a sign I need to move to another platform.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Deploying the Right Way: Dokku on Digital Ocean]]></title>
            <link>http://www.andrewmunsell.com/blog/dokku-tutorial-digital-ocean</link>
            <guid>http://www.andrewmunsell.com/blog/dokku-tutorial-digital-ocean</guid>
            <pubDate>Wed, 04 Dec 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>While I've previously gone over <a href="http://www.andrewmunsell.com/blog/development-environments-with-vagrant-and-puppet">development environments</a> using Vagrant and Puppet, recent advancements in LXC container management (see: <a href="http://docker.io">Docker</a>) and applications that have popped up using this technology have made deploying to staging or production environments easier-- and cheaper.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Nike's Missed Opportunity]]></title>
            <link>http://www.andrewmunsell.com/blog/nike-fuelband</link>
            <guid>http://www.andrewmunsell.com/blog/nike-fuelband</guid>
            <pubDate>Tue, 05 Nov 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>In February of 2012, Nike released the Nike+ FuelBand-- a sleek, discreet wristband that tracks your everyday activities and awards you "NikeFuel points", a proprietary metric designed to consolidate different types of activities into a universal standard. With competitors such as FitBit already gone through several iterations of high-tech wearable pedometers, Nike needed to develop a device that worked well, and looked good.</p>
<p>The original FuelBand <a href="http://amzn.to/17EfSiV" target="_blank">received mixed reviews</a>, with many users complaining about reliability over time. Despite the hardware issues, Nike's FuelBand was a solid entry into the "Quantified Self" movement that seems to be increasing in popularity.</p>
<p>Fast forward a year and a half, and the second generation Nike+ FuelBand SE device is nearly available for public consumption. But, with only small improvements in tracking and an update to the Bluetooth 4.0 standard, Nike has missed a valuable opportunity to differentiate themselves in the expanding field of wearable electronics, and instead spent over a year creating a minor iteration of its existing device.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[iOS 7's Design is Confused]]></title>
            <link>http://www.andrewmunsell.com/blog/ios7-design</link>
            <guid>http://www.andrewmunsell.com/blog/ios7-design</guid>
            <pubDate>Mon, 10 Jun 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Today, Apple unveiled the newest version of iOS 7. While the fact that the design was changed radically is not surprising, the actual changes themselves are…confusing.
</p>
<p>With Windows (Phone), Xbox, Google, and various other companies taking a "flatter" approach to UI design, it only makes sense that Apple would want to follow the trend of simplicity-- especially now that Scott Forstall, the guy known for the skeuomorphic design elements present in previous versions of iOS. After all, that is what Apple strives for (especially in their hardware).</p>
<p>iOS 7 directly reflects the transition from Forstall to Ive's rule over iOS, but are the changes truly an improvement?</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[PNG vs. WebP Image Formats]]></title>
            <link>http://www.andrewmunsell.com/blog/png-vs-webp</link>
            <guid>http://www.andrewmunsell.com/blog/png-vs-webp</guid>
            <pubDate>Tue, 04 Jun 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Previously, we went over how the new WebP image format <a href="http://www.andrewmunsell.com/blog/jpg-vs-webp">compared</a> to the traditional JPG. One neat thing about WebP is that, unlike JPG <em>or</em> PNG, WebP has the ability to use either lossy <em>or</em> lossless compression, with or without transparency. While JPG is traditionally used to display photos, which have a high level of detail and are generally more complex and can suffer from a little bit of detail loss as a tradeoff for compression, WebP can also be used like a PNG, which is often used for web graphics with transparency or subtle patterns.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[JPG vs. WebP Image Formats]]></title>
            <link>http://www.andrewmunsell.com/blog/jpg-vs-webp</link>
            <guid>http://www.andrewmunsell.com/blog/jpg-vs-webp</guid>
            <pubDate>Thu, 30 May 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>There are several kinds of file formats for images on the web. Primarily, web developers use JPG and PNG image files, depending on the content of the image itself. However, Google has made a push recently to use a new format-- called WebP-- that is supposedly more efficient than JPG, yet still has the ability to have transparency. In other words, WebP is the best of both JPG <em>and</em> PNG file formats-- but does it really reduce image file sizes?</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Taking the Work Out of Optimization: Using Mod_Pagespeed]]></title>
            <link>http://www.andrewmunsell.com/blog/using-mod-pagespeed</link>
            <guid>http://www.andrewmunsell.com/blog/using-mod-pagespeed</guid>
            <pubDate>Tue, 21 May 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Since I originally moved my blog to the Jekyll platform, I've been looking for several ways to push the performance of my website further.
</p>
<p>Over the last couple of months, I've been exploring several content distribution networks for my new web course <a href="http://andrewmunsell.com/extreme-website-performance">Extreme Website Performance</a>, such as CloudFlare and Amazon's CloudFront, as well as forgoing a CDN altogether and focusing on reducing the number of network requests used (and therefore taking the bottleneck away from the distribution servers).</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Multiple Gradients in CSS]]></title>
            <link>http://www.andrewmunsell.com/blog/multiple-gradients-css</link>
            <guid>http://www.andrewmunsell.com/blog/multiple-gradients-css</guid>
            <pubDate>Mon, 20 May 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Recently, a Redditor <a href="http://www.reddit.com/r/web_design/comments/1epmsl/anyone_know_how_to_create_these_kinds_of_gradients/">asked</a> whether it was possible to create a background that looked <a href="http://dribbble.com/shots/864910-Ui-Kit/attachments/92273">like this UI mockup</a> by Mike from <a href="http://dribbble.com/creativemints">Creative Mints</a>.</p>
<p>In fact, it's quite easy to do so using multiple background images in CSS. The following solution requires no images, though it does require a browser to support multiple background images and radial CSS gradients.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Now is the Future]]></title>
            <link>http://www.andrewmunsell.com/blog/now-is-the-future</link>
            <guid>http://www.andrewmunsell.com/blog/now-is-the-future</guid>
            <pubDate>Wed, 15 May 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I've had an iPhone for about a year and a half now, after previously owning a Windows Phone and Palm Pre. Each time I switch platforms, there's something I miss from my previous experiences, and something I long for in a platform I haven't tried yet. For me, Google Now for Android was this feature that I so desperately wanted to try.</p>
<p>A couple of weeks ago, Google released an update for the Google Search app on the iPhone, with Google Now as the headline feature. A while back, it <a href="http://www.macrumors.com/2013/03/21/eric-schmidt-on-google-now-for-ios-youll-need-to-discuss-that-with-apple/">was rumored</a> that Google would be releasing this update with Now baked in, though this rumor was <a href="http://news.cnet.com/8301-13579_3-57575626-37/apple-google-google-now-not-submitted-to-app-store/">shot down</a> by Apple, and Google later admitted that Eric Schmidt's comments were not necessarily accurate (or, rather, not interpreted correctly).</p>
<p>Recently, Google Now was also featured at Google's I/O conference. In addition to new cards, such as location aware reminders and public transit information, Google revealed several new services designed with a similar goal to Now-- to make your life easier, and to delve deeper into your personal information.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Development Environments the Right Way with Vagrant and Puppet]]></title>
            <link>http://www.andrewmunsell.com/blog/development-environments-with-vagrant-and-puppet</link>
            <guid>http://www.andrewmunsell.com/blog/development-environments-with-vagrant-and-puppet</guid>
            <pubDate>Thu, 25 Apr 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>As long as I can remember, I have used some form of MAMP/WAMP stack for development. I'd download the entire stack pre-packaged with some sort of control console, and develop web applications straight out of my Dropbox folder (with Git as version control), changing the web root of the *AMP configuration depending on which project I am working on.</p>
<p>This worked fine for many years, but recently I've discovered the magic of <a href="http://vagrantup.com/">Vagrant</a> and <a href="http://puppetlabs.com/">Puppet</a>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Pebble Watch Review]]></title>
            <link>http://www.andrewmunsell.com/blog/pebble-watch-review</link>
            <guid>http://www.andrewmunsell.com/blog/pebble-watch-review</guid>
            <pubDate>Thu, 11 Apr 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Almost a year ago, a new and innovative project was published on Kickstarter. Expecting to make only a couple thousand watches at most, Pebble was completely unaware of the impact their product would make in the coming months.</p>
<p>Ten million dollars later, the Pebble smart watch shattered Kickstarter's record for the most money funded for a project and had the task of coordinating the design and manufacturing of over 80,000 watches to some 65,000 Kickstarter backers around the world. Despite selling out of the watch on the crowd funding website, Pebble's success was reinforced when they continued to sell pre-orders on their website.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Facebook Home - What Can Go Horribly Wrong]]></title>
            <link>http://www.andrewmunsell.com/blog/facebook-home-gone-wrong</link>
            <guid>http://www.andrewmunsell.com/blog/facebook-home-gone-wrong</guid>
            <pubDate>Thu, 04 Apr 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Today, Facebook launched their new <a href="https://www.facebook.com/home">"Home" experience</a> and the HTC First. Conceptually, the Android home screen replacement seems like a fantastic idea-- it places bright, large photos on your lock screen that can be swiped through when you have a free moment, and focuses on your friends.</p>
<p>But, there's a fundamental issue with placing user generated content on your home screen.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[1&1 Asks for Your Password to Cancel Your Account]]></title>
            <link>http://www.andrewmunsell.com/blog/one-and-one-asks-for-your-password</link>
            <guid>http://www.andrewmunsell.com/blog/one-and-one-asks-for-your-password</guid>
            <pubDate>Tue, 02 Apr 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>After a couple of long years using 1&amp;1 Shared Hosting and Virtual Private Servers, I've completely migrated all of my hosting to <a href="http://digitalocean.com/">Digital Ocean</a> and <a href="http://heroku.com">Heroku</a>, and my domains to <a href="http://namecheap.com">Namecheap</a>. And after trying to cancel my 1&amp;1 account, I now have complete justification for doing so.</p>
<p>1&1's experience has always been similar to that of a larger company, with over complicated systems and procedures to do simple things. Contacting their support means waiting through a phone queue, domains sometimes can take forever to switch name servers (though the process in itself takes a while on any provider, 1&1 seems particularly slow), and the various FTP and database account management systems are nightmares.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Please, Stop Helping the Hackers Guess My Passwords]]></title>
            <link>http://www.andrewmunsell.com/blog/passwords</link>
            <guid>http://www.andrewmunsell.com/blog/passwords</guid>
            <pubDate>Mon, 11 Mar 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>There have been numerous high profile hacking attempts (and successes) in recent months and years. In 2012 alone, millions of accounts' hashed passwords and other sensitive information was stolen across tens of different websites:</p>
<ul>
<li>Zappos: 24 million accounts' passwords and email addresses exposed</li>
<li>Global Payments: 1.5 million credit card numbers exposed</li>
<li>LinkedIn: 6.5 million hashed passwords stolen-- many of which weren't salted</li>
<li>eHarmony: 1.5 million hashed passwords exposed</li>
<li>Last.fm: Passwords compromised</li>
<li>Yahoo: 450,000 passwords leaked-- in plain text</li>
</ul>
<p>By now, I'm sure you get the point-- your information is never safe. When you input your credit card number or password into to a website, you're trusting they've taken the necessary precautions to safeguard this data. The reality is, there's a lot of business that do not implement decent security practices.</p>
<p>In fact, the worst offenders not only store your password insecurely, but they <em>prevent</em> you from protecting yourself properly. In the event of a leak in which password hashes are made public, having an extremely secure password is the only way to keep yourself protected. A secure password can be composed of random letters, numbers, symbols, or even a long sentence that you remember. The issue is, not all sites let you use these kinds of secure passwords.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Review: Mailbox for iPhone - Email, But A Little Better]]></title>
            <link>http://www.andrewmunsell.com/blog/mailbox-iphone-review</link>
            <guid>http://www.andrewmunsell.com/blog/mailbox-iphone-review</guid>
            <pubDate>Mon, 18 Feb 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Email is something most working people deal with every day, and have been dealing with for a long time. It's never fun to open your email inbox at the beginning of a work day and see a mix of help requests, advertisements, and the truly important stuff all mixed into a big list of words and colors.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[How To Control Adafruit LED Pixels with Raspberry Pi]]></title>
            <link>http://www.andrewmunsell.com/blog/raspberry-pi-leds</link>
            <guid>http://www.andrewmunsell.com/blog/raspberry-pi-leds</guid>
            <pubDate>Wed, 13 Feb 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>In my room, my bed is lofted above my desk. While I like the setup, it becomes a little difficult to see and study because the only source of light in the room is obscured slightly. Unfortunately, because I'm in Seattle and we have rain and overcast weather from September to July, sunlight isn't an option.</p>
<p>I could always buy a lamp, but why do that when I can have a little fun tinkering with technology? I also had a Raspberry Pi sitting on my desk, so I decided I would put it to use. The completed project, which I call PiFX, can be recreated with the steps below.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Learning Jekyll By Example - The Ultimate Jekyll Tutorial]]></title>
            <link>http://www.andrewmunsell.com/blog/ultimate-jekyll-tutorial</link>
            <guid>http://www.andrewmunsell.com/blog/ultimate-jekyll-tutorial</guid>
            <pubDate>Sun, 10 Feb 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I've been working on this tutorial for the last few months, and it's finally ready. You can <a href="http://www.andrewmunsell.com/tutorials/jekyll-by-example">read the tutorial for free</a> or <a href="http://leanpub.com/jekyll">purchase the E-Book</a> version to support me and future tutorials.</p>
<p>Jekyll is a static website generator that takes Markdown, Textile, HTML, or other formats and transforms them into a complete static website. The platform is extremely customizable and extensible.</p>
<p>While building a Jekyll website isn't for everyone, it is a powerful platform that allows your website to perform great and be extremely secure. In fact, I run my own blog off of Jekyll, Amazon S3, and CloudFront. <a href="http://www.andrewmunsell.com/tutorials/jekyll-by-example">"Learning Jekyll By Example"</a> walks you through this entire process, so if you'd like to learn how to setup your blog in the same fashion, this tutorial is for you.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Always Connected: Cookoo Watch Review]]></title>
            <link>http://www.andrewmunsell.com/blog/always-connected-cookoo-watch-review</link>
            <guid>http://www.andrewmunsell.com/blog/always-connected-cookoo-watch-review</guid>
            <pubDate>Fri, 01 Feb 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Many years ago, I received a Timex Internet Messenger watch. Back then, my parents used it to send me a message when it was time to come inside after a day of playing with my friends in the neighborhood (like I said, this was a long time ago). I loved the thing, and I'm not entirely sure why-- it was just a watch.</p>
<p>But my obsession with the Timex was an indicator of a budding obsession for the latest technology. At this point, I didn't have a cell phone or laptop, and I barely had my own desktop computer for the little homework I had. Yet I was still fascinated with the ability to receive a message on my wrist, and always be connected-- even it was just to my parents.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[ThreeBar Launched]]></title>
            <link>http://www.andrewmunsell.com/blog/threebar-launched</link>
            <guid>http://www.andrewmunsell.com/blog/threebar-launched</guid>
            <pubDate>Sun, 27 Jan 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>If you've recently noticed a little bar appearing at the top of your screen on this website asking you to follow me on Twitter, then you've already experienced <a href="https://threebar.net">ThreeBar</a>, a new service I've been working on.</p>
<p>In summary, ThreeBar is a welcome bar service that allows you to promote content to your visitors. Whether you're looking to draw visitors to your book's home page, get people to follow you on Twitter, or simply say hello, ThreeBar is designed for you.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Getting Started with Raspberry Pi: Installing Raspbian]]></title>
            <link>http://www.andrewmunsell.com/blog/getting-started-raspberry-pi-install-raspbian</link>
            <guid>http://www.andrewmunsell.com/blog/getting-started-raspberry-pi-install-raspbian</guid>
            <pubDate>Mon, 14 Jan 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Now that you have a Raspberry Pi and want to set it up with an operating system (need to buy a Raspberry Pi? Get one <a href="http://amzn.to/1c1GneQ" target="_blank">on Amazon</a>), you have several choices. If you're primarily using the Raspberry Pi as a media center, you may want to consider installing <a href="http://www.raspbmc.com/">RaspBMC</a>, a custom distribution of XBMC. This will allow your Raspberry Pi to boot directly into a media center interface.</p>
<p>But if you're looking to use your Raspberry Pi as a general computer, you may want to consider the Raspbian distribution. Raspbian is a version of Debian Linux specifically configured to run on the Raspberry Pi and is recommended by the Raspberry Pi Foundation as the operating system to install.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Pixi Dust for Windows 8]]></title>
            <link>http://www.andrewmunsell.com/blog/pixi-dust-for-windows</link>
            <guid>http://www.andrewmunsell.com/blog/pixi-dust-for-windows</guid>
            <pubDate>Mon, 14 Jan 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>In 2010, Pixi Dust made a splash in the WebOS App Market, garnering over 100,000 downloads on the Palm Pre alone. I'm happy to announce that Pixi Dust is now available for Windows 8 tablets and desktops, from the Microsoft Surface RT to the most powerful multi-core x86 gaming desktops.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Recap: CES 2013]]></title>
            <link>http://www.andrewmunsell.com/blog/ces-2013-recap</link>
            <guid>http://www.andrewmunsell.com/blog/ces-2013-recap</guid>
            <pubDate>Sun, 13 Jan 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>CES 2013 ended on Friday, and I just arrived back in Seattle this morning. This year's CES was the first I've attended, and there are a few products and companies that surprised or impressed me.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[I Hope Your Kickstarter Project Stays Off CNN]]></title>
            <link>http://www.andrewmunsell.com/blog/kickstarter-misconceptions</link>
            <guid>http://www.andrewmunsell.com/blog/kickstarter-misconceptions</guid>
            <pubDate>Thu, 03 Jan 2013 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Kickstarter has seen its fair share of successful projects in 2012. From the Ouya game console, to the FORM 1 3D printer, to the Pebble smart watch (which I backed myself), millions of dollars have been invested into projects from startups and individuals. To show what a great year 2012 was, out of the 39 projects listed on Kickstarter's <a href="http://www.kickstarter.com/discover/most-funded">"Most Funded" page</a>, all but four were funded in this last year.</p>
<p>The rising popularity of Kickstarter and sheer volume of money being invested is fantastic-- it allows for a small startup or individual to have an idea, and <em>make it reality</em>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Using Hamachi to Access Your VM]]></title>
            <link>http://www.andrewmunsell.com/blog/using-hamachi-to-access-your-vm</link>
            <guid>http://www.andrewmunsell.com/blog/using-hamachi-to-access-your-vm</guid>
            <pubDate>Tue, 25 Dec 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I recently wrote about <a href="http://blog.andrewmunsell.com/post/38732510835/how-to-install-gitlab-locally-in-a-virtual-machine">using virtual machines to host your own GitLab instance</a>. In that post, I suggested setting a static IP address for your virtual machines so they are accessible through a fixed address. Unfortunately, issues with networking and allowing the VMs to access the outside internet forced me to look for an alternate solution. Recently, I discovered a better way of accessing these VMs that also gives them internet access and a static IP address-- through a VPN using Hamachi.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[How to Install GitLab Locally in a Virtual Machine]]></title>
            <link>http://www.andrewmunsell.com/blog/how-to-install-gitlab-locally-in-a-vm</link>
            <guid>http://www.andrewmunsell.com/blog/how-to-install-gitlab-locally-in-a-vm</guid>
            <pubDate>Mon, 24 Dec 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><a href="http://www.gitlabhq.com/">GitLab</a> is an open source clone of the popular <a href="http://github.com">GitHub</a> service. In a lot of ways, it is similar to <a href="https://enterprise.github.com/">GitHub's Enterprise solution</a> or <a href="https://www.atlassian.com/software/stash/overview">Atlassin Stash</a>-- it allows you to host Git repositories and a management interface yourself, potentially within your company's firewall.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Intro to Adobe Brackets]]></title>
            <link>http://www.andrewmunsell.com/blog/intro-to-adobe-brackets</link>
            <guid>http://www.andrewmunsell.com/blog/intro-to-adobe-brackets</guid>
            <pubDate>Sat, 22 Dec 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><a href="http://brackets.io">Adobe Brackets</a> is a new text editor by Adobe built in Javascript. It certainly has some stiff competition from long time favorites like <a href="http://macromates.com/">TextMate</a> and <a href="http://www.sublimetext.com/">Sublime Text 2</a> (my personal favorite and daily driver), but I personally have my doubts as to its future success.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Moving from Amazon EC2 to Heroku]]></title>
            <link>http://www.andrewmunsell.com/blog/moving-from-ec2-to-heroku</link>
            <guid>http://www.andrewmunsell.com/blog/moving-from-ec2-to-heroku</guid>
            <pubDate>Sat, 22 Dec 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Recently I've been making the transition from my own Amazon EC2 server to Heroku. I've had some experience in the past with managing servers, but ultimately, I'm a developer, not a sysadmin. This meant that I was constantly hacking together a server that <em>worked</em>, but it never ran particularly well.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Computer Science Tests are Like It's 1984]]></title>
            <link>http://www.andrewmunsell.com/blog/computer-science-tests-are-like-its-1984</link>
            <guid>http://www.andrewmunsell.com/blog/computer-science-tests-are-like-its-1984</guid>
            <pubDate>Fri, 14 Dec 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I recently completed the second level of Computer Science courses (CSE 143) at the University of Washington. If you know me and talk to me in person, you probably know that I am <em>not</em> majoring in Computer Science, and would go so far to say I actually <em>dislike</em> the major. While this is a topic for another day, CSE tests have always bugged me.</p>
<p>The basic level Computer Science tests are outdated, and in my opinion, not necessarily indicative of a student's true programming skill.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Your Medical Records Aren't Always Safe: The Important of Security in Medicine]]></title>
            <link>http://www.andrewmunsell.com/blog/your-medical-records-arent-always-safe</link>
            <guid>http://www.andrewmunsell.com/blog/your-medical-records-arent-always-safe</guid>
            <pubDate>Thu, 29 Nov 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Recently, I attended and presented at the 2012 Radiological Society of North America (RSNA) conference in Chicago, Illinois. RSNA is a massive gathering-- one of the largest in the world--and is a venue for manufacturers and medical software companies to show off the latest Radiology equipment and software. Being a software developer, I sought out several presentations by Radiology residents and graduate students that pertained to technology and medical software. During one of the hands on courses, in which the audience participated in the setup of web based Radiology software (including launching XAMPP and navigating PHPMyAdmin to view the MySQL table structure), I noticed something extremely peculiar.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[The Nightmare of Android App Publishing]]></title>
            <link>http://www.andrewmunsell.com/blog/the-nightmare-of-android-publishing</link>
            <guid>http://www.andrewmunsell.com/blog/the-nightmare-of-android-publishing</guid>
            <pubDate>Tue, 20 Nov 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I've done a lot of mobile development. From the small platforms, such as WebOS (great platform, terrible performance) and the Blackberry Playbook (I. Hate. Flash.), to Apple's iOS. One realm I'd never set foot in before today is the world of Android.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[iPad Mini]]></title>
            <link>http://www.andrewmunsell.com/blog/ipad-mini</link>
            <guid>http://www.andrewmunsell.com/blog/ipad-mini</guid>
            <pubDate>Wed, 07 Nov 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Well, <a href="https://www.andrewmunsell.com/blog/where-does-the-ipad-mini-fit-in/">I was close</a>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Where Does the iPad Mini Fit In?]]></title>
            <link>http://www.andrewmunsell.com/blog/where-does-the-ipad-mini-fit-in</link>
            <guid>http://www.andrewmunsell.com/blog/where-does-the-ipad-mini-fit-in</guid>
            <pubDate>Wed, 12 Sep 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>In case you didn’t hear, Apple announced the <a href="http://www.apple.com/iphone/">iPhone 5</a>, new <a href="http://www.apple.com/ipod-touch/">iPod Touch</a>, and <a href="http://www.apple.com/ipod-nano/">new iPod Nano</a>. While I personally didn’t expect the appearance of an iPad Mini at this event, it does leave me wondering exactly <em>where</em> the iPad Mini will fit in.</p>
<p>The new iPod/iPad pricing lineup consists of the following:</p>
<ol>
<li>iPod Shuffle at $49</li>
<li>iPod Nano at $149</li>
<li>iPod Touch (4th Gen) at $199</li>
<li>iPod Touch (5th Gen) at $299</li>
<li>iPad 16 GB at $499</li>
</ol>
<p>So, where exactly does the iPad Mini fit in? At $399? That’s not exactly competitive compared to Amazon’s new <a href="http://amzn.to/NoYfYU">Kindle Fire HD</a>, which starts at $199. It’d be pretty easy for someone to say, “the iPad Mini is double the price of the Fire and is the same size.” And the larger <a href="http://amzn.to/NoYjrU">Kindle Fire HD 8.9"</a>, which is closer to the original iPad’s size, is only $300.</p>
<p>But Apple wouldn’t price the iPad Mini at $299– the same price as the iPod Touch–which leaves one price point left: $350. This is still cheap enough in the consumer’s mind (it isn’t “$400”), and yet it doesn’t occupy the price point of the iPod Touch. It also distances it from the regular sized iPad.</p>
<p>In any event, you certainly won’t be seeing an iPad Mini for $299 or less.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Underpants and Non Existent Touch Screens: The Decline of Gizmodo]]></title>
            <link>http://www.andrewmunsell.com/blog/underpants-and-non-existent-touchscreens-the-fall-of-gizmodo</link>
            <guid>http://www.andrewmunsell.com/blog/underpants-and-non-existent-touchscreens-the-fall-of-gizmodo</guid>
            <pubDate>Mon, 10 Sep 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Every morning, I wake up, open my laptop, and open a specific set of sites. I eat my breakfast while reading, save some pages for the bus ride, and then head to work. Every morning, it’s the same set of sites.</p>
<p><a href="http://news.ycombinator.com">Hacker News</a> is a new favorite of mine. It’s a great resource for some good articles to read. <a href="http://engadget.com">Engadget</a>, despite having a poor reputation for the quality of its comments, is still a great tech blog. <a href="http://theverge.com">The Verge</a> is relatively new, but like Engadget, it’s a great place for news on computers and electronics.</p>
<p>And there’s <a href="http://lifehacker.com">Lifehacker</a>, which has some interesting tips and tricks, while <a href="http://macrumors.com">Macrumors</a> has all of the Mac news I could possibly need.</p>
<p>There’s also <a href="http://twitter.com/andrewmunsell">my Twitter feed</a>. I follow a couple of Node.JS news bots, as well as some designers, developers, and products such as the <a href="http://getpebble.com/">Pebble</a>. It makes for a great source of quick news snippets.</p>
<p>And then there’s Gizmodo.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Wall of Text Experiment with Node.js]]></title>
            <link>http://www.andrewmunsell.com/blog/wall-of-text-experiment</link>
            <guid>http://www.andrewmunsell.com/blog/wall-of-text-experiment</guid>
            <pubDate>Wed, 22 Aug 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><em>Update: The experiment has been taken down due to Nodejitsu shutting down their free plans. I'll look into reuploading it at some point.</em></p>
<p>I've been working pretty hard on one of my projects and decided to take a small break and do a little experiment. A while ago (years?), I saw a website that allowed anyone to type anywhere on the screen. I decided to take a couple of hours tonight and recreate it using Node.JS.</p>
<p>My version of the Wall of Text app is <a href="http://walloftext.jit.su/">available here</a>.</p>
<p>It's built with Node.JS, Socket.IO, and Express (which really was unnecessary, but I was lazy and didn't want to work with the vanilla Node.JS HTTP server). <a href="http://nodejitsu.com">Nodejitsu</a> is providing the hosting.</p>
<p>I'm looking into making it into an infinite canvas, but for now, it extends as far as your screen goes. I suppose if you had a <i>really</i> big screen it would go infinitely... Those with 1080p+ monitors will be able to see beyond those with smaller resolutions. It's sort of an exclusive club if you can see the text on the outskirts of the wall ;)</p>
<p>The wall resets every six hours and shows the number of users connected in the bottom right hand corner of the screen.</p>
<p>tl;dr</p>
<p>See it <a href="http://walloftext.jit.su/">here</a>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Moore's Law of the Mind: How Technology is Changing the Way We Think for the Better]]></title>
            <link>http://www.andrewmunsell.com/blog/moores-law-of-the-mind</link>
            <guid>http://www.andrewmunsell.com/blog/moores-law-of-the-mind</guid>
            <pubDate>Mon, 20 Aug 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Around a year and a half ago my Pre-AP English class was assigned a culminating project. This graduation requirement consisted of a 2500 word paper as well as a short presentation. We were prompted to choose a point of contention in the modern world, pose it as a question, gather arguments from debates and other sources, and format it as an essay to convince the reader of a certain position.</p>
<p>I chose, “is technology making us stupider?”</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[The (Odd) State of Node.js and its Frameworks]]></title>
            <link>http://www.andrewmunsell.com/blog/the-odd-state-of-nodejs-and-its-frameworks</link>
            <guid>http://www.andrewmunsell.com/blog/the-odd-state-of-nodejs-and-its-frameworks</guid>
            <pubDate>Fri, 17 Aug 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Recently I <a href="http://ocdevel.com/blog/nodejs-frameworks-comparison" target="_blank">read</a> a Node.JS framework roundup on OCDevel comparing Derby.JS, Meteor, SocketStream, TowerJS, and Express. The author expressed preference for Derby.JS, but I’m not 100% convinced that is really the best choice.</p>
<p>Don’t get me wrong– I think Derby.js is a fantastic (start) of a framework, and I would love to be <em>able</em> to use it, but I can’t for one simple, but big, reason. It’s no where near production ready.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Build Something Useless]]></title>
            <link>http://www.andrewmunsell.com/blog/build-something-useless</link>
            <guid>http://www.andrewmunsell.com/blog/build-something-useless</guid>
            <pubDate>Mon, 06 Aug 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Around eight years ago, I sat down at the computer for the first time as a programmer. Little did I know, the simple, tacky website I built was the first step towards the person I am today.</p>
<p>I still remember the two paned, frame based website I built. It was terrible, with solid yellow backgrounds, and existed solely to show off photos of my new dog. This was back in the day when Microsoft FrontPage still ruled. During the winter, I made snowflakes drift down the page slowly using Javascript snippets from various websites, and during a power outage one year I built a Flash version of the site that mirrored my dark house with only virtual candle to light up the content. Really, everything I made or did was seen by a handful of people that landed on my site from a Google query. And I still have no clue exactly <em>what</em> they searched to get there.</p>
<p>Recently, on a website called <a href="http://forrst.com" target="_blank">Forrst</a>, someone posted a question: “how did you all get in the position that you all are in?”</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Introduction to Realtime Web with Meteor and Node.js]]></title>
            <link>http://www.andrewmunsell.com/blog/introduction-to-realtime-web-meteor-and-nodejs</link>
            <guid>http://www.andrewmunsell.com/blog/introduction-to-realtime-web-meteor-and-nodejs</guid>
            <pubDate>Thu, 02 Aug 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Recently, there was a flurry of tweets that appeared on my Twitter timeline talking about <a href="http://derbyjs.com">Derby.js</a>. I’ve never used a framework that did so <em>much</em> for you– realtime synchronization of the client and server. Essentially, this enables one to write an application in which two users edit the same text field–live–without writing too much code yourself. Derby handles all of the synchronization of the models and views. Think Google Docs collaborative editing.</p>
<p>That’s great, but after further investigation, it seems like Derby.js isn’t quite as mature as I’d like– it’s not 1.0 yet. To be fair, neither is Node.js (the platform behind Derby) or Meteor, but there seems to be quite a bit missing from Derby. For example, as far as I can tell, there’s no easy way to handle sessions. This may be a result of a lack of documentation, but it appears that the developers behind Derby are working on authentication at this moment. If anyone has writeup on how to handle sessions in Derby, I’d live to hear about it.</p>
<p>The one framework I always see compared to Derby.js is called <a href="http://meteor.com/">Meteor</a>. Similar to Derby, it handles things such as updating views live across multiple clients, though Meteor does it somewhat differently. While Derby is designed to be easier to use with different types of database systems, Meteor works closely with <a href="http://mongodb.org/">MongoDB</a>. In fact, the client API for accessing the database is almost exactly like what you’d expect on the server-side with something like <a href="http://mongoosejs.com/">Mongoose</a>.</p>
<p>While there are some drawbacks and <a href="http://bjouhier.wordpress.com/2012/03/11/fibers-and-threads-in-node-js-what-for/">controversies</a> surrounding the framework (see <a href="https://github.com/laverdet/node-fibers">Fibers</a> vs Callbacks), Meteor looks like a pretty interesting option when creating an app that requires realtime feedback. Personally, I’m more attracted to the traditional callback style of programming of Derby, but the lack of robust documentation and a large developer community behind it is a huge blow to Derby’s usefulness. This will change over time, but at a much slower rate than Meteor, which recently <a href="http://venturebeat.com/2012/07/25/meteor-funding/">received</a> $11M+ in funding. This financial backing ensures that Meteor will remain around and supported, and for developers who need a financially and developmentally stable framework, the funding will only make Meteor more appealing.</p>
<p>Today, I want to go over how to create a really simple Meteor app. Essentially, this is a writeup for <a href="http://vimeo.com/40300075">Tom's Vimeo screencast</a>. One major difference between my writeup and Tom's video tutorial is the way we handle events in Meteor. Rather than copying and pasting code from one of Meteor's examples, I take you step by step through a custom implementation of handling the enter key press to submit a message. Let's begin!</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Captchas Are Becoming Ridiculous]]></title>
            <link>http://www.andrewmunsell.com/blog/captchas-are-becoming-ridiculous</link>
            <guid>http://www.andrewmunsell.com/blog/captchas-are-becoming-ridiculous</guid>
            <pubDate>Sat, 28 Jul 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>A couple of years ago, I don’t remember being truly baffled by a captcha. In fact, reCAPTCHA was one of the better systems I’d seen. It wasn’t difficult to solve, and it seemed to work when I used it on my own websites.</p>
<p>Fast forward to 2012, and I am trying to log into my Envato Marketplace account on <a href="http://graphicriver.net/">Graphic River</a>. I haven’t been there in a few months, and recently I’ve been working on changing my passwords to be unique-per-site. Understandably, I forgot my password.</p>
<p>But I didn’t <em>entirely</em> forget my password— I knew there are three possible passwords, across two possible usernames. Rather than going through the entire reset password process, which is a hastle and a last resort, I decided to try and guess. After a couple of attempts and failures, I was presented with a <a href="http://recaptcha.org/">reCAPTCHA</a>.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Debugging in Appcelerator Titanium]]></title>
            <link>http://www.andrewmunsell.com/blog/debugging-in-appcelerator-titanium</link>
            <guid>http://www.andrewmunsell.com/blog/debugging-in-appcelerator-titanium</guid>
            <pubDate>Sun, 15 Jul 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I’m working on a new project for iOS, and instead of using Objective-C, I decided to use Appcelerator Titanium again to help speed up development— even though I said I would never use it again.</p>
<p>A long time ago (in the iPad 1 days), I used Appcelerator to build an app called LOL. The problem was, there was a huge memory leak caused by a bug in the framework. Images were not properly released, resulting in a pile up of memory. This was a huge issue because of the 256mb of RAM the iPad 1 had. I published the app after fixing some of the bugs in the framework myself, but there were still issues. I ended up rewriting the <em>entire</em> app natively in Objective-C.</p>
<p>Some two years later, I am back to iOS development. While I did work on a Mac OS X app between “LOL” and now, my Objective-C is rusty, and a lot has changed in the newest versions of iOS. Automatic reference counting (ARC) now solves my worst nightmare for me. Rather than relearn Objective-C, I opted to once again use Appcelerator.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Using the Raspberry Pi to Send Push Notifications]]></title>
            <link>http://www.andrewmunsell.com/blog/raspberry-pi-push-notifications</link>
            <guid>http://www.andrewmunsell.com/blog/raspberry-pi-push-notifications</guid>
            <pubDate>Wed, 13 Jun 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>One reason I wanted to have a Raspberry Pi was to be able to cheaply run periodic scripts and monitoring apps. I could have easily left on a full PC and hid it in my closet, or I could have rented out another Amazon EC2 server, but in both cases, it’s quite expensive. With the dedicated PC, there is a significant up front cost, and depending on the power efficiency of the computer, it could cost me monthly as well in the form of an electricity bill. Amazon EC2, on the other hand, costs anywhere from $20 up to hundreds of dollars a <em>month</em>, which is fine if you need the full power of a server to run a website, but not ok for hacking together some stuff.</p>
<p>With the Raspberry Pi, I have a low cost ($35) and low power device that I can always leave on, without worrying about heat building up in a case or a large power bill— after all, the entire thing runs on a Micro USB port.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Upgrading the Raspberry Pi's SD Card]]></title>
            <link>http://www.andrewmunsell.com/blog/upgrading-raspberry-pi-sd-card</link>
            <guid>http://www.andrewmunsell.com/blog/upgrading-raspberry-pi-sd-card</guid>
            <pubDate>Mon, 11 Jun 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>I've been running my Raspberry Pi on a really old 2GB SanDisk Ultra SD card. It worked fine, but it wasn't fast, and there certainly wasn't that much free space to do anything on. After installing a bunch of packages, compiling Node.js, and cloning a couple of Git repositories, I ran out of space.</p>
<p>I had a Transcend 4GB SD card lying around, and wanted to transfer the entire contents of the older SD card to the larger one.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[Setting up the Raspberry Pi as a Headless Device]]></title>
            <link>http://www.andrewmunsell.com/blog/setting-up-raspberry-pi-as-headless-device</link>
            <guid>http://www.andrewmunsell.com/blog/setting-up-raspberry-pi-as-headless-device</guid>
            <pubDate>Sun, 10 Jun 2012 00:00:00 +0000</pubDate>
            <description><![CDATA[<p><i>Wondering <a href="http://www.andrewmunsell.com/blog/getting-started-raspberry-pi-install-raspbian">how to install the Raspbian operating system</a> on your Raspberry Pi? I've <a href="http://www.andrewmunsell.com/blog/getting-started-raspberry-pi-install-raspbian">created a guide for that</a> as well.</i></p>
<p>After receiving my Raspberry Pi, I began to look for a place to plug it into. I've always assumed that at least one of my two monitors sitting on my desk had an HDMI port, but I've always used DVI. I happened to be wrong-- neither of them had HDMI, meaning I had to commandeer a television somewhere else in my house.</p>
<p>I plugged the device into a 55" TV in my living room and booted it up with a 2GB SD card I had prepared earlier and began installing some things that would allow me to run the device headless. This is important, because I do not want to be forced to sit on the floor in front of the TV every time I want to use the Raspberry.</p>
]]></description>
        </item>
        
        <item>
            <title><![CDATA[PhoneTextBox in the Silverlight Toolkit]]></title>
            <link>http://www.andrewmunsell.com/blog/phonetextbox-silverlight-toolkit</link>
            <guid>http://www.andrewmunsell.com/blog/phonetextbox-silverlight-toolkit</guid>
            <pubDate>Wed, 17 Aug 2011 00:00:00 +0000</pubDate>
            <description><![CDATA[<p>Today the Windows Phone and Silverlight teams at Microsoft released an update to the Silverlight Toolkit. The toolkit is an open source collection of controls that Windows Phone 7 developers can use in their applications. In addition, the kit is localized into all 21 languages supported by WP7 “Mango.”</p>
<p>The Windows Phone Developer Blog has a <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/17/the-silverlight-for-windows-phone-toolkit-is-now-available-for-mango-application-development.aspx">complete list</a> of the new controls:</p>
<blockquote><p> <strong>LongListSelector</strong> has been rebuilt and redesigned to take advantage of the new smooth scrolling and off-thread touch input support in ‘Mango’. This is a buttery-smooth control for showing lists, including grouping and jump list support.</p>
<p><strong>MultiselectList</strong> control enables multiple selection for easily working with lists of data, similar to the Mail app’s capability.</p>
<p><strong>LockablePivot</strong> adds a special mode to the Pivot control where only the current item is shown (often used with multiple selection).</p>
<p><strong>ExpanderView</strong> is a primitive items control that can be used for expanding and collapsing items (like the threaded views in the Mail app).</p>
<p><strong>HubTile</strong> lets you add beautiful, informative, animated tiles to your application, similar to the new People groups in ‘Mango’.</p>
<p><strong>ContextMenu</strong> control has been reworked: performance improvements and visual consistency fixes.</p>
<p><strong>ListPicker</strong> now supports multiple selection.</p>
<p><strong>RecurringDaysPicker</strong> lets your users select a day of the week.</p>
<p><strong>Date &amp; Time Converters </strong>localized to 22 languages. The converters let developers easily display date and time in the user interface in one of the many styles found throughout the phone’s UI, from a short date like ‘7/19’ to relative times like ‘about a month ago’.</p>
<p><strong>Page Transitions</strong> have improved performance for a more responsive feel.</p>
<p><strong>PhoneTextBox</strong> is an early look at an enhanced text box with action icon support, watermarking, etc.</p>
<p><strong>All error messages and interface elements</strong> have been localized to all of the supported languages, making for a great experience for users around the world.</p></blockquote>
<h2>PhoneTextBox</h2>
<p>Among these new controls and features is the PhoneTextBox, an addition developed by me during my internship at Microsoft this summer. This simple control adds a lot of new functionality to the Silverlight TextBox and is really easy to use.</p>
<p>To use it in your app, make sure that the toolkit is referenced in your application and that you have added the XML Namespace in your XAML. If you are already using the Toolkit in your app you won’t have to do this again.</p>
<p>After that’s done, you can simply replace any existing references of the Silverlight TextBox with the PhoneTextBox. For example:</p>
<pre><code>&lt;toolkit:PhoneTextBox Text="Hello World!" /&gt;</code></pre>
<h3>Hint Text</h3>
<p>One of the three new features in the PhoneTextBox is "Hint Text." It's kind of like the Placeholder in HTML5. While the WP7 Developer Documentation states that there is a Watermark attribute to the TextBox, it was never implemented and is a dead end. The PhoneTextBox implements this feature by adding a couple of new properties:</p>
<p><strong>Hint- </strong>A string that will be displayed in the text box when there is no Text and the control is not in focus.</p>
<p><strong>HintStyle-</strong> This allows you to customize the style of the Hint.</p>
<h3>Action Icon</h3>
<p>The second feature of the PhoneTextBox is called the "Action Icon," a small, 26 by 26 pixel icon that sits in the (bottom) right hand corner. Developers can attach events to the icon that will be called when the icon is tapped.</p>
<p><strong>ActionIcon-</strong> An ImageSource that will be displayed on the right side of the control. If the text box is multiline or supports wrapping, it will be shown in the bottom right.</p>
<p><strong>ActionIconTapped- </strong>An event that is called when the action icon is tapped. The control will <em>not</em> get focus or open the keyboard when the icon is tapped.</p>
<h3>Length Indicator</h3>
<p>Lastly, there is a length indicator built into the PhoneTextBox that can prevent users from entering more than a certain number of characters, but provide feedback as to how many characters they have already input.</p>
<p>This feature is more complex and flexible because it has a few different "modes" of operation. First, a developer can simply set a MaxLength and set the LengthIndicatorVisibility to true. The length indicator will always be visible and will display the number of characters entered into the text box out of the MaxLength. (ie. 125/140)</p>
<p>Secondly, a developer can set a LengthIndicatorThreshold. This property determines after how many characters the length indicator should pop down. For example, if the threshold is 20, the length indicator will be hidden if there are 18 characters in the text box. However, once 20 characters have been entered into the text box the length indicator will slide down.</p>
<p>Third, a "soft limit" can be imposed on the text box. In this case, a developer does <em>not</em> set a MaxLength, but rather sets a DisplayedMaxLength. In this scenario, the user <em>can</em> enter more than DisplayedMaxLength characters, much like how the Messaging app behaves in "Mango" for text messages.</p>
<p><strong>LengthIndicatorVisibility-</strong> A boolean that determines whether the length indicator is visible or not.</p>
<p><strong>LengthIndicatorThreshold- </strong>An integer that determines when the length indicator hides or slides down. Note that LengthIndicatorVisibility <em>must</em> be set to true if you ever want the length indicator to be shown.</p>
<p><strong>DisplayedMaxLength-</strong> An integer that overrides the default behavior of showing the format N/MaxLength, where N is the number of characters entered. If DisplayedMaxLength is set, the format will be N/DisplayedMaxLength.</p>
<p>You can also check out the sample app included with the Toolkit to see how you can mix and match these different components.</p>
<p>This is a great new update to the Silverlight Toolkit and I am excited to be a part of this release. If you have any feedback, feel free to use the Issue Tracker on <a href="http://silverlight.codeplex.com">CodePlex</a>.</p>
<p>P.S. If you are using the PhoneTextBox in your app, I'd love to hear from you!</p>
]]></description>
        </item>
        
    </channel>
</rss>
