<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>chrismoos</title>
    <link>/</link>
    <description>Recent content on chrismoos</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>&amp;copy; 2020 Chris Moos</copyright>
    <lastBuildDate>Fri, 03 Apr 2020 00:00:00 +0000</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Getting started with a vanilla ATmega328p</title>
      <link>/2020/04/03/getting-started-with-a-vanilla-atmega328p/</link>
      <pubDate>Fri, 03 Apr 2020 00:00:00 +0000</pubDate>
      
      <guid>/2020/04/03/getting-started-with-a-vanilla-atmega328p/</guid>
      <description>I&amp;rsquo;ve spent time over the years playing with various hobbyist electronics platforms, such as Arduino and NodeMCU (ESP 2866). Most of the time it&amp;rsquo;s just been working on a breadboard but now I am working on a project that needs to be very minimal (low power and cost). For this I&amp;rsquo;ve decided to skip an actual Arduino and go with a plain ATmega328p. For those that don&amp;rsquo;t know, many Arduino boards are powered by the (formerly Atmel) Microchip ATmega328p.</description>
    </item>
    
    <item>
      <title>Death to JSON!</title>
      <link>/2017/09/15/death-to-json/</link>
      <pubDate>Fri, 15 Sep 2017 00:00:00 +0000</pubDate>
      
      <guid>/2017/09/15/death-to-json/</guid>
      <description>&lt;p&gt;TLDR; I don&amp;rsquo;t really want JSON to die &amp;ndash; but we need to stop using it for APIs.&lt;/p&gt;
&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;Back in 2011 I was working at &lt;a href=&#34;https://en.wikipedia.org/wiki/LiveProfile&#34;&gt;LiveProfile&lt;/a&gt;, a mobile messenger startup. JSON was &lt;em&gt;relatively new&lt;/em&gt; and REST APIs (as we know them today) were still in their infancy. We were building out a SOA (Service Oriented Architecture) for our backend system. Mobile clients used the XMPP protocol and we were using an Erlang XMPP server, &lt;a href=&#34;https://www.ejabberd.im/&#34;&gt;ejabberd&lt;/a&gt;. We wanted to keep the XMPP server simple, just a frontend, and all business logic (contact lists, stored messages, authentication, etc,.) would be built in a Java backend. The Erlang application needed to communicate with the backend, and so we began looking at various options for Erlang -&amp;gt; backend communication.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Zero Downtime Deployments in Kuberentes</title>
      <link>/2016/09/28/zero-downtime-deployments-kubernetes/</link>
      <pubDate>Wed, 28 Sep 2016 00:00:00 +0000</pubDate>
      
      <guid>/2016/09/28/zero-downtime-deployments-kubernetes/</guid>
      <description>If you don&amp;rsquo;t already know Kuberentes, its a Container Orchestration Platform originally designed by Google. I&amp;rsquo;ll assume you already have a decent understanding of containers and Kuberentes, but if not, I recommend learning about it here. If you want to get a cluster up and running quickly you can check out Minikube.
Rolling Deployments Kubernetes has out-of-the-box support for rolling deployments via Deployments. A Deployment uses Replica Sets (which are essentially Replication Controllers with support for set-based selectors) to orchestrate pod deployment.</description>
    </item>
    
    <item>
      <title>HTTP/2 HPACK Compression library in Golang</title>
      <link>/2016/02/19/hpack-compression-golang/</link>
      <pubDate>Fri, 19 Feb 2016 00:00:00 +0000</pubDate>
      
      <guid>/2016/02/19/hpack-compression-golang/</guid>
      <description>HPACK was designed to provide header compression in HTTP/2. It uses both Huffman encoding for compressing strings and index tables to reduce the amount of over-the-wire header data needed in an HTTP/2 request. I found the specification interesting and wrote a Golang library that implements it, skip here to read about it.
Huffman Encoding Huffman encoding works by assigning short codes to frequently used characters. The HPACK specification defines the various codes to encode all characters, so when a peer recieves a header that is Huffman encoded it consults the list of short codes to resolve the character (aka symbol).</description>
    </item>
    
    <item>
      <title>decentralized network 42</title>
      <link>/2015/12/27/decentralized-network-42/</link>
      <pubDate>Sun, 27 Dec 2015 00:00:00 +0000</pubDate>
      
      <guid>/2015/12/27/decentralized-network-42/</guid>
      <description>Recently I&amp;rsquo;ve been interested in BGP and stumbled across a thread on reddit that pointed me to a community called decentralized network 42, or dn42.
If you haven&amp;rsquo;t heard of dn42 it is essentially a private network that runs just like the real internet does, with BGP, peering, an Internet Registry (aka the registry), DNS root servers, and more. Joining the dn42 network usually means creating your own Autonomous System and peering with other users.</description>
    </item>
    
    <item>
      <title>CoreOS with cloud-config on VMWare ESXi</title>
      <link>/2014/05/28/coreos-with-cloud-config-on-vmware-esxi/</link>
      <pubDate>Wed, 28 May 2014 00:00:00 +0000</pubDate>
      
      <guid>/2014/05/28/coreos-with-cloud-config-on-vmware-esxi/</guid>
      <description>CoreOS is a lightweight Linux distribution that integrates a platform for distributed environments. It makes Docker containers first class and adds some great features such as service discovery with etcd and cluster management with fleet. This post won&amp;rsquo;t go into too much detail on the benefits of CoreOS, so I recommend you head to the CoreOS site to read more. Instead we will be talking about how to get CoreOS running on VMWare ESXi.</description>
    </item>
    
    <item>
      <title>clojure, ring, and 1990&#39;s style counters</title>
      <link>/2013/01/31/clojure-ring-and-1990s-style-counters/</link>
      <pubDate>Thu, 31 Jan 2013 00:00:00 +0000</pubDate>
      
      <guid>/2013/01/31/clojure-ring-and-1990s-style-counters/</guid>
      <description>Clojure is a Lisp-like programming language that runs on the JVM. Ring is a web application library that provides a simple framework for serving HTTP content with clojure. It is similar to Rack for Ruby or WSGI for Python.
In this post we will be creating a web application that serves up a 90s style hit-counter GIF image. Skip ahead to the demo (hosted on Heroku) or check out the source.</description>
    </item>
    
    <item>
      <title>avr-os: Multitasking on Arduino</title>
      <link>/2012/12/05/avr-os-multitasking-on-arduino/</link>
      <pubDate>Wed, 05 Dec 2012 00:00:00 +0000</pubDate>
      
      <guid>/2012/12/05/avr-os-multitasking-on-arduino/</guid>
      <description>Arduino is an open source prototyping platform for electronics. There is so much you can do with Arduino and the community is proof. In playing with Arduino I decided that it would be a great project to create a small multitasking library for use on AVR platforms, which includes Arduino.
A small introduction avr-os is a library that provides a very basic rutime that enables your program to multitask.
The library uses pre-emptive multitasking to switch tasks and each task has its own stack that is restored when a task is resumed.</description>
    </item>
    
    <item>
      <title>Content Delivery Networks: A Primer</title>
      <link>/2012/12/05/content-delivery-networks-a-primer/</link>
      <pubDate>Wed, 05 Dec 2012 00:00:00 +0000</pubDate>
      
      <guid>/2012/12/05/content-delivery-networks-a-primer/</guid>
      <description>Content Delivery Networks (CDNs) cache your content around the globe to reduce latency and improve performance for end users. It is a very powerful tool and can be leveraged by any web site. Historically, CDN providers have been very expensive and were not practical for most people. Now things have changed and there are many CDN providers that cater to cloud customers who want pay-as-you-go service.
Check out CloudFront, Rackspace Cloud Files, MaxCDN, SoftLayer CloudLayer, and more.</description>
    </item>
    
    <item>
      <title>libhashring - high performance consistent hashing</title>
      <link>/2011/06/04/libhashring-high-performance-consistent-hashing/</link>
      <pubDate>Sat, 04 Jun 2011 16:49:11 +0000</pubDate>
      
      <guid>/2011/06/04/libhashring-high-performance-consistent-hashing/</guid>
      <description>In a previous post I talked about the need to shard Redis data and how I accomplished this by adding shard/hashing support to erldis, an Erlang client for Redis. This solution proved to work well, it distributed our data very well amongst many Redis servers &amp;ndash; but there was one problem. Performance.
In the change I made to erldis, the hash ring was stored in ETS (an erlang memory store) and anytime a key was hashed, the ring had to be retrieved from ETS.</description>
    </item>
    
    <item>
      <title>Thrift and ZooKeeper</title>
      <link>/2011/05/25/thrift-and-zookeeper/</link>
      <pubDate>Wed, 25 May 2011 00:50:43 +0000</pubDate>
      
      <guid>/2011/05/25/thrift-and-zookeeper/</guid>
      <description>Thrift provides a great framework for developing and accessing remote services. It allows developers to create services that can be consumed by any application that is written in a language that there are Thrift bindings for (which is&amp;hellip;just about every mainstream one, and more).
This is great for systems that are heterogeneous &amp;ndash; for example, you could write a user authentication service in Java, but call it from your Ruby web application.</description>
    </item>
    
    <item>
      <title>Redis sharding with Erlang</title>
      <link>/2011/04/10/redis-sharding-with-erlang/</link>
      <pubDate>Sun, 10 Apr 2011 20:09:35 +0000</pubDate>
      
      <guid>/2011/04/10/redis-sharding-with-erlang/</guid>
      <description>I&amp;rsquo;ve been using a great Erlang Redis library erldis recently and as our data set has grown much larger, we have decided we need to start sharding. Unfortunately the erldis library does not have support for sharding so I&amp;rsquo;ve forked the repository and made the changes. You can find my fork here. Pull request here.
A little background Redis has been really great for us so far but as we get more data and more operations per second, we realized we need to start utilizing multiple Redis instances.</description>
    </item>
    
    <item>
      <title>MoosTrax for Blackberry -- Looking for testers</title>
      <link>/2010/08/11/moostrax-for-blackberry-looking-for-testers/</link>
      <pubDate>Wed, 11 Aug 2010 08:41:00 +0000</pubDate>
      
      <guid>/2010/08/11/moostrax-for-blackberry-looking-for-testers/</guid>
      <description>I am finally going to work on updating MoosTrax for BlackBerry &amp;ndash; as there are a few outstanding bugs that need to be addressed. The most important bug I will be working on is consistency of location updates in newer, post-4.2 OS BlackBerry devices.
If you are interested in helping test the upcoming version, please e-mail moostraxsupport@gmail.com.</description>
    </item>
    
    <item>
      <title>MoosTrax released for iPhone</title>
      <link>/2010/07/29/moostrax-released-for-iphone/</link>
      <pubDate>Thu, 29 Jul 2010 21:01:59 +0000</pubDate>
      
      <guid>/2010/07/29/moostrax-released-for-iphone/</guid>
      <description> I am happy to say that MoosTrax has been approved by Apple and is now available for download in the App Store. Thanks to everyone who helped with the beta testing -- it was a great help. Note: MoosTrax works on devices running iOS 4+.
iPhone Support/Help MoosTrax iTunes Link
 </description>
    </item>
    
    <item>
      <title>MoosTrax for iPhone Beta Updates</title>
      <link>/2010/07/12/moostrax-for-iphone-beta-updates/</link>
      <pubDate>Mon, 12 Jul 2010 22:59:04 +0000</pubDate>
      
      <guid>/2010/07/12/moostrax-for-iphone-beta-updates/</guid>
      <description> I&#39;ve been working a lot on getting MoosTrax ready for the App Store and the latest beta adds a lot of great features.  View a list of all of your devices View the current location of any device on your account. Enhanced battery usage through the &#34;Conserve Battery&#34; feature.  The beta is still open, so send an e-mail to moostraxsupport@gmail.com to join.
 </description>
    </item>
    
    <item>
      <title>MoosTrax for iPhone iOS4</title>
      <link>/2010/06/27/moostrax-for-iphone-ios4/</link>
      <pubDate>Sun, 27 Jun 2010 19:47:51 +0000</pubDate>
      
      <guid>/2010/06/27/moostrax-for-iphone-ios4/</guid>
      <description> I just got a new iPhone 4 with iOS4...and it supports background location updates! I&#39;ve decided to bring MoosTrax back to the iPhone. I&amp;rsquo;m looking for beta testers&amp;hellip;and then soon I&amp;rsquo;ll be pushing it to the App Store.
Applying for the beta  Please e-mail moostraxsupport@gmail.com with your iPhone&#39;s UDID. For information on finding the UDID, go here: http://www.geekology.co.za/blog/2009/07/how-to-check-your-iphones-udid-from-itunes/
Screenshots  </description>
    </item>
    
    <item>
      <title>AsyncRecord: Non-blocking database access for Ruby</title>
      <link>/2010/06/21/asyncrecord-non-blocking-database-access-for-ruby/</link>
      <pubDate>Mon, 21 Jun 2010 21:17:18 +0000</pubDate>
      
      <guid>/2010/06/21/asyncrecord-non-blocking-database-access-for-ruby/</guid>
      <description>Two weeks ago I developed my first event-driven web framework for Ruby, Fastr. It helped me understand why running a web framework in an event loop is so natural.
As I continued to tackle more features in Fastr, it was time to tackle persistence &amp;ndash; notably, database access.
AsyncRecord is/will be an ORM, similar to ActiveRecord &amp;ndash; with one major difference &amp;ndash; it doesn&amp;rsquo;t block. AsyncRecord currently uses em-mysql to access a MySQL database.</description>
    </item>
    
    <item>
      <title>Fastr - A Web Framework for Ruby</title>
      <link>/2010/06/08/fastr-a-web-framework-for-ruby/</link>
      <pubDate>Tue, 08 Jun 2010 21:12:06 +0000</pubDate>
      
      <guid>/2010/06/08/fastr-a-web-framework-for-ruby/</guid>
      <description>Foreword Every month I go on a binge and learn something new. The most recent binge resulted in a new web framework, called fastr.
I&amp;rsquo;ve always used Rails when I needed to create a web application in Ruby, but despite how great it is to code in, the performance and concurrency is not up to par.
Don&amp;rsquo;t get me wrong &amp;ndash; Rails can scale, but it is not inherently very good when it comes to an individual instance&amp;rsquo;s performance.</description>
    </item>
    
    <item>
      <title>Unlocking the full potential of the iPhone</title>
      <link>/2010/04/17/unlocking-the-full-potential-of-the-iphone/</link>
      <pubDate>Sat, 17 Apr 2010 21:43:48 +0000</pubDate>
      
      <guid>/2010/04/17/unlocking-the-full-potential-of-the-iphone/</guid>
      <description>Since Apple launched the iPhone in 2007 there has been an unprecedented growth in the mobile phone market. From new advances in hardware, such as touch screens, to operating systems mimicking the full power of a desktop computer. Never has a smartphone been able to penetrate the demographics of 10 year olds, to teenagers, or mom and dad &amp;ndash; until the iPhone.
There are now hundreds of thousands of applications built for mobile phones, with every use case you can imagine.</description>
    </item>
    
    <item>
      <title>Groovy scripts and JVM Security</title>
      <link>/2010/03/24/groovy-scripts-and-jvm-security/</link>
      <pubDate>Wed, 24 Mar 2010 19:26:20 +0000</pubDate>
      
      <guid>/2010/03/24/groovy-scripts-and-jvm-security/</guid>
      <description>Groovy is a very cool dynamic language for the JVM. Because it runs on the JVM, it also has the great security features as well. Let&#39;s see how we can run trusted code and allow a dynamic (possibly user defined) script to execute with limited permissions. We will also see how the script can call functions in our trusted code and how we can elevate privileges to allow the untrusted script to get access to trusted data.</description>
    </item>
    
    <item>
      <title>Getting started with Scala using SBT</title>
      <link>/2010/02/10/getting-started-with-scala-using-sbt/</link>
      <pubDate>Wed, 10 Feb 2010 19:13:03 +0000</pubDate>
      
      <guid>/2010/02/10/getting-started-with-scala-using-sbt/</guid>
      <description>One of my biggest gripes with Java (and all the languages that run on the JVM) is getting my project setup and building it. Maven is not my favorite, and ant..well..I don&#39;t like it either. Fortunately, if you want to start a new project in Scala, there is a great build tool available that takes a lot of the pain out of project management and building - SBT, simple-build-tool.
sbt is a simple build tool for Scala projects that aims to do the basics well.</description>
    </item>
    
    <item>
      <title>AjaxTask - a rails plugin for managing background tasks</title>
      <link>/2010/02/09/ajaxtask-a-rails-plugin-for-managing-background-tasks/</link>
      <pubDate>Tue, 09 Feb 2010 23:14:27 +0000</pubDate>
      
      <guid>/2010/02/09/ajaxtask-a-rails-plugin-for-managing-background-tasks/</guid>
      <description>SOAP, Background Tasks, and AJAX Recently in Rails I&amp;rsquo;ve been interacting with various SOAP services and running them in the background with Workling. I needed to relay the SOAP response to the client&amp;rsquo;s web browser, so I decided to use AJAX to poll the status of my background tasks.
This is great if you have &amp;lt; 30 second background tasks running, but don&amp;rsquo;t want to block a user (and a request).</description>
    </item>
    
    <item>
      <title>MySQL and partitioning tables with millions of rows</title>
      <link>/2010/01/31/mysql-partitioning-tables-with-millions-of-rows/</link>
      <pubDate>Sun, 31 Jan 2010 12:43:58 +0000</pubDate>
      
      <guid>/2010/01/31/mysql-partitioning-tables-with-millions-of-rows/</guid>
      <description>The Problem I&#39;ve been running a mobile GPS tracking service, MoosTrax (formerly BlackBerry Tracker), for a few years and have encountered a large amount of data in the process.
A user&#39;s phone sends its location to the server and it is stored in a MySQL database. Each &#34;location&#34; entry is stored as a single row in a table.
Right now there are approximately 12 million rows in the location table, and things are getting slow now, as a full table scan can take ~3-4 minutes on my limited hardware.</description>
    </item>
    
    <item>
      <title>libactor now at google code</title>
      <link>/2009/10/30/libactor-now-at-google-code/</link>
      <pubDate>Fri, 30 Oct 2009 23:52:55 +0000</pubDate>
      
      <guid>/2009/10/30/libactor-now-at-google-code/</guid>
      <description>libactor is now available on google code. Check it out: http://code.google.com/p/libactor/
If you have any problems or ideas, post them there!
Chris</description>
    </item>
    
    <item>
      <title>Tutorials</title>
      <link>/2009/10/29/tutorials/</link>
      <pubDate>Thu, 29 Oct 2009 01:19:57 +0000</pubDate>
      
      <guid>/2009/10/29/tutorials/</guid>
      <description>Check out some tutorials on various topics:
Pylons  Pylons Worker Threads CouchDB and Pylons, Getting Started &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;http://chrismoos.com/2009/02/21/couchdb-and-pylons-user-registration-and-login/&amp;quot;&amp;gt;CouchDB and Pylons: User Registration and Login&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;   Erlang  Building an Erlang chat server with Comet – Part 1 Building an Erlang chat server with Comet – Part 2 Building an Erlang chat server with Comet – Part 3  </description>
    </item>
    
    <item>
      <title>libactor - a C library based on the Actor model</title>
      <link>/2009/10/28/libactor-a-c-library-based-on-the-actor-model/</link>
      <pubDate>Wed, 28 Oct 2009 23:38:38 +0000</pubDate>
      
      <guid>/2009/10/28/libactor-a-c-library-based-on-the-actor-model/</guid>
      <description>Recently I&amp;rsquo;ve been really interested in functional, concurrent programming languages, such as Erlang. This prompted me to have some fun in C, and try to implement a simple library that is based on the Actor Model.
Right now it is usable, although it may not be ready for production. It uses pthreads and the library handles all of the threading issues, so you don&amp;rsquo;t have to worry about any of it at all.</description>
    </item>
    
    <item>
      <title>Colloquy for iPhone -- Push Notification Server</title>
      <link>/2009/10/22/colloquy-for-iphone-push-notification-server/</link>
      <pubDate>Thu, 22 Oct 2009 17:04:42 +0000</pubDate>
      
      <guid>/2009/10/22/colloquy-for-iphone-push-notification-server/</guid>
      <description>Colloquy is a great IRC client for Mac, as well as the iPhone. Currently, to run Colloquy on the iPhone you must purchase the mobile version from the App Store. The other option is to download the source and build it yourself, but you must be a registered iPhone developer to run it on an actual iPhone. Also, if you intend to use push notifications (via the Colloquy ZNC plugin), you must have a push certificate as well.</description>
    </item>
    
    <item>
      <title>Writing a FreeSWITCH Caller ID spoofing interface</title>
      <link>/2009/10/16/writing-a-freeswitch-caller-id-spoofing-interface/</link>
      <pubDate>Fri, 16 Oct 2009 17:06:21 +0000</pubDate>
      
      <guid>/2009/10/16/writing-a-freeswitch-caller-id-spoofing-interface/</guid>
      <description>Lately I have been really interested in voice over IP, I think there is a lot of power in it. I was using Asterisk, but I&amp;rsquo;ve moved onto a much better and more powerful solution, FreeSWITCH. I was playing with it recently and decided a Caller ID spoofing interface would be fun.
When the following script is ran, it will prompt you for an access code, and if it is correct, it will let you specify a number to spoof, and a number to call.</description>
    </item>
    
    <item>
      <title>Building an Erlang chat server with Comet â Part 3</title>
      <link>/2009/10/16/building-an-erlang-chat-server-with-comet-%C3%A2-part-3/</link>
      <pubDate>Fri, 16 Oct 2009 16:32:12 +0000</pubDate>
      
      <guid>/2009/10/16/building-an-erlang-chat-server-with-comet-%C3%A2-part-3/</guid>
      <description>You can see a live demo of the following tutorial here.
Overview In the last part, we implemented the first version of our chat server. Now that the framework is down, we can start adding some more features. You can find the source for this tutorial here
UPDATE 7/2/11: The source code is also available here: https://github.com/chrismoos/erl_chat_tutorial. You can checkout the 0.2 tag.
In this part, we will add the following features:</description>
    </item>
    
    <item>
      <title>Building an Erlang chat server with Comet - Part 2</title>
      <link>/2009/09/29/building-an-erlang-chat-server-with-comet-part-2/</link>
      <pubDate>Tue, 29 Sep 2009 18:01:34 +0000</pubDate>
      
      <guid>/2009/09/29/building-an-erlang-chat-server-with-comet-part-2/</guid>
      <description>You can see a live demo of the following tutorial at chat.tech9computers.com
Getting into the code In the previous part, I introduced the chat system and how it should work. Now we are going to write the chat_postoffice, chat_mailbox, chat_room, and chat_web modules. Before you read download the source for this tutorial here. and dedicate about 20 minutes to read through this tutorial, because it&#39;s kind of long (sorry).
UPDATE 7/2/11: The source code is also available here: https://github.</description>
    </item>
    
    <item>
      <title>Building an Erlang chat server with Comet - Part 1</title>
      <link>/2009/09/28/building-an-erlang-chat-server-with-comet-part-1/</link>
      <pubDate>Mon, 28 Sep 2009 21:10:32 +0000</pubDate>
      
      <guid>/2009/09/28/building-an-erlang-chat-server-with-comet-part-1/</guid>
      <description>Introduction Comet is a technique to stream data, or &amp;ldquo;push&amp;rdquo; events to the web browser, instead of making the client poll the server every few seconds. This lets the client receive near real-time updates. If you want to read more about Comet, check out the article on Wikipedia, more specifically, the section about Ajax with long polling, as this is what our server will implement.
I chose web based chat because it is a great &amp;ldquo;hello world&amp;rdquo; for learning how Comet works, and I really enjoy programming chat related stuff (see my very old implementation of GameRanger)</description>
    </item>
    
    <item>
      <title>AT&amp;T, Loopt, and the iPhone -- moving the world into a more ethical place</title>
      <link>/2009/09/04/att-loopt-and-the-iphone-moving-the-world-into-a-more-ethical-place/</link>
      <pubDate>Fri, 04 Sep 2009 15:07:49 +0000</pubDate>
      
      <guid>/2009/09/04/att-loopt-and-the-iphone-moving-the-world-into-a-more-ethical-place/</guid>
      <description>AT&amp;amp;T is going to permit Loopt, a location based services vendor, access to exclusive background functionality on the iPhone. As the primary developer and owner of a free web based location services site, moostrax.com, I am absolutely infuriated with what is taking place.
When I discovered the aforemetioned, I realized that the key to being able to take advantage of a closed platform(as a software developer, and in this case, the iPhone platform), is to strike a deal with the carrier and put some money in their pockets.</description>
    </item>
    
    <item>
      <title>MoosTrax for iPhone - Looking for testers</title>
      <link>/2009/08/07/moostrax-for-iphone-looking-for-testers/</link>
      <pubDate>Fri, 07 Aug 2009 10:15:35 +0000</pubDate>
      
      <guid>/2009/08/07/moostrax-for-iphone-looking-for-testers/</guid>
      <description>I just made a very basic MoosTrax location updater for the iPhone. Currently it just sends your location to MoosTrax when you press the Update Now button.
I will be adding push notifications soon so that when someone pulls up the Live Tracking page on the MoosTrax website, you will receive a notification on your iPhone requesting you to update your location. That is really all I can do for now, as background applications are still not permitted.</description>
    </item>
    
    <item>
      <title>Palm Pre Support for MoosTrax</title>
      <link>/2009/08/07/palm-pre-support-for-moostrax/</link>
      <pubDate>Fri, 07 Aug 2009 06:33:06 +0000</pubDate>
      
      <guid>/2009/08/07/palm-pre-support-for-moostrax/</guid>
      <description>I am currently working on adding MoosTrax for the Palm Pre. Is there anyone out there that is interested in this? Let me know!</description>
    </item>
    
    <item>
      <title>Apple Push Notification Library for Haskell</title>
      <link>/2009/07/13/apple-push-notification-library-for-haskell/</link>
      <pubDate>Mon, 13 Jul 2009 13:40:29 +0000</pubDate>
      
      <guid>/2009/07/13/apple-push-notification-library-for-haskell/</guid>
      <description>I have been working with Apple&amp;rsquo;s Push Notification service recently and decided to make a library to send notifications with Haskell. It is very simple and has a few helpers to make notifications with an alert, sound, etc,.
ApplePush Hackage
ApplePush Documentation
When using the library, you must use an SSL tunnel, because Haskell&amp;rsquo;s SSL support is incomplete. I use stunnel4, which works great, and offloads the SSL processing as well.</description>
    </item>
    
    <item>
      <title>Sziasztok Magyarok!</title>
      <link>/2009/07/05/sziasztok-magyarok/</link>
      <pubDate>Sun, 05 Jul 2009 14:46:27 +0000</pubDate>
      
      <guid>/2009/07/05/sziasztok-magyarok/</guid>
      <description>Három hét és ottleszek Magyorarszágon. Munkát keresek szamitástechnikai területen (szoftverfejlesztö, programazó).
Email címem: chris@tech9computers.com</description>
    </item>
    
    <item>
      <title>MoosTrax, iPhone, and Push Notifications</title>
      <link>/2009/07/03/moostrax-iphone-and-push-notifications/</link>
      <pubDate>Fri, 03 Jul 2009 15:39:01 +0000</pubDate>
      
      <guid>/2009/07/03/moostrax-iphone-and-push-notifications/</guid>
      <description>I recently traded my T-Mobile G1, with Android, for an iPhone 3G. I am hoping to get MoosTrax running on the iPhone, but unfortunately, even with push notifications, it might not be the same as the BlackBerry and Android versions. Here are some reasons why.
No automatic location updates The iPhone OS does not allow applications to run in the background, which means MoosTrax cannot check your location and send it to the server at a fixed interval.</description>
    </item>
    
    <item>
      <title>Haskell AIM Client - a cool proof of concept</title>
      <link>/2009/05/26/haskell-aim-client-a-cool-proof-of-concept/</link>
      <pubDate>Tue, 26 May 2009 11:29:21 +0000</pubDate>
      
      <guid>/2009/05/26/haskell-aim-client-a-cool-proof-of-concept/</guid>
      <description>Haskell has been my favorite programming language in the past month, and for good reason. Its (purely) functional and has strong, static typing.
The language feels more graceful to me, where design and function are key. It is a joy to program in and I would love to keep exploring it.
On my path to learning a new language, I usually try to implement something to get some real-world experience. In this instance, I have chosen to implement an Open AIM client.</description>
    </item>
    
    <item>
      <title>10 things I like about the T-Mobile G1 (and Android)</title>
      <link>/2009/05/25/10-things-i-like-about-the-t-mobile-g1-and-android/</link>
      <pubDate>Mon, 25 May 2009 18:18:38 +0000</pubDate>
      
      <guid>/2009/05/25/10-things-i-like-about-the-t-mobile-g1-and-android/</guid>
      <description>I picked up a T-Mobile G1 in December after my BlackBerry 8800 stopped charging (broken USB connector). After using it for the last ~6 months, I have to say that its one of the best phones I&amp;rsquo;ve owned.
Disclaimer: This isn&amp;rsquo;t a &amp;ldquo;why the G1 is better than an (iphone, blackberry, etc,.)&amp;rdquo; post, its just some things I really like about the G1.
This list is in no particular order, FYI.</description>
    </item>
    
    <item>
      <title>Looking for work</title>
      <link>/2009/05/04/looking-for-work/</link>
      <pubDate>Mon, 04 May 2009 12:39:45 +0000</pubDate>
      
      <guid>/2009/05/04/looking-for-work/</guid>
      <description>Right now I&amp;rsquo;m currently looking for a new project to work on, if anyone is interested in recruiting my services, please contact me at xoclipse@cox.net.
I would prefer to work on web, mobile, or desktop applications. I have experience with most major web frameworks (Pylons/Django, Rails). I have written quite a few mobile applications for various platforms (J2ME, iPhone, Android, BlackBerry). I&amp;rsquo;ve written desktop applications for Windows, Mac OS X, and Linux.</description>
    </item>
    
    <item>
      <title>MyLocation for Android</title>
      <link>/2009/04/30/mylocation-for-android/</link>
      <pubDate>Thu, 30 Apr 2009 22:24:49 +0000</pubDate>
      
      <guid>/2009/04/30/mylocation-for-android/</guid>
      <description>I just made a simple Android app, using the new Android 1.5 SDK (Cupcake), that will show your current location using GPS or Wireless Networks.
For GPS, you can also see number of satellites, as well as fix time. There will be an update soon to show more information about the satellites.
Check out the screenshots:</description>
    </item>
    
    <item>
      <title>MoosTrax Site Redesign Launched. Open Registrations.</title>
      <link>/2009/03/18/moostrax-site-redesign-launched.-open-registrations./</link>
      <pubDate>Wed, 18 Mar 2009 16:29:06 +0000</pubDate>
      
      <guid>/2009/03/18/moostrax-site-redesign-launched.-open-registrations./</guid>
      <description>You can view the new MoosTrax site at http://www.moostrax.com. Registrations are now open so anyone can signup.
A new BlackBerry client version has been released, version 0.3.3.
Also, existing Storm users that are experiencing update problems should raise their accuracy to 200 meters and see if that fixes the problem.</description>
    </item>
    
    <item>
      <title>MoosTrax site new design, and leaving beta.</title>
      <link>/2009/03/16/moostrax-site-new-design-and-leaving-beta./</link>
      <pubDate>Mon, 16 Mar 2009 02:23:09 +0000</pubDate>
      
      <guid>/2009/03/16/moostrax-site-new-design-and-leaving-beta./</guid>
      <description>MoosTrax is now almost out of beta, which means registrations will be open to all. Also, the site has been redesigned to have a cleaner look. The new site will be available soon, check out a preview here:</description>
    </item>
    
    <item>
      <title>MoosTrax Mobile Site</title>
      <link>/2009/03/06/moostrax-mobile-site/</link>
      <pubDate>Fri, 06 Mar 2009 02:21:54 +0000</pubDate>
      
      <guid>/2009/03/06/moostrax-mobile-site/</guid>
      <description>You can now access a smaller, stripped down version of the MoosTrax site on your mobile phone by visiting http://m.moostrax.com. Currently only live tracking is supported.</description>
    </item>
    
    <item>
      <title>Pylons Worker Threads</title>
      <link>/2009/03/04/pylons-worker-threads/</link>
      <pubDate>Wed, 04 Mar 2009 00:03:53 +0000</pubDate>
      
      <guid>/2009/03/04/pylons-worker-threads/</guid>
      <description>I was reading a thread over at pylons-discuss about worker threads in pylons. Worker threads are useful if you need to execute a long running task, but want to return to the user immediately. You could run a new thread per request, but if you have many requests, it is probably better to queue things up.
To do this, you start a thread and use python&amp;rsquo;s Queue for managing the tasks.</description>
    </item>
    
    <item>
      <title>MoosTrax and Yahoo Fire Eagle</title>
      <link>/2009/02/24/moostrax-and-yahoo-fire-eagle/</link>
      <pubDate>Tue, 24 Feb 2009 15:42:33 +0000</pubDate>
      
      <guid>/2009/02/24/moostrax-and-yahoo-fire-eagle/</guid>
      <description>You can now have your location sent from MoosTrax to Yahoo Fire Eagle.
&#34;Fire Eagle is a site that stores information about your location. With your permission, other services and devices can either update that information or access it. By helping applications respond to your location, Fire Eagle is designed to make the world around you more interesting! Use your location to power friend-finders, games, local information services, blog badges and stuff like that.</description>
    </item>
    
    <item>
      <title>MoosTrax Ruby Library</title>
      <link>/2009/02/23/moostrax-ruby-library/</link>
      <pubDate>Mon, 23 Feb 2009 14:28:35 +0000</pubDate>
      
      <guid>/2009/02/23/moostrax-ruby-library/</guid>
      <description>You can now access MoosTrax with Ruby.
Install the gem $ wget http://www.moostrax.com/static/MoosTrax-0.1.gem $ sudo gem install MoosTrax-0.1.gem Try out this demo script make sure to fill your API_KEY in.
require &amp;#39;rubygems&amp;#39; require &amp;#39;moostrax&amp;#39; require &amp;#39;time&amp;#39; def get_local_date(date_str) Time.parse(date_str + &amp;#39; UTC&amp;#39;).getlocal.asctime end mt = MoosTrax.new(&amp;#39;API_KEY&amp;#39;) begin devices = mt.devices devices.each do |device| info = mt.device_info(device) puts &amp;#34;Device ID: #{info[&amp;#39;device_id&amp;#39;]}\n&amp;#34; puts &amp;#34;Device Name: #{info[&amp;#39;device_name&amp;#39;]}\n&amp;#34; puts &amp;#34;Last Contact: #{get_local_date(info[&amp;#39;last_contact&amp;#39;])}\n&amp;#34; puts &amp;#34;Date Added: #{get_local_date(info[&amp;#39;date_added&amp;#39;])}\n&amp;#34; location = mt.</description>
    </item>
    
    <item>
      <title>CouchDB and Pylons: User Registration and Login</title>
      <link>/2009/02/21/couchdb-and-pylons-user-registration-and-login/</link>
      <pubDate>Sat, 21 Feb 2009 18:47:08 +0000</pubDate>
      
      <guid>/2009/02/21/couchdb-and-pylons-user-registration-and-login/</guid>
      <description>In the previous tutorial, we learned how to get CouchDB and Pylons up and running, as well as create a simple page counter. Now we are going to implement a simple user authentication system. This tutorial will teach you how to use formencode to validate forms and CouchDB to store our user data.
Let&amp;rsquo;s start by creating a new pylons project and some controllers.
$ paster create -t pylons userdemo $ cd userdemo $ paster controller main $ paster controller auth Also, delete public/index.</description>
    </item>
    
    <item>
      <title>MoosTrax Plugin for Wordpress</title>
      <link>/2009/02/12/moostrax-plugin-for-wordpress/</link>
      <pubDate>Thu, 12 Feb 2009 18:11:57 +0000</pubDate>
      
      <guid>/2009/02/12/moostrax-plugin-for-wordpress/</guid>
      <description>I&amp;rsquo;m just now finishing up a wordpress plugin for MoosTrax. It allows you to specify your API key from your MoosTrax account and then display a widget on your sidebar with your current location. You can see it in action on the sidebar of this blog. Check out the screenshot: </description>
    </item>
    
    <item>
      <title>MoosTrax: Location Tagging</title>
      <link>/2009/02/10/moostrax-location-tagging/</link>
      <pubDate>Tue, 10 Feb 2009 14:04:00 +0000</pubDate>
      
      <guid>/2009/02/10/moostrax-location-tagging/</guid>
      <description>I&amp;rsquo;ve just finished working on a new feature, which is pretty basic, but useful. From your phone you can tag a location(give it a name) and it will be saved on the site. You can then view all your tags on the site, as well as send a public link of the tag to other people. The tagging is currently only supported on Android, but the BlackBerry version will be updated soon(its a quick thing to add).</description>
    </item>
    
    <item>
      <title>WPA Wireless Authentication with eDirectory and FreeRADIUS</title>
      <link>/2009/02/05/wpa-wireless-authentication-with-edirectory-and-freeradius/</link>
      <pubDate>Thu, 05 Feb 2009 11:52:03 +0000</pubDate>
      
      <guid>/2009/02/05/wpa-wireless-authentication-with-edirectory-and-freeradius/</guid>
      <description>The following is an old article that I wrote that some people were asking me about. Here you go.
Introduction The goal of this article is to allow you to have your wireless access protected by WPA and have users authenticate to eDirectory for access to the wireless network.
What is WPA?  WPA&amp;nbsp; is a wireless authentication standard used for controlling access to wireless networks. WPA can operate in a pre-shared key mode(router and client both know a secret password), or authentication can take place with a RADIUS server.</description>
    </item>
    
    <item>
      <title>MoosTrax Bug Tracking Site</title>
      <link>/2009/02/04/moostrax-bug-tracking-site/</link>
      <pubDate>Wed, 04 Feb 2009 04:34:05 +0000</pubDate>
      
      <guid>/2009/02/04/moostrax-bug-tracking-site/</guid>
      <description>For those of you that are helping me test and improve MoosTrax, there is now a place where you can submit your feature requests and bugs.
Please visit http://trac.moostrax.com for more information.</description>
    </item>
    
    <item>
      <title>CouchDB and Pylons: Getting Started</title>
      <link>/2009/02/03/couchdb-and-pylons-getting-started/</link>
      <pubDate>Tue, 03 Feb 2009 18:25:33 +0000</pubDate>
      
      <guid>/2009/02/03/couchdb-and-pylons-getting-started/</guid>
      <description>CouchDB is very cool(it&amp;rsquo;s built on erlang), and with Pylons, it is even cooler.
Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Normally a Pylons web application will use some sort of RDBMS for storing data and persistence &amp;ndash; such as MySQL or PostgreSQL. I&amp;rsquo;ve decided to go a different route and integrate Pylons with CouchDB. Right now there is a Python library, couchdb-python, that will help us communicate with our CouchDB&amp;rsquo;s HTTP/JSON api.</description>
    </item>
    
    <item>
      <title>GeoFence feature added to MoosTrax</title>
      <link>/2009/01/30/geofence-feature-added-to-moostrax/</link>
      <pubDate>Fri, 30 Jan 2009 21:38:28 +0000</pubDate>
      
      <guid>/2009/01/30/geofence-feature-added-to-moostrax/</guid>
      <description>MoosTrax now has the ability to add GeoFences to your account. These virtual fences allow you to be notified whenever your device enters or leaves a pre-defined area.
Read about it here: http://moostrax.com/feature/geofence/</description>
    </item>
    
    <item>
      <title>MoosTrax Testers Needed</title>
      <link>/2009/01/26/moostrax-testers-needed/</link>
      <pubDate>Mon, 26 Jan 2009 19:52:52 +0000</pubDate>
      
      <guid>/2009/01/26/moostrax-testers-needed/</guid>
      <description>The new implementation of the site is just about done. I am looking for people with BlackBerry and Android devices that are willing to help testing the new site and software.
If you are interested, please e-mail moostraxsupport@gmail.com
Also, the first version of the Android client is finished. It is now available on the Android market. You must have a MoosTrax account to use the application though. E-mail moostraxsupport@gmail.com for more information.</description>
    </item>
    
    <item>
      <title>MoosTrax will return.</title>
      <link>/2009/01/24/moostrax-will-return./</link>
      <pubDate>Sat, 24 Jan 2009 22:21:50 +0000</pubDate>
      
      <guid>/2009/01/24/moostrax-will-return./</guid>
      <description>Yes, I recently made a post saying that MoosTrax will be going away forever. Due to all the comments and feedback, it is obvious to me that there are many people that enjoyed the service &amp;ndash; so I&amp;rsquo;m going to bring it back.
I&amp;rsquo;m moving my database backend from CouchDB to MySQL, so my issues with CouchDB won&amp;rsquo;t prevent me from providing MoosTrax. I have been working a lot on migrating the site and fixing it up&amp;hellip;so I really hope to have it up in the next week or so.</description>
    </item>
    
    <item>
      <title>Hasta la vista, MoosTrax.</title>
      <link>/2009/01/20/hasta-la-vista-moostrax./</link>
      <pubDate>Tue, 20 Jan 2009 16:42:56 +0000</pubDate>
      
      <guid>/2009/01/20/hasta-la-vista-moostrax./</guid>
      <description>UPDATE 01/21/09:
Okay, okay. A lot of you seem to like the site...I&#39;m going to bring it back. Moving back to MySQL though. Stay tuned. Well, it was a fun while it lasted. Unfortunately, I&amp;rsquo;ve decided to close the doors of MoosTrax permanently.
It started with BlackBerryTracker.com, which I had set up in Fall of 2007, to provide a site to track BlackBerry GPS-enabled devices. Prior to starting the site I had got my first BlackBerry, the 8800, and also my first GPS enabled phone.</description>
    </item>
    
    <item>
      <title>You must be *this* smart to post a comment.</title>
      <link>/2008/12/25/you-must-be-this-smart-to-post-a-comment./</link>
      <pubDate>Thu, 25 Dec 2008 13:14:31 +0000</pubDate>
      
      <guid>/2008/12/25/you-must-be-this-smart-to-post-a-comment./</guid>
      <description>I am 20 years old. I have been using the internet since 1995. I have used the internet as a great source of information and knowledge for many years. I remember using Usenet to follow intelligent discussions and I really appreciated the high quality of the discussions. As time went on, though, more and more average, non tech-savvy people began to access the internet. Unfortunately, with the addition of the masses to the internet, came trolling and the real risk of stupid people feeling the need to contribute their input to any and every discussion &amp;ndash; even if they knew nothing about it &amp;ndash; and the worse: when they thought they knew something about it.</description>
    </item>
    
    <item>
      <title>MoosTrax site returns</title>
      <link>/2008/12/25/moostrax-site-returns/</link>
      <pubDate>Thu, 25 Dec 2008 11:25:37 +0000</pubDate>
      
      <guid>/2008/12/25/moostrax-site-returns/</guid>
      <description>The site is now back up. Sorry for the downtime! I&amp;rsquo;ll now be working now on optimizing the speed of the site a bit more.</description>
    </item>
    
    <item>
      <title>MoosTrax for Android</title>
      <link>/2008/12/24/moostrax-for-android/</link>
      <pubDate>Wed, 24 Dec 2008 15:43:13 +0000</pubDate>
      
      <guid>/2008/12/24/moostrax-for-android/</guid>
      <description>I just recently replaced my BlackBerry 8800 with a T-Mobile G1. This means that its time to develop a MoosTrax client for Android devices. Right now I&amp;rsquo;m getting my Android development environment setup, with the insanely slow Java powered Eclipse. After that I&amp;rsquo;ll dig into the location API and get a MoosTrax client released.</description>
    </item>
    
    <item>
      <title>Tweet Me?</title>
      <link>/2008/12/24/tweet-me/</link>
      <pubDate>Wed, 24 Dec 2008 15:10:21 +0000</pubDate>
      
      <guid>/2008/12/24/tweet-me/</guid>
      <description>I am now starting to use Twitter&amp;hellip;it actually seems kind of cool. At first I was thinking it was more like Facebook status&amp;hellip;but now I&amp;rsquo;m realizing it might be good for whenever I just have a random thought&amp;hellip;to tweet it.
http://twitter.com/xoclipse</description>
    </item>
    
    <item>
      <title>MoosTrax Site Down</title>
      <link>/2008/12/22/moostrax-site-down/</link>
      <pubDate>Mon, 22 Dec 2008 16:58:23 +0000</pubDate>
      
      <guid>/2008/12/22/moostrax-site-down/</guid>
      <description>Unfortunately the site has been down for quite a while, as I&amp;rsquo;ve been working on moving lots of server resources around. I&amp;rsquo;m waiting on the last thing to move right now, which should be done within the next 24 hours. Thank you all for being so patient!
Update 12/23/08 7:30 PM EST: I just checked the status of the migration and its really close(hopefully in the next few hours!).
Update 12/23/08 10:30 PM EST: I&amp;rsquo;m still waiting&amp;hellip;I&amp;rsquo;m going to check in the morning&amp;hellip; :(</description>
    </item>
    
    <item>
      <title>MoosTrax Developer API is now active</title>
      <link>/2008/10/31/moostrax-developer-api-is-now-active/</link>
      <pubDate>Fri, 31 Oct 2008 02:35:41 +0000</pubDate>
      
      <guid>/2008/10/31/moostrax-developer-api-is-now-active/</guid>
      <description>Hey all,
The developer API for MoosTrax is now available for use.
You can get your devices, device info, current location, and history.
Please see the reference here: http://moostrax.com/help/wiki/Developer_About</description>
    </item>
    
    <item>
      <title>MoosTrax Site Launch</title>
      <link>/2008/10/30/moostrax-site-launch/</link>
      <pubDate>Thu, 30 Oct 2008 01:25:17 +0000</pubDate>
      
      <guid>/2008/10/30/moostrax-site-launch/</guid>
      <description>Well, its finally time. BlackBerryTracker.com will be no more on October 31, 2008.
I have been working on a brand new site, MoosTrax.com, which will resume the tracking services previously offered by BlackBerryTracker. This site should be a little more user friendly, and much more stable, as I&amp;rsquo;m aware that quite a few people were having issues with the BlackBerryTracker site.
Currently, the new site has Live Tracking, History, and a Facebook Application.</description>
    </item>
    
    <item>
      <title>Cox sucks</title>
      <link>/2008/08/02/cox-sucks/</link>
      <pubDate>Sat, 02 Aug 2008 20:57:10 +0000</pubDate>
      
      <guid>/2008/08/02/cox-sucks/</guid>
      <description>First, let me start off by saying that Cox&amp;rsquo;s customer service is absolutely terrible. I am only going to outline the most recent issue I&amp;rsquo;ve had with them in this post.
My &amp;ldquo;problem&amp;rdquo; is simple. Here is a quick history&amp;hellip;
 About 6 months ago I purchased a TiVo HD. It is able to access premium channels by using CableCARDs. After I brought the TiVo home, the next thing I needed was a CableCARD.</description>
    </item>
    
    <item>
      <title>iPhone RSS Parser</title>
      <link>/2008/07/17/iphone-rss-parser/</link>
      <pubDate>Thu, 17 Jul 2008 18:37:04 +0000</pubDate>
      
      <guid>/2008/07/17/iphone-rss-parser/</guid>
      <description>I&amp;rsquo;ve made a simple parser class for reading RSS feeds and a simple demo application for the iPhone that implements the iPhoneRSS class.
The following example shows the usage for the RSS class. Basically, the class creates an NSArray of news items, and each object in the array is an NSDictionary. The dictionary contains the element name as the key.
/* load feed from URL */ iPhoneRSS *rss = [[iPhoneRSS alloc] initWithURL:[NSURL URLWithString:@&amp;#34;http://www.</description>
    </item>
    
    <item>
      <title>OpenLBS - Open Source Tracking</title>
      <link>/2008/07/04/openlbs-open-source-tracking/</link>
      <pubDate>Fri, 04 Jul 2008 16:44:06 +0000</pubDate>
      
      <guid>/2008/07/04/openlbs-open-source-tracking/</guid>
      <description>I&amp;rsquo;ve just finished working on the initial release of OpenLBS. OpenLBS is an open source suite of location based software. The two initial components of the project are the client and the server. The server is Pylons-based project that implements the OpenLBS HTTP Specs. The client implements those same specs to work with the server.
OpenLBS is useful if you want to run your own tracking server, or if you want to customize it according to your needs.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Facebook Application</title>
      <link>/2008/02/06/blackberry-tracker-facebook-application/</link>
      <pubDate>Wed, 06 Feb 2008 21:51:53 +0000</pubDate>
      
      <guid>/2008/02/06/blackberry-tracker-facebook-application/</guid>
      <description>You can now add a Facebook application to your profile that will show your current location in a profile box.
For more information, visit http://blackberrytracker.com/facebook.</description>
    </item>
    
    <item>
      <title>Pylons (X)HTML Validator Middleware</title>
      <link>/2008/01/29/pylons-xhtml-validator-middleware/</link>
      <pubDate>Tue, 29 Jan 2008 14:29:20 +0000</pubDate>
      
      <guid>/2008/01/29/pylons-xhtml-validator-middleware/</guid>
      <description>This middleware will use the W3 Validator Service to check if your page is valid HTML. It will only check each URI once so that it doesn&amp;rsquo;t slow down your site by validating every page load. It does this by placing the result of each URI into a memory cache(using Beaker). You can then call cache_is_valid_xhtml() in your template to determine if the current page is valid.
Note: The first time your page loads it will not display if the page is valid or not(It is validated AFTER the first response).</description>
    </item>
    
    <item>
      <title>Genshi vs. Mako</title>
      <link>/2008/01/27/genshi-vs.-mako/</link>
      <pubDate>Sun, 27 Jan 2008 19:35:34 +0000</pubDate>
      
      <guid>/2008/01/27/genshi-vs.-mako/</guid>
      <description>As I stated previously how much I like Genshi&amp;hellip;I&amp;rsquo;ve come to realize that the performance of Genshi under high traffic is very bad. It could be the complexity of the templates that I am using, but I&amp;rsquo;m only using a few py:match&#39;s and they are using once=&amp;quot;true&amp;quot;.
I decided to benchmark Mako against Genshi for my site. Both templates are identical minus the syntactical differences of Genshi vs. Mako. I used the Apache HTTP server benchmark to test the site.</description>
    </item>
    
    <item>
      <title>CableCard Underground</title>
      <link>/2008/01/23/cablecard-underground/</link>
      <pubDate>Wed, 23 Jan 2008 20:42:21 +0000</pubDate>
      
      <guid>/2008/01/23/cablecard-underground/</guid>
      <description>Check out my new site with information on CableCard/TiVo. I&amp;rsquo;ll be looking into reverse engineering CableCard and be compiling my findings on the site. http://cablecard.tech9computers.com</description>
    </item>
    
    <item>
      <title>Series3 PROM Hack</title>
      <link>/2008/01/20/series3-prom-hack/</link>
      <pubDate>Sun, 20 Jan 2008 04:38:06 +0000</pubDate>
      
      <guid>/2008/01/20/series3-prom-hack/</guid>
      <description>This is not for the inexperienced. Engadget is reporting that user Narf54321 on the DealDatabase.com forums has done a successful S3 PROM Hack. For the non-geeks, the PROM is the Programmable Read Only Memory chip on the motherboard of the Series3 that contains some of the basic intelligence, including the security that prevents loading modified software on the unit. Late-model Series2 and DirecTiVo units are similarly locked down, and loading hacked software on the units requires modifying the PROM to allow the software to run.</description>
    </item>
    
    <item>
      <title>CES 2008 Las Vegas</title>
      <link>/2008/01/11/ces-2008-las-vegas/</link>
      <pubDate>Fri, 11 Jan 2008 05:34:19 +0000</pubDate>
      
      <guid>/2008/01/11/ces-2008-las-vegas/</guid>
      <description>I went to CES this year and saw a lot of cool stuff. I also saw the Optimus Keyboard in person, and it looked pretty cool. Check out the photos.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Client 0.41 Update</title>
      <link>/2008/01/10/blackberry-tracker-client-0.41-update/</link>
      <pubDate>Thu, 10 Jan 2008 19:13:54 +0000</pubDate>
      
      <guid>/2008/01/10/blackberry-tracker-client-0.41-update/</guid>
      <description>I&amp;rsquo;ve just released a new client that should fix the problem with people having intermittent connection problems. You can download it at http://blackberrytracker.com/download.
There is also a new support site at http://trac.tech9computers.com where you can submit bugs and feature requests.</description>
    </item>
    
    <item>
      <title>Manipulating the Aging Process With Somatic Cell Gene Therapy</title>
      <link>/2007/12/23/manipulating-the-aging-process-with-somatic-cell-gene-therapy/</link>
      <pubDate>Sun, 23 Dec 2007 16:54:12 +0000</pubDate>
      
      <guid>/2007/12/23/manipulating-the-aging-process-with-somatic-cell-gene-therapy/</guid>
      <description>Free time over the holidays lead me to waste some time reading about aging, stem cells, and gene therapy.
Full Document: http://www.tech9computers.com/agingprocess.pdf
Abstract:
Age represents itself as a reduction in the ability of an organism to function and respond to its environment. This loss of function eventually causes the organism to die and cease existence. DNA damage is arguably the most significant cause of aging. This damage to DNA occurs over an organism&amp;rsquo;s lifespan and is due to many factors such as oxygen free radicals which cause damage over time to proteins, membranes, and DNA.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Client 0.4 Beta - Update</title>
      <link>/2007/12/13/blackberry-tracker-client-0.4-beta-update/</link>
      <pubDate>Thu, 13 Dec 2007 18:17:15 +0000</pubDate>
      
      <guid>/2007/12/13/blackberry-tracker-client-0.4-beta-update/</guid>
      <description>I&amp;rsquo;ve done a few bug fixes on the beta client, including problems when exiting/starting application again and problems with the screen not updating.
BB OS 4.1: http://www.tech9computers.com/beta/4.1/BBTracker.jad BB OS 4.2: http://www.tech9computers.com/beta/BBTracker.jad
To install this, go to the browser on your Blackberry and enter the URL under Go To&amp;hellip;</description>
    </item>
    
    <item>
      <title>Blackberry Client 0.4 Beta</title>
      <link>/2007/12/12/blackberry-client-0.4-beta/</link>
      <pubDate>Wed, 12 Dec 2007 19:22:19 +0000</pubDate>
      
      <guid>/2007/12/12/blackberry-client-0.4-beta/</guid>
      <description>I&amp;rsquo;m looking for people to help me test the new client. This version should be MUCH better on battery life. There is an option for auto-login on powerup now too.
Any bugs/questions can be e-mailed to blackberrytracker [at] gmail.com or you can just comment here.
BB OS 4.1: http://www.tech9computers.com/beta/4.1/BBTracker.jad BB OS 4.2: http://www.tech9computers.com/beta/BBTracker.jad
To install this, go to the browser on your Blackberry and enter the URL under Go To&amp;hellip;</description>
    </item>
    
    <item>
      <title>GeoFences in Blackberry Tracker</title>
      <link>/2007/12/10/geofences-in-blackberry-tracker/</link>
      <pubDate>Mon, 10 Dec 2007 05:09:00 +0000</pubDate>
      
      <guid>/2007/12/10/geofences-in-blackberry-tracker/</guid>
      <description>I&amp;rsquo;ve just added a new feature to Blackberry Tracker that allows you to be alerted when a device enters or leaves a certain area.
These GeoFences are defined by picking a center location and then creating a circle around that point. You then have the option of defining whether you want to be alerted when the device enters or leaves this area. Currently the only supported alert type is e-mail, but I&amp;rsquo;ll be adding SMS soon too.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker - New server and site</title>
      <link>/2007/12/09/blackberry-tracker-new-server-and-site/</link>
      <pubDate>Sun, 09 Dec 2007 02:08:53 +0000</pubDate>
      
      <guid>/2007/12/09/blackberry-tracker-new-server-and-site/</guid>
      <description>I&amp;rsquo;m sure many of you have been noticing the intermittent downtimes that the site has been having, and for that I&amp;rsquo;m sorry. My host VPSLand.com was having many issues and caused me to finally switch hosts. I have a dedicated server now and the downtimes should not occur anymore.
Also, there is a new interface for the site, as you may have noticed. If there are any bugs please feel free to get in contact with me so I can fix them!</description>
    </item>
    
    <item>
      <title>Blackberry Tracker - Put a map of your location on your site</title>
      <link>/2007/11/11/blackberry-tracker-put-a-map-of-your-location-on-your-site/</link>
      <pubDate>Sun, 11 Nov 2007 20:59:30 +0000</pubDate>
      
      <guid>/2007/11/11/blackberry-tracker-put-a-map-of-your-location-on-your-site/</guid>
      <description>I&amp;rsquo;ve just added a feature for the people that wanted to just have a simple map of their location on their own web site.
It is EXTERMELY simple to do. Check out the instructions here:
http://wiki.tech9computers.com/index.php/Put_Google_Map_Map_On_Your_Home_Page</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Developer Site Launch</title>
      <link>/2007/11/06/blackberry-tracker-developer-site-launch/</link>
      <pubDate>Tue, 06 Nov 2007 15:00:19 +0000</pubDate>
      
      <guid>/2007/11/06/blackberry-tracker-developer-site-launch/</guid>
      <description>I&amp;rsquo;ve launched the initial version of the Blackberry Tracker Developer site where you can get your API key and begin developing for Blackberry Tracker.
Check out the site here. Developer Wiki.</description>
    </item>
    
    <item>
      <title>Genshi: A Real Web Templating Language</title>
      <link>/2007/10/17/genshi-a-real-web-templating-language/</link>
      <pubDate>Wed, 17 Oct 2007 21:52:30 +0000</pubDate>
      
      <guid>/2007/10/17/genshi-a-real-web-templating-language/</guid>
      <description>I believe that it is very important for web sites to comply with HTML/XHTML standards. The HTML specification is very detailed in how it should be represented and thus browsers that render HTML try to follow the specification as close as possible. Most of the template languages that I have used(Django, Mako) are text-based. This means that it the template processors don&amp;rsquo;t know anything about HTML. Everything that it works with is just text(as far is it knows).</description>
    </item>
    
    <item>
      <title>Python Web Frameworks: 2 Down, 1 to go</title>
      <link>/2007/10/17/python-web-frameworks-2-down-1-to-go/</link>
      <pubDate>Wed, 17 Oct 2007 15:45:21 +0000</pubDate>
      
      <guid>/2007/10/17/python-web-frameworks-2-down-1-to-go/</guid>
      <description>On my trial to find the best python web framework(all around), I&amp;rsquo;ve just finished learning Pylons and experiencing everything it has to offer. Genshi is amazing and kills any text template engine(Django, Mako). SQLAlchemy is much different than Django&amp;rsquo;s ORM and has its advantages and disadvantages. Django&amp;rsquo;s ORM feels more natural and is much easier to learn at first. I believe that SQLAlchemy is much more powerful but the learning curve is much bigger.</description>
    </item>
    
    <item>
      <title>More Blackberry Tracker Updates</title>
      <link>/2007/10/04/more-blackberry-tracker-updates/</link>
      <pubDate>Thu, 04 Oct 2007 12:41:21 +0000</pubDate>
      
      <guid>/2007/10/04/more-blackberry-tracker-updates/</guid>
      <description>I just changed the entire layout and look of Blackberry Tracker. I think it looks much better than the old one and is easier to use. There have been small enhancements to the web application, and a new &amp;lsquo;tagging&amp;rsquo; feature. Check it out.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Feature</title>
      <link>/2007/09/26/blackberry-tracker-feature/</link>
      <pubDate>Wed, 26 Sep 2007 03:16:27 +0000</pubDate>
      
      <guid>/2007/09/26/blackberry-tracker-feature/</guid>
      <description>I&amp;rsquo;ve been asked by a few people to add a feature that allows a user to put their location(or a google map of their location) on their web site.
I&amp;rsquo;m implementing the feature now and it should be done in the next day or so. Here are the details:
Login to the Blackberry Tracker account that you use for the device that you are trying to track. When you go to Manage Device you will see a 32 character string called the Device Key.</description>
    </item>
    
    <item>
      <title>Calyx Point 6.0</title>
      <link>/2007/09/24/calyx-point-6.0/</link>
      <pubDate>Mon, 24 Sep 2007 20:03:46 +0000</pubDate>
      
      <guid>/2007/09/24/calyx-point-6.0/</guid>
      <description>I have to say that Calyx Point is probably the most worthless software that I have ever come across. Calyx makes a software called Point, a loan origination software. it is very popular amongst mortgage companies and is one of the more ubiquitous software packages that does loan origination. The fact that it is widely used would make you think that it must be a good piece of software. No.</description>
    </item>
    
    <item>
      <title>Blackberry Tracker Updates</title>
      <link>/2007/08/30/blackberry-tracker-updates/</link>
      <pubDate>Thu, 30 Aug 2007 18:01:01 +0000</pubDate>
      
      <guid>/2007/08/30/blackberry-tracker-updates/</guid>
      <description>I&amp;rsquo;ve updated the Blackberry Tracker site with some new features/bug fixes.
fixed tracking history to use the user&amp;#39;s time added &amp;#34;show all markers&amp;#34; to tracking history page scrolls to top when you click on a specific coordinate on history page added google earth kml to live tracking </description>
    </item>
    
    <item>
      <title>Blackberry Tracker</title>
      <link>/2007/08/30/blackberry-tracker/</link>
      <pubDate>Thu, 30 Aug 2007 00:53:10 +0000</pubDate>
      
      <guid>/2007/08/30/blackberry-tracker/</guid>
      <description>I recently wrote a web application that works with Blackberry devices that have GPS on them. The web application lets you track the location of the phone as well as view history of where you have been. Check it out. http://bb.tech9computers.com</description>
    </item>
    
    <item>
      <title>MSR206 Library</title>
      <link>/2007/08/06/msr206-library/</link>
      <pubDate>Mon, 06 Aug 2007 17:14:25 +0000</pubDate>
      
      <guid>/2007/08/06/msr206-library/</guid>
      <description>I recently purchased a Tysso MSE-750 Magnetic Stripe Encoder/Reader and decided to write a library to communicate with it in C++. I just started the project over at Google Code, which you can find here. Right now it can read 7-bit and 5-bit track data. I&amp;rsquo;m going to add the ability to write tracks next.
The MSE750 follows the MSR206 protocol, so the library should be compatible with any MSR206(or its derivatives like MSE-750) encoders.</description>
    </item>
    
    <item>
      <title>Sprint sucks</title>
      <link>/2007/07/18/sprint-sucks/</link>
      <pubDate>Wed, 18 Jul 2007 13:50:50 +0000</pubDate>
      
      <guid>/2007/07/18/sprint-sucks/</guid>
      <description>Another headache from sprint for me, check out my thread:
http://www.howardforums.com/showthread.php?t=1204331</description>
    </item>
    
    <item>
      <title>Cox Tempe Series2 Solution/Workaround</title>
      <link>/2007/06/10/cox-tempe-series2-solution/workaround/</link>
      <pubDate>Sun, 10 Jun 2007 16:55:56 +0000</pubDate>
      
      <guid>/2007/06/10/cox-tempe-series2-solution/workaround/</guid>
      <description>I recently purchased my first Tivo, an 80-hour Series2. I got home, hooked everything up, and after everything was setup I realized that Cox Communications in Tempe does not have any analog channels above 22(their &amp;ldquo;expanded&amp;rdquo; service). This made me really upset because I have lived in other areas in Phoenix and analog service above 22 was always available. I came to find out that in Tempe they are still using 550Mhz lines, which means they don&amp;rsquo;t have the bandwidth to put all of their services on so they took away the expanded channels from analog.</description>
    </item>
    
    <item>
      <title>BES Problem Fixed</title>
      <link>/2007/05/29/bes-problem-fixed/</link>
      <pubDate>Tue, 29 May 2007 05:57:53 +0000</pubDate>
      
      <guid>/2007/05/29/bes-problem-fixed/</guid>
      <description>After hours of staring at log files and trying everything known to man to get my BES server functioning properly, I finally found a fix.
It was as simple as re-creating the user in eDirectory/GroupWise and then adding the user again in BES. It was that easy?! BLAH!</description>
    </item>
    
    <item>
      <title>Blackberry Enterprise Server Issues</title>
      <link>/2007/05/28/blackberry-enterprise-server-issues/</link>
      <pubDate>Mon, 28 May 2007 22:01:35 +0000</pubDate>
      
      <guid>/2007/05/28/blackberry-enterprise-server-issues/</guid>
      <description>I recently purchased a Blackberry 8703e from Sprint and so far it is an awesome device. This is the first blackberry that I&amp;rsquo;ve ever owned and I can&amp;rsquo;t believe it took me this long to get one! Unfortunately I have been having some big issues while trying to get BES to communicate with my device. I have a GroupWise system which BES talks with to synchronize my e-mail, calendar, contacts, etc,.</description>
    </item>
    
    <item>
      <title>WPA Wireless Authentication with eDirectory and FreeRADIUS</title>
      <link>/2007/05/15/wpa-wireless-authentication-with-edirectory-and-freeradius/</link>
      <pubDate>Tue, 15 May 2007 14:26:05 +0000</pubDate>
      
      <guid>/2007/05/15/wpa-wireless-authentication-with-edirectory-and-freeradius/</guid>
      <description>Recently I&amp;rsquo;ve been playing around with Open Enterprise Server again and I found this old article I wrote about integrating eDirectory with wireless auth.
The goal of this article is to allow you to have your wireless access protected by WPA and have users authenticate to eDirectory for access to the wireless network. WPA (http://en.wikipedia.org/wiki/Wi-Fi_Protected_Access) is a wireless authentication standard used for controlling access to wireless networks. WPA can operate in a pre-shared key mode(router and client both know a secret password), or authentication can take place with a RADIUS server.</description>
    </item>
    
    <item>
      <title>Open Source in the Enterprise</title>
      <link>/2007/05/07/open-source-in-the-enterprise/</link>
      <pubDate>Mon, 07 May 2007 18:07:44 +0000</pubDate>
      
      <guid>/2007/05/07/open-source-in-the-enterprise/</guid>
      <description>Open source software has been around for a while in the enterprise server markets, but not in the desktop markets. In any given business you will most likely find Windows based desktops, with a small minority probably having Mac computers. The problem that I see with this is that when you start to employ thousands of Windows machines, your costs for licensing are insane. But with all the new user-friendly distributions of Linux, such as Ubuntu or OpenSUSE, it seems that it might be time to start evaluating some of these free desktop operating systems for use in the enterprise.</description>
    </item>
    
    <item>
      <title>kqueue socket class</title>
      <link>/2007/05/07/kqueue-socket-class/</link>
      <pubDate>Mon, 07 May 2007 04:08:59 +0000</pubDate>
      
      <guid>/2007/05/07/kqueue-socket-class/</guid>
      <description>Recently, I was researching a more efficient way for creating a TCP/IP server to handle multiple clients at once. I have used select() in the past, and that was probably the best thing I could find. I eventually came up with kqueue(), which is a way to asynchronously handle multiple sockets(or file descriptors). From what I read, it seemed to be a very efficient way to handle many clients. The only problem was that there was little information available for how to implement kqueue() in a sockets environment.</description>
    </item>
    
    <item>
      <title>Anti-Spam for Wordpress</title>
      <link>/2007/05/07/anti-spam-for-wordpress/</link>
      <pubDate>Mon, 07 May 2007 04:00:27 +0000</pubDate>
      
      <guid>/2007/05/07/anti-spam-for-wordpress/</guid>
      <description>I know that spam can be a real pain for blogs, so I decided to see what I could use for anti-spam for this blog. I&amp;rsquo;ve had blog spam in the past before, so I definitely needed to find something. I came across Peter&amp;rsquo;s Custom Anti-Spam Image Plugin for Wordpress.
It wasn&amp;rsquo;t working for me at first, but I figured this out to be because I hadn&amp;rsquo;t installed the php gd extension.</description>
    </item>
    
    <item>
      <title>Consumers and DRM content</title>
      <link>/2007/05/07/consumers-and-drm-content/</link>
      <pubDate>Mon, 07 May 2007 01:09:00 +0000</pubDate>
      
      <guid>/2007/05/07/consumers-and-drm-content/</guid>
      <description>It makes me so angry sometimes to read about all the DRM&amp;rsquo;d content there is out there and how the consumer is the one who really gets screwed. If I purchase an HD-DVD or BluRay movie for $35 and I want to be able to rip the movie and put it into a storable format on my computer, I damn well should be able to.
I suppose DRM exists to prevent piracy.</description>
    </item>
    
    <item>
      <title>Virtualization -- IT&#39;s best friend</title>
      <link>/2007/05/07/virtualization-its-best-friend/</link>
      <pubDate>Mon, 07 May 2007 00:37:42 +0000</pubDate>
      
      <guid>/2007/05/07/virtualization-its-best-friend/</guid>
      <description>I remember years ago whenever I wanted to play with a new server OS, it always required me to have a separate physical machine to run it on. This was a major drawback and made it difficult to experiment with designing server infrastructures consisting of multiple servers and tiers(clustering, load balancing, etc,.). If I wanted to load balance an Apache server and see the effects it had on the running application, it was difficult to emulate a bunch of Apache nodes running behind a load balancer because I only had access to one or two physical machines.</description>
    </item>
    
    <item>
      <title>You Know You&#39;re in College When...</title>
      <link>/2007/05/06/you-know-youre-in-college-when.../</link>
      <pubDate>Sun, 06 May 2007 23:56:51 +0000</pubDate>
      
      <guid>/2007/05/06/you-know-youre-in-college-when.../</guid>
      <description>Check out this list, I can definitely relate a lot of these.</description>
    </item>
    
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/about/</guid>
      <description>software engineer, hacker [1], AS206885 network operator, radio enthusiast E-Mail: chris [at] tech9computers.com  GPG Key: BF5E897B GitHub: https://github.com/chrismoos dn42 peering information: click here keybase.io: My username on keybase is chrismoos, you can find my proof here. Callsign: KI7JRI
 Projects  HPACK - Golang library implementing HPACK compression avr-os - Multitasking OS for Arduino and AVR platforms libhashring - Consistent hashing library  For more, see my GitHub.
 [1]: currently: white hat; was: black hat</description>
    </item>
    
    <item>
      <title>DN42 Peering</title>
      <link>/dn42-peering/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/dn42-peering/</guid>
      <description>There is a new, self-serve system for setting up your own peerings. At this time only WireGuard is supported.
The system can be accessed via:
$ ssh cli@cli.dn42.tech9.io Once logged in, you can create your own peerings, fully automated and setup immediately.
The following locations are available on the new system:
 us-chi01 us-dal01 us-qas01 de-fra02 sg-sin01 jp-tyo01  At this time I&amp;rsquo;m not accepting new peerings on the Legacy Peering system below.</description>
    </item>
    
  </channel>
</rss>
