Files
.com/feeds/Code.atom.xml
Kenneth Reitz 07e89e0375 content update
2011-01-03 01:39:45 -05:00

1911 lines
162 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Kenneth's log</title><link href="http://kennethreitz.com/blog/" rel="alternate"></link><link href="http://kennethreitz.com/blog//feeds/Code.atom.xml" rel="self"></link><id>http://kennethreitz.com/blog/</id><updated>2010-09-22T19:46:00Z</updated><entry><title>OS X Trash Freedom</title><link href="http://kennethreitz.com/blog//os-x-trash-freedom.html" rel="alternate"></link><updated>2010-09-22T19:46:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-09-22:/blog//os-x-trash-freedom.html/</id><summary type="html">&lt;p&gt;I noticed today that i had 120GiB of data in my Mac's Trashcan. I
had enough. so I tried to kill it, and discovered a nice hidden
feature. rm -fr ~/.Trash ln -s /dev/null ~/.Trash&lt;/p&gt;
&lt;p&gt;Now, when you delete a file in Finder, you get a nice pop-up
warning that the file will be permanently deleted.
&lt;a class="reference external" href="http://media.kennethreitz.com/blog/wp-content/uploads/Screen-shot-2010-09-22-at-3.44.33-PM.png"&gt;|image|&lt;/a&gt;
Bliss. ### Update (Setember 25th, 2010): As it turns out, OS X
defaults to this behavior whenever ~/.Trash is unwritable as a
folder. If you were to place any file in ~/.Trash, you would see
the same behaviour. Oh well, it's still rather useful in function.&lt;/p&gt;
</summary></entry><entry><title>ShowMe v1.0.0 Released</title><link href="http://kennethreitz.com/blog//showme-v100-released.html" rel="alternate"></link><updated>2010-09-16T05:41:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-09-16:/blog//showme-v100-released.html/</id><summary type="html">&lt;p&gt;This weekend, I released a new Python module to PyPi: ShowMe
v1.0.0. ShowMe is a simple set of function decorators that give you
easy diagnose common problems in your Python applications. Basic
Usage: ---------- &amp;#64;showme.trace def complex_function(a, b, c,
**kwargs): ....&lt;/p&gt;
&lt;pre class="literal-block"&gt;
&amp;gt;&amp;gt;&amp;gt; complex_function('alpha', 'beta', False, debug=True)
calling haystack.submodule.complex_function() with
args: ({'a': 'alpha', 'b': 'beta', 'c': False},)
kwargs: {'debug': True}
&lt;/pre&gt;
&lt;p&gt;It currently supports: * Argument call tracing * Execution Time
(in seconds) * CPU Execution Time * Docstrings Roadmap: * Add
&amp;#64;showme.locals Support * Add &amp;#64;showme.globals Support Installation
pip install showme
[&lt;a class="reference external" href="http://github.com/kennethreitz/showme"&gt;Source on GitHub&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>Tablib Dataset Library v0.6.1 Released!</title><link href="http://kennethreitz.com/blog//tablib-dataset-library-v061-released.html" rel="alternate"></link><updated>2010-09-13T01:22:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-09-13:/blog//tablib-dataset-library-v061-released.html/</id><summary type="html">&lt;p&gt;I'm pleased to announce a new Python module:
&lt;a class="reference external" href="http://github.com/kennethreitz/tablib"&gt;Tablib&lt;/a&gt;. Tablib is a
simple module for working with tabular datasets. It allows you
create tables of data using standard Python datatypes, manipulate
them, and easily export to Excel, JSON, YAML, and CSV. **Basic
Usage**: import tablib&lt;/p&gt;
&lt;pre class="literal-block"&gt;
headers = ('first_name', 'last_name', 'gpa')
data = [('John', 'Adams', 90), ('George', 'Washington', 67)]
data = tablib.Dataset(*data, headers=headers)
&lt;/pre&gt;
&lt;p&gt;You can maniuplate your data like a standard Python list: &amp;gt;&amp;gt;&amp;gt;
data.append(('Henry', 'Ford', 83))&lt;/p&gt;
&lt;pre class="literal-block"&gt;
&amp;gt;&amp;gt;&amp;gt; print data['first_name']
['John', 'George', 'Henry']
&amp;gt;&amp;gt;&amp;gt; del data[1]
&lt;/pre&gt;
&lt;p&gt;You can easily export your data to JSON, YAML, XLS, and CSV. &amp;gt;&amp;gt;&amp;gt;
print data.json [{&amp;quot;first_name&amp;quot;: &amp;quot;John&amp;quot;, &amp;quot;last_name&amp;quot;: &amp;quot;Adams&amp;quot;,
&amp;quot;gpa&amp;quot;: 90}, {&amp;quot;first_name&amp;quot;: &amp;quot;Henry&amp;quot;, &amp;quot;last_name&amp;quot;: &amp;quot;Ford&amp;quot;, &amp;quot;gpa&amp;quot;:
83}]&lt;/p&gt;
&lt;pre class="literal-block"&gt;
&amp;gt;&amp;gt;&amp;gt; print data.yaml
- {age: 90, first_name: John, last_name: Adams}
- {age: 83, first_name: Henry, last_name: Ford}
&amp;gt;&amp;gt;&amp;gt; print data.csv
first_name,last_name,age
John,Adams,90
Henry,Ford,83
&amp;gt;&amp;gt;&amp;gt; open('people.xls', 'w').write(data.xls)
&lt;/pre&gt;
&lt;p&gt;Excel files with multiple sheets are also supported (via the
`DataBook` object).
[&lt;a class="reference external" href="http://github.com/kennethreitz/tablib"&gt;Source on GitHub&lt;/a&gt;]
[&lt;a class="reference external" href="http://pypi.python.org/pypi/tablib"&gt;PyPi Listing&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>The Setup</title><link href="http://kennethreitz.com/blog//the-setup.html" rel="alternate"></link><updated>2010-08-03T00:43:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-08-03:/blog//the-setup.html/</id><summary type="html">&lt;p&gt;I'm Kenneth Reitz, one of the two co-founders of Züm Hosting. I'm a
passionate Python developer for &lt;a class="reference external" href="http://netapp.com"&gt;NetApp&lt;/a&gt;. I
typically spend my nights developing a number of open source
projects, and my weekends architecting the web.&lt;/p&gt;
&lt;div class="section" id="what-hardware-are-you-using"&gt;
&lt;h2&gt;What hardware are you using?&lt;/h2&gt;
&lt;p&gt;My sole machine is a 2010 MacBook Pro running a Core i7 processor
at 2.66 GHz w/ 8GB of DDR3
RAM. It's 15&amp;quot; non-reflective screen runs at a beautiful 1680 x
1050. It features both a 250GB SSD and 500 GB HDD, for a total of
750GB of local storage, thanks to the
&lt;a class="reference external" href="http://www.mcetech.com/optibay/"&gt;OptiBay&lt;/a&gt;. I often have it
hooked up to one of many 23&amp;quot; LCD monitors. For general audio, I
sport a pair of Bowers &amp;amp; Wilkins P5 Headphones. If I'm in a
high-fidelity mood, I listen through a pair of open-backed SR-60s
from Grado Labs. For telephony, I have an HTC Supersonic (EVO)
running running the Nighty Android 2.2 (Froyo) CyanogenMod v6. This
also functions as a perfectly portable hotspot. I read
documentation and play arcade games on a 64GB Apple iPad (wifi). I
play a PSP Go solely for Castlevania: Symphony of the Night. I have
a large number of very powerful
&lt;a class="reference external" href="http://www.linode.com/?r=7bd5ecafdec13147c6019ca1c90884dbf994d67f"&gt;Linode&lt;/a&gt;
servers at my disposal for various projects and builds. My system
is backed up regularly to a cheap 1TB Western Digital drive. My
media archives are backed up to a 1.5TB Seagate drive. My media
exists on a NAS attached to my Netgear WNR3500L router. My code is
backed up to various Git repositories local and across the net. All
web projects and databases of relevance are backed up to Amazon S3
on a nightly basis, along with all my tweets, Flickr photos, and
Gmail messages.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="and-what-software"&gt;
&lt;h2&gt;And what software?&lt;/h2&gt;
&lt;p&gt;I develop and
live on the latest build of Snow Leopard. My main Python
environment is the latest 2.7 release, along with well managed
virtualenvs for all other releases
&lt;a class="reference external" href="http://blog.mfabrik.com/2010/07/16/easily-install-all-python-versions-under-linux-and-osx-using-collective-buildout-python/"&gt;via Buildout&lt;/a&gt;.
I also employ a very large number of virtual machines, via VMWare
Fusion 3. I have a particularly efficient XP VM that is always up,
providing me with OneNote 2010. I'd do anything for Mactopia to
port OneNote to OS X. Anything. My development environment consists
of TextMate + PeepOpen, [most recently] PyCharm, SequelPro,
Titanium Mobile, Transmit, and GitX. I love using
&lt;a class="reference external" href="http://www.tuffcode.com/"&gt;HTTPScoop&lt;/a&gt; for request sniffing. My
favorite command-line utilities are: Terminal.app w/ Zsh + Git,
JoelTheLion's &lt;a class="reference external" href="http://github.com/joelthelion/autojump"&gt;autojump&lt;/a&gt;,
Defunkt's &lt;a class="reference external" href="http://github.com/defunkt/hub"&gt;Hub&lt;/a&gt; and
&lt;a class="reference external" href="http://github.com/defunkt/gist"&gt;Gist&lt;/a&gt;, Mcxl's
&lt;a class="reference external" href="http://mxcl.github.com/homebrew/"&gt;homebrew&lt;/a&gt;, nicksieger's
&lt;a class="reference external" href="http://github.com/nicksieger/jsonpretty"&gt;jsonpretty&lt;/a&gt;, and
Rtomayko's &lt;a class="reference external" href="http://github.com/rtomayko/bcat"&gt;bcat&lt;/a&gt;. On servers, I
typically run the latest Ubuntu Server release, or CentOS (but only
if I have to). I carry out heavy-duty writing with
&lt;a class="reference external" href="http://www.the-soulmen.com/ulyssescore/"&gt;Ulysses Core&lt;/a&gt;.
&lt;a class="reference external" href="http://www.acqualia.com/soulver/"&gt;Soulver&lt;/a&gt; is the best
number-crunching application around. I don't know how I lived
without it. My audio production work is carried out in Adobe
Audition CS3 and FL Studio 9. I use Adobe CS5 Master Collection for
light design work and photo retouching. Photoshop Lightroom for
kosher photography dark room work. I've been meaning to get into
Fireworks for wireframing, but haven't had the time as of late. As
for architecture work, I utilize OmniGraffle for diagraming,
Mockingbird / Balsamiq for mockups, and MindNode Pro for
mind-mapping. For note taking, as mentioned, I use OneNote 2010.
Nothing compares, except my Soft Large Squared Moleskine Notebook.
My tasks are managed with
&lt;a class="reference external" href="http://culturedcode.com/things/"&gt;Things.app&lt;/a&gt;. I can't wait till
they roll out proper syncing. If they don't do it fast enough, I'll
be switching to Macman's
&lt;a class="reference external" href="http://www.taskforceapp.com/"&gt;Taskforce&lt;/a&gt;. I use Kindle for
purchased books, and iBooks for PDF reading on the iPad. I consume
Google Reader via &lt;a class="reference external" href="http://reederapp.com/ipad/"&gt;Reeder&lt;/a&gt;, the most
beautiful application I have ever used. For Remote Desktop I use
&lt;a class="reference external" href="http://cord.sourceforge.net/"&gt;CoRD.app&lt;/a&gt;. Backups are performed
by &lt;a class="reference external" href="http://arrsync.sourceforge.net/"&gt;arRsync.app&lt;/a&gt;, a beautiful
interface for rsync. My desktop's windows are managed well with
&lt;a class="reference external" href="http://www.irradiatedsoftware.com/cinch/"&gt;Cinch.app&lt;/a&gt;. My music
library is provided by Spotify at offline, 320KBPS Ogg Vorbis
goodness. In the rare occasion that Spotify is missing an artist, I
use 320KBPS MP3s and FLAC recordings for the ultra-special tracks
(e.g. Liquid Tension Experiment). I buy my MP3s from the
(wonderful) Amazon MP3 Store. I keep my video library nice and
organized in iTunes, regardless of format, with
&lt;a class="reference external" href="http://www.iflicksapp.com/"&gt;iFlicks&lt;/a&gt;. I stream 1080 videos,
NetFlix, and BlueRay Disks with a Play Station 3 Slim. I play
emulated retro video games Wii. Best $200 I've ever spent. For
communication, I use iChat + Chax, Linkinus, Echofon, and Skype.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="what-would-be-your-dream-setup"&gt;
&lt;h2&gt;What would be your dream setup?&lt;/h2&gt;
&lt;p&gt;No more chords.&lt;/p&gt;
&lt;/div&gt;
</summary></entry><entry><title>OS X Development Tool: RegExihbit</title><link href="http://kennethreitz.com/blog//os-x-development-tool-regexihbit.html" rel="alternate"></link><updated>2010-07-26T03:12:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-07-26:/blog//os-x-development-tool-regexihbit.html/</id><summary type="html">&lt;p&gt;Working with overly complex Regular Expressions can quickly become
quite an ordeal of trial and error. RegExhibit is a fantastic tool
for OS X users that allows you to see matches as you type.
&lt;a class="reference external" href="http://media.kennethreitz.com/blog/wp-content/uploads/Screen-shot-2010-07-25-at-11.08.55-PM.png"&gt;|image|&lt;/a&gt;
[&lt;a class="reference external" href="http://homepage.mac.com/roger_jolly/software/"&gt;Reg Exibit&lt;/a&gt;]
[&lt;a class="reference external" href="http://homepage.mac.com/roger_jolly/software/downloads/regexhibit/RegExhibit.zip"&gt;Download&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>Unix Exit Status Code Reference</title><link href="http://kennethreitz.com/blog//unix-exit-status-code-reference.html" rel="alternate"></link><updated>2010-07-13T19:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-07-13:/blog//unix-exit-status-code-reference.html/</id><summary type="html">&lt;p&gt;I always find myself constantly Googling the list of unix status
codes (typically defined in `sysexits.h`). 0 # successful
termination 64 # base value for error messages 64 # command line
usage error 65 # data format error 66 # cannot open input
67 # addressee unknown
68 # host name unknown 69 # service unavailable 70 # internal
software error 71 # system error (e.g., can't fork) 72 # critical
OS file missing 73 # can't create (user) output file 74 #
input/output error 75 # temp failure; user is invited to retry 76 #
remote error in protocol 77 # permission denied 78 # configuration
error&lt;/p&gt;
</summary></entry><entry><title>Terminal Productivity App: AutoJump</title><link href="http://kennethreitz.com/blog//terminal-productivity-app-autojump.html" rel="alternate"></link><updated>2010-07-07T03:20:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-07-07:/blog//terminal-productivity-app-autojump.html/</id><summary type="html">&lt;p&gt;On average, I'd say I spend 65% of the workday in a terminal
session. About 95% of that time is within the same same 4
directories. `cd foo` &amp;amp; `cd bar` can get old. **AutoJump**
is a &amp;quot;cd command that learns&amp;quot;. It tracks shell history to detect
which directories you spend the most time in, and allows you to
*jump* to them without any directory context. It even supports
Zsh tab completion. :) From this: `cd
/Users/kreitz/repos/public/gistapi` To this: `j gistapi` Life is
good.
[&lt;a class="reference external" href="http://wiki.github.com/joelthelion/autojump/"&gt;Project Page&lt;/a&gt;]
[&lt;a class="reference external" href="http://github.com/joelthelion/autojump"&gt;Source on GitHub&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>GistAPI.py v0.1 Released</title><link href="http://kennethreitz.com/blog//gistapipy-v01-released.html" rel="alternate"></link><updated>2010-05-16T21:41:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-05-16:/blog//gistapipy-v01-released.html/</id><summary type="html">&lt;p&gt;Today I released GistAPI.py v0.1.2. It features a highly-optimized
Gist object model and API wrapper which allows you to consume Gists
in your next Python application. GitHub just rolled out a miniature
pre-release of the
&lt;a class="reference external" href="http://develop.github.com/p/gist.html"&gt;Gist API&lt;/a&gt; last month, so
API functionality is pretty limited at the moment. More features
will be added as soon as the API is updated. ## Usage from gistapi
import *&lt;/p&gt;
&lt;pre class="literal-block"&gt;
gist = Gist('d4507e882a07ac6f9f92')
gist.description # 'Example Gist for gist.py'
gist.created_at # '2010/05/16 10:51:15 -0700'
gist.public # False
gist.filenames # ['exampleEmptyFile', 'exampleFile']
gist.files['exampleFile'] # 'Example file content.'
&lt;/pre&gt;
&lt;p&gt;&lt;a class="reference external" href="http://github.com/kennethreitz/gistapi.py/"&gt;Source on GitHub&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Notes on git-svn</title><link href="http://kennethreitz.com/blog//notes-on-git-svn.html" rel="alternate"></link><updated>2010-05-13T21:42:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-05-13:/blog//notes-on-git-svn.html/</id><summary type="html">&lt;p&gt;I'm forced to use SVN at the office. It's not THAT bad. OK, so
maybe it's absolutely horrible. But it's more than understandable
on their end. Those darn `.svn` folders drove me crazy. So, I use
git-svn. Git-svn allows me to harness all the power of git with a
subversion server. Perfect. (Or at least it's the best of a bad
situation.) ### Setup `git svn clone repo://url` ### Commands
`git svn dcommit --` commit your changes `git svn rebase --`
update your working copy `git stash --` stash your changes `git
stash apply --` take back your stash `git stash clear --` clear
the stash #### See Also:
&lt;a class="reference external" href="http://github.com/jcoglan/svn2git"&gt;svn2git&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Semantic Versioning</title><link href="http://kennethreitz.com/blog//semantic-versioning.html" rel="alternate"></link><updated>2010-05-09T08:46:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-05-09:/blog//semantic-versioning.html/</id><summary type="html">&lt;p&gt;While listening to this week's episode of
&lt;a class="reference external" href="http://thechangelog.com"&gt;The Changelog&lt;/a&gt;, I came across Tom
Preston-Werner's
&lt;a class="reference external" href="http://semver.org/"&gt;Semantic Versioning Specification&lt;/a&gt;. I love
what I found. For many years, the open source community has been
plagued with version number dystonia. Numbers vary so greatly from
project to project, they are practically meaningless. This
specification seeks to put an end to this madness with a small set
of practical guidelines for you and your colleagues to use in your
next project. Included is a helpful guideline for correlating
repository tagging. In good taste, Mojombo also opened up the
website. If you'd like to contribute to the site, just fork the
repository, make your changes, and send a pull request. The way it
should be. [&lt;a class="reference external" href="http://semver.org/"&gt;Semantic Versioning&lt;/a&gt;]
[&lt;a class="reference external" href="http://github.com/mojombo/semver.org"&gt;Source on GitHub&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>iPad Apps Worth Lusting For</title><link href="http://kennethreitz.com/blog//ipad-apps-worth-lusting-for.html" rel="alternate"></link><updated>2010-04-04T17:57:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-04-04:/blog//ipad-apps-worth-lusting-for.html/</id><summary type="html">&lt;p&gt;The distaste hackers and developers have towards the iPad was
initially understandable. Now that it's out, I think everyone
should hold one in their hand before they make any outlandish
statements against it. Eric Sink sums it up pretty perfectly. &amp;gt;
Computers, by and large, are still designed for geeks. This is why
we all buy T-shirts that say “No, I will not fix your computer”.
The genius of the iPad is that it cannot get things like viruses.
It is a closed platform. You cant put apps on it. You cant write
and distribute software for it without Apples permission. This is
why geeks hate it and normal people will love it.&lt;/p&gt;
&lt;p&gt;— Eric Sink&lt;/p&gt;
&lt;p&gt;I have yet to succumb to the temptation to buy an iPad. I haven't
been able to justify the steep $499 price tag. I might end up
forcing myself to get one. If I do, here's why: ##
&lt;a class="reference external" href="http://culturedcode.com/things/ipad/"&gt;Things&lt;/a&gt; by
&lt;a class="reference external" href="http://culturedcode.com/"&gt;Cultured Code&lt;/a&gt; ##
&lt;a class="reference external" href="http://blog.instapaper.com/post/469281634"&gt;Instapaper&lt;/a&gt; &lt;img alt="image" src="http://media.tumblr.com/tumblr_kzrjkt6sQr1qz4rgr.png" /&gt;&lt;/p&gt;
</summary></entry><entry><title>Crash IE6 WordPress Plugin</title><link href="http://kennethreitz.com/blog//crash-ie6-wordpress-plugin.html" rel="alternate"></link><updated>2010-03-31T16:34:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-31:/blog//crash-ie6-wordpress-plugin.html/</id><summary type="html">&lt;p&gt;## I decided to have a little fun today during lunch, so I wrote a
WordPress + jQuery plugin for Crashing IE 6. ### Once activated, IE
6 will instantly crash on page load. Enjoy :)&lt;/p&gt;
</summary></entry><entry><title>Getting Started with Python</title><link href="http://kennethreitz.com/blog//getting-started-with-python.html" rel="alternate"></link><updated>2010-03-29T06:38:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-29:/blog//getting-started-with-python.html/</id><summary type="html">&lt;p&gt;## For the past couple of weeks, I've been working on a Python
tutorial series for beginners. They just went live.
&lt;a class="reference external" href="http://www.vtc.com/products/QuickStart!-Python-Tutorials.htm"&gt;Give them a watch&lt;/a&gt;
and let me know what you think!&lt;/p&gt;
</summary></entry><entry><title>Basic Authentication protected files (htpasswd)</title><link href="http://kennethreitz.com/blog//basic-authentication-protected-files-htpasswd.html" rel="alternate"></link><updated>2010-03-29T04:58:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-29:/blog//basic-authentication-protected-files-htpasswd.html/</id><summary type="html">&lt;p&gt;## Here's a snippet for password protecting a directory served by
Apache To set this up, just add `.htaccess` and `.htpasswd` to
the desired directory being served by Apache . Make sure to
&lt;a class="reference external" href="http://www.htaccesstools.com/htpasswd-generator/"&gt;generate your own .htpasswd file&lt;/a&gt;.
For more `htaccess` snippets, checkout PerishablePress'
&lt;a class="reference external" href="http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/"&gt;Stupid .htaccess Tricks&lt;/a&gt;.&lt;/p&gt;
</summary></entry><entry><title>Apache GZip Deflate Compression</title><link href="http://kennethreitz.com/blog//apache-gzip-deflate-compression.html" rel="alternate"></link><updated>2010-03-29T04:05:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-29:/blog//apache-gzip-deflate-compression.html/</id><summary type="html">&lt;p&gt;Here's a quick Apache `.htaccess` file for adding server-side
data compression.&lt;/p&gt;
</summary></entry><entry><title>Baconfile: Awesome Public S3 Bucket Frontend</title><link href="http://kennethreitz.com/blog//baconfile-awesome-public-s3-bucket-frontend.html" rel="alternate"></link><updated>2010-03-09T02:28:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-09:/blog//baconfile-awesome-public-s3-bucket-frontend.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://baconfile.com"&gt;|baconfile-sticker.png|&lt;/a&gt; ## Amazon S3 is a
fantastic data storage platform — I use it for everything. It's
perfect for sharing data with friends. The only disadvantage is the
interface: there is none. You can manage your buckets files with
REST requests, along with a number of desktop clients. That's fine,
but what about your visitors? The only way to show them what you
have to offer is to build a frontend system that ties into the API.
### The Solution &lt;strong&gt;Baconfile&lt;/strong&gt;: Simple S3 Frontend. You'll never be
happier. Check out me out at
&lt;a class="reference external" href="http://baconfile.com/KennethReitz/"&gt;Baconfile&lt;/a&gt;.&lt;/p&gt;
</summary></entry><entry><title>Dev Tool: Ghost #manage /etc/hosts</title><link href="http://kennethreitz.com/blog//dev-tool-ghost-manage-etchosts.html" rel="alternate"></link><updated>2010-03-08T08:15:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-08:/blog//dev-tool-ghost-manage-etchosts.html/</id><summary type="html">&lt;p&gt;## The Ruby community has really been blowing me away lately with
their array of indispensable web development tools. **Ghost**
is no exception to this rule. It is a simple command line
application for adding and removing 127.0.0.1 entries in your
`/etc/hosts` file. I can't believe I hadn't thought of this
sooner. ###Example Usage $ ghost add mydevsite.local [Adding]
mydevsite.local -&amp;gt; 127.0.0.1 $ ghost add staging-server.local
67.207.136.164 [Adding] staging-server.local -&amp;gt; 67.207.136.164 $
ghost list Listing 2 host(s): mydevsite.local -&amp;gt; 127.0.0.1
staging-server.local -&amp;gt; 67.207.136.164 $ ghost delete
mydevsite.local [Deleting] mydevsite.local ### Installation sudo
gem install ghost&lt;/p&gt;
&lt;hr class="docutils" /&gt;
&lt;p&gt;Yes, it's really that easy. Make sure to checkout the
&lt;a class="reference external" href="http://github.com/bjeanes/ghost"&gt;GitHub Repo&lt;/a&gt; to contribute!&lt;/p&gt;
</summary></entry><entry><title>Change of Heart &amp;amp; Moleskine</title><link href="http://kennethreitz.com/blog//change-of-heart-amp-moleskine.html" rel="alternate"></link><updated>2010-03-08T06:08:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-03-08:/blog//change-of-heart-amp-moleskine.html/</id><summary type="html">&lt;p&gt;## I've always been a huge fan of
&lt;a class="reference external" href="http://media.kennethreitz.com/blog/wp-content/uploads/moleskine.jpg"&gt;Mokeskine notebooks &amp;lt;http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=https://www.amazon.com/s?ie=UTF8&amp;amp;x=0&amp;amp;ref_=nb_sb_ss_i_0_9&amp;amp;y=0&amp;amp;field-keywords=moleskine&amp;amp;url=search-alias=aps&amp;amp;sprefix=moleskine&amp;amp;tag=bookforkind-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957&amp;gt;`_|image|
&amp;amp; I use them for everything—from product ideas to mockup sketching.
It all started when I was a student at George Mason University. The
student book store had a small selection by the checkout counter. I
bought a pocket-sized ruled notebook to keep track of my todo list.
As soon as I unravelled the shrink wrap, my attention was brought
to the informational leaflet. I was instantly hooked. After three
years of using the Hard Lined Large Notebooks, I've recently
migrated to a notebook that better suits my needs: The *Soft
Squared Large Notebook* is the ultimate Moleskine.
`|image1|&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>It's All a Matter of Perspective</title><link href="http://kennethreitz.com/blog//its-all-a-matter-of-perspective.html" rel="alternate"></link><updated>2010-02-27T20:56:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-02-27:/blog//its-all-a-matter-of-perspective.html/</id><summary type="html">&lt;p&gt;An incredible reminder to look at the other side of things. &lt;img alt="image" src="http://web.mit.edu/persci/people/adelson/images/checkershadow/checkershadow_illusion4med.jpg" /&gt;
The squares marked &lt;strong&gt;A&lt;/strong&gt; and &lt;strong&gt;B&lt;/strong&gt; are the same shade of
grey.`(proof) &amp;lt;&lt;a class="reference external" href="http://web.mit.edu/persci/people/adelson/images/checkershadow/checkershadow_double_med.jpg"&gt;http://web.mit.edu/persci/people/adelson/images/checkershadow/checkershadow_double_med.jpg&lt;/a&gt;&amp;gt;`_&lt;/p&gt;
</summary></entry><entry><title>The Future of Social Media is Here: Google Buzz</title><link href="http://kennethreitz.com/blog//the-future-of-social-media-is-here-google-buzz.html" rel="alternate"></link><updated>2010-02-11T18:40:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-02-11:/blog//the-future-of-social-media-is-here-google-buzz.html/</id><summary type="html">&lt;p&gt;I'm all over Google Buzz. It's exactly what I've been looking for.
&amp;gt; Imagine taking elements of Twitter, Yammer, Foursquare, Yelp, and
other social services, and shoving them together into one package.
Now imagine covering that package in a layer that looks a lot like
FriendFeed. Now imagine shoving that package inside of Gmail.
Thats Buzz. — MG Siegler of
&lt;a class="reference external" href="http://techcrunch.com/2010/02/09/if-google-wave-is-the-future-google-buzz-is-the-present/"&gt;TechCrunch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I couldn't say it any better myself. I highly encourage anyone and
everyone to start using it as your main social aggregator
immediately. This is software sophistication at it's finest. Check
out
&lt;a class="reference external" href="http://google.com/profiles/thepythonist#buzz"&gt;my latest buzz&lt;/a&gt;.&lt;/p&gt;
</summary></entry><entry><title>Snowpocalypse</title><link href="http://kennethreitz.com/blog//snowpocalypse.html" rel="alternate"></link><updated>2010-02-11T13:46:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-02-11:/blog//snowpocalypse.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://www.acriddle.com/wp-content/uploads/2010/02/100206_Blizzard_of_2010-39_450.jpg"&gt;|100206_Blizzard_of_2010-39_450.jpg|&lt;/a&gt;
&lt;a class="reference external" href="http://www.acriddle.com/2010/02/06/portfolio-photography/landscape-and-nature-photography/blizzard-of-2010-photographs-in-winchester-virginia/"&gt;See more photosby Aaron Riddle&lt;/a&gt;
Snow, snow, snow, snow. I've never been so tired of the word. My
small town of Winchester, VA suffered from over 3 feet of snow over
the past week. Everything shutdown. I am reminded importance of
infrastructure. I lived in Minnesota for 5 years, and have never
seen so much panic from some simple snow. They have the
infrastructure in place there. They can handle the snow. Winchester
was totally unprepared for it. It's amazing.&lt;/p&gt;
</summary></entry><entry><title>Spotify in the US? Yes please.</title><link href="http://kennethreitz.com/blog//spotify-in-the-us-yes-please.html" rel="alternate"></link><updated>2010-01-17T19:03:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-01-17:/blog//spotify-in-the-us-yes-please.html/</id><summary type="html">&lt;p&gt;##I spent about 8 hours last night obtaining a Premium Spotify
account in the US, and I've never been happier. As you know,
&lt;a class="reference external" href="http://spotify.com"&gt;Spotify&lt;/a&gt; is only available in the UK, Spain,
and France. So, the only way to signup for an account it to take a
trip overseas... virtually. ## Step 1: Signup for a virtual private
server Signup for a &lt;a class="reference external" href="http://linode.com"&gt;Linode&lt;/a&gt; account, and buy
a 360 VPS. Linode allows you to choose a datacenter when you buy a
VPS, and luckily, they have a datacenter in the UK. This will run
you $20 a month. ## Step 2: Install Ubuntu and Boot Your VPS
Install Ubuntu Server on your new british hackbox. You can SSH in
to test it out. Have fun. Make sure openssh-server is installed. ##
Step 3: Edit Hosts File Append the following lines to your
&lt;tt class="docutils literal"&gt;/etc/hosts&lt;/tt&gt; file: 127.0.0.1 spotify.com 127.0.0.1
www.spotify.com [your vps ip] hackbox&lt;/p&gt;
&lt;p&gt;## Step 4: Open a Reverse SSH Forwarding Tunnel sudo ssh -C
&lt;a class="reference external" href="mailto:root&amp;#64;hackbox"&gt;root&amp;#64;hackbox&lt;/a&gt; -L 443:spotify.com:443 sudo ssh -C root&amp;#64;hackbox -L
80:spotify.com:480&lt;/p&gt;
&lt;p&gt;Congratulations. You're now a Brit. ## Step 5: Create an Account
While creating an account, you are prompted for you postal code. I
did some
&lt;a class="reference external" href="http://www.google.com/search?hl=en&amp;amp;safe=off&amp;amp;client=safari&amp;amp;rls=en&amp;amp;q=winchester+hampshire+office&amp;amp;aq=f&amp;amp;oq=&amp;amp;aqi="&gt;google-fu&lt;/a&gt;
and used &lt;tt class="docutils literal"&gt;SO23 8TH&lt;/tt&gt; as my postal code for Winchester, Hampshire
UK. &lt;a class="reference external" href="http://spotify.com/en/download/"&gt;Download the client&lt;/a&gt;. ##
Step 6: Enjoy :) You now have unlimited access to a library of
~8,000,000 tracks, as if they were on your own computer. Once every
two weeks, you'll have to reopen your SSH tunnels and login at
&lt;a class="reference external" href="http://spotify.com"&gt;spotify.com&lt;/a&gt; to proveyou'll be good to go.
This restriction is lifted if you signup for a Premium account. I
highly recommend this, as it allows you to listen to your music at
320 kbps. I'd tell you how, but I'd rather enjoy the fruits of my
hard labor.&lt;/p&gt;
</summary></entry><entry><title>Google Docs Now Supports All Filetypes</title><link href="http://kennethreitz.com/blog//google-docs-now-supports-all-filetypes.html" rel="alternate"></link><updated>2010-01-12T17:45:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-01-12:/blog//google-docs-now-supports-all-filetypes.html/</id><summary type="html">&lt;p&gt;For an extra $5 a month, &lt;a class="reference external" href="http://evernote.com"&gt;Evernote&lt;/a&gt; lets you
upload a file of any extension to their servers. This is a
fantastic feature for developers who like to keep their random psd
and 3ds files in sync with the cloud. Looks like Google finally
took the hint. Within the next few weeks, they will be rolling out
(in the typical staggered unveiling) the ability to upload up to 1
GB of files to Google Docs. Additional storage space will be $0.25
/ GB / Year. That's one tenth the price of Amazon S3! [
&lt;a class="reference external" href="http://googledocs.blogspot.com/2010/01/upload-and-store-your-files-in-cloud.html"&gt;Google Press Release&lt;/a&gt;
]&lt;/p&gt;
</summary></entry><entry><title>Google AdWords for TV. Yes, TV.</title><link href="http://kennethreitz.com/blog//google-adwords-for-tv-yes-tv.html" rel="alternate"></link><updated>2010-01-11T16:57:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-01-11:/blog//google-adwords-for-tv-yes-tv.html/</id><summary type="html">&lt;p&gt;Today, Google unveiled their latest technology:
&lt;a class="reference external" href="http://www.google.com/adwords/tvads/index-b.html"&gt;AdWords for TV&lt;/a&gt;
and
&lt;a class="reference external" href="https://www.google.com/adsense/www/en_US/tv/"&gt;AdSense for TV&lt;/a&gt;.
This totally blows my mind. They are about to totally revolutionize
the television industry. You can manage TV ads just like you manage
AdWords ads for the web. You enter the amount you're willing to pay
per impression, and your daily budget, and Google does the rest.
Google is the future of all advertizing. NBC, be afraid. From
Google: The results were extraordinary. Web traffic to ooVoo.com
increased by 500% and ooVoo-related search queries rose by more
than 200% over pre-campaign levels.&amp;quot;
&lt;em&gt;- Lisa Abourezk, VP of marketing, ooVoo&lt;/em&gt;&lt;/p&gt;
</summary></entry><entry><title>My Standard CSS Attributes</title><link href="http://kennethreitz.com/blog//my-standard-css-attributes.html" rel="alternate"></link><updated>2010-01-10T18:20:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-01-10:/blog//my-standard-css-attributes.html/</id><summary type="html">&lt;p&gt;This is my minimal set of CSS Attributes that I use on nearly every
project I work on. If you have any improvement suggestions, feel
free to share.&lt;/p&gt;
</summary></entry><entry><title>New Years Resolutions for Startups</title><link href="http://kennethreitz.com/blog//new-years-resolutions-for-startups.html" rel="alternate"></link><updated>2010-01-03T20:07:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2010-01-03:/blog//new-years-resolutions-for-startups.html/</id><summary type="html">&lt;p&gt;Here's a small list of 2009 &lt;em&gt;New Year's Resolutions&lt;/em&gt; for your
startup. ### 1. Simplify Anyone can make something complex. It
takes thoughtful planning, consideration, and discipline to make
something simple. Simple = elegant. The same applies to your
business. ### 2. Get some Humility Don't assume you know what your
audience wants.
&lt;a class="reference external" href="http://www.fourhourworkweek.com/blog/2009/12/13/how-to-create-a-global-phenomenon-for-less-than-10000/"&gt;Find out first&lt;/a&gt;.
### 3. Release a Real Product 10,000 great ideas are worthless if
you never act upon them. Pick one. Pick three and mix. Release. ###
4. The Opposite is Also True Your product can be enormously
successful for a single feature. Someone else's product will be
even more successful for excluding that same feature. ### 5. Loose
the Bulk Startups
&lt;a class="reference external" href="http://cdixon.tumblr.com/post/311546950/things-startups-do-and-dont-need"&gt;don't need much&lt;/a&gt;.
The more you spend, the less you earn. Keep things small. Keep
things simple. You'll thrive.&lt;/p&gt;
</summary></entry><entry><title>Why Ruby Scares Me</title><link href="http://kennethreitz.com/blog//why-ruby-scares-me.html" rel="alternate"></link><updated>2009-12-20T08:33:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-20:/blog//why-ruby-scares-me.html/</id><summary type="html">&lt;p&gt;Ruby scares me. It's not the language that strikes fear in my
heart, however; it is the community. &lt;img alt="image" src="http://s3.amazonaws.com/media.kennethreitz.com/scared-smaller-87.jpg" /&gt; ## The Reasons 1. They
treat Ruby as the Messiah — there is nothing better. There is
nothing else. Only Ruby. 2. Community Leader Idol Wordship — did
anyone catch the (online presence) death of
&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff"&gt;_why&lt;/a&gt;? 3.
&amp;quot;Now we can finally get things done&amp;quot;. — See next question. 4. Have
you ever seen Ruby code? Look at below. 5. See Reason # 4. def
remember(&amp;amp;a_block) &amp;#64;block = a_block end&lt;/p&gt;
&lt;pre class="literal-block"&gt;
remember {|name| puts &amp;quot;Hello, #{name}!&amp;quot;}
&amp;#64;block.call(&amp;quot;Jon&amp;quot;)
# =&amp;gt; &amp;quot;Hello, Jon!&amp;quot;
&lt;/pre&gt;
&lt;p&gt;Can you really tell me, with a degree of certainty, what that's
supposed to do? Please, just shoot me now.&lt;/p&gt;
</summary></entry><entry><title>Do You Develop Software or Experiences?</title><link href="http://kennethreitz.com/blog//do-you-develop-software-or-experiences.html" rel="alternate"></link><updated>2009-12-20T07:05:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-20:/blog//do-you-develop-software-or-experiences.html/</id><summary type="html">&lt;p&gt;I read an
&lt;a class="reference external" href="http://www.antipope.org/charlie/blog-static/2009/12/21st_century_phone.html"&gt;interesting article&lt;/a&gt;
today on Apple's marketing strategy. A certain section stood out to
me, regarding their hardware manufacturing: &amp;gt; Apple is an
experience company. They're a high-end marque; if they &amp;gt; were in
the automobile business, they'd be BMW, Mercedes, and &amp;gt; Porsche
rolled into one. They own about 12% of the PC market in the &amp;gt;
USA... but 91% of the high end of the PC market (laptops over $999,
&amp;gt; desktops over $699).&lt;/p&gt;
&lt;p&gt;— Charlie Stross of
&lt;a class="reference external" href="http://www.antipope.org/charlie/blog-static/2009/12/21st_century_phone.html"&gt;Antipope.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;## The Point: &lt;a class="reference external" href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt; and
&lt;a class="reference external" href="http://37signals.com/"&gt;37Signals&lt;/a&gt; both recommend marketing
yourself to the early adopters and geeks. Apple, however, does the
opposite. They market themselves to the middle market — the
incredibly non-technical. The geeks come on their own, with no
marketing needed. They love it. And this makes Apple *enormously*
successful. **Develop your software/experience for the
masses**. Make the geeks love it, but make them find it on their
own. Just a thought.&lt;/p&gt;
</summary></entry><entry><title>Best CSS Reset Around</title><link href="http://kennethreitz.com/blog//best-css-reset-around.html" rel="alternate"></link><updated>2009-12-20T03:09:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-20:/blog//best-css-reset-around.html/</id><summary type="html">&lt;p&gt;Lets face it, cross-browser CSS can be a real pain. This helps.&lt;/p&gt;
</summary></entry><entry><title>MediaTemple (dv) Backup to S3 Script</title><link href="http://kennethreitz.com/blog//mediatemple-dv-backup-to-s3-script.html" rel="alternate"></link><updated>2009-12-18T14:38:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-18:/blog//mediatemple-dv-backup-to-s3-script.html/</id><summary type="html">&lt;p&gt;## The Problem &lt;a class="reference external" href="http://mediatemple.net"&gt;MediaTemple&lt;/a&gt; servers run
the *Plesk Control Panel*, which *has* a reputation for having
*useless backups*. ## The Solution * MySQL Dumps of all
Databases and Tables * All configured vhosts, zipped up * Pushes
it all to either S3 or FTP Stick it in &lt;tt class="docutils literal"&gt;/etc/cron.daily/&lt;/tt&gt;, and
you'll be good to go. No more worries. No more headaches. Ever.
**Note:** Standard FTP is also supported. ### The Code:&lt;/p&gt;
</summary></entry><entry><title>Fizz Buzz in Python</title><link href="http://kennethreitz.com/blog//fizz-buzz-in-python.html" rel="alternate"></link><updated>2009-12-17T16:53:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-17:/blog//fizz-buzz-in-python.html/</id><summary type="html">&lt;p&gt;Jeff Atwood of &lt;a class="reference external" href="http://codinghorror.com"&gt;Coding Horror&lt;/a&gt; has
developed a sure fire test to filter out &lt;em&gt;good programmers&lt;/em&gt; from
&lt;em&gt;bad ones&lt;/em&gt;. It's called
&lt;a class="reference external" href="http://www.codinghorror.com/blog/archives/000781.html"&gt;the FizzBuzz test&lt;/a&gt;,
and it's a very simple problem to solve. Enjoy! If you'd like to
learn more about programming, &lt;a class="reference external" href="/contact-me/"&gt;contact me&lt;/a&gt; for a
one-on-one lesson. for i in range(1,101): if not i % 15: print
&amp;quot;FizzBuzz&amp;quot; elif not i % 3: print &amp;quot;Fizz&amp;quot; elif not i % 5: print
&amp;quot;Buzz&amp;quot; else: print i&lt;/p&gt;
</summary></entry><entry><title>Facebook and Google Launch Url Shortners</title><link href="http://kennethreitz.com/blog//facebook-and-google-launch-url-shortners.html" rel="alternate"></link><updated>2009-12-14T23:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-14:/blog//facebook-and-google-launch-url-shortners.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://goo.gl"&gt;goo.gl&lt;/a&gt; and &lt;a class="reference external" href="http://fb.me"&gt;fb.me&lt;/a&gt;,
respectively.&lt;/p&gt;
</summary></entry><entry><title>Google Launches Public DNS Service</title><link href="http://kennethreitz.com/blog//google-launches-public-dns-service.html" rel="alternate"></link><updated>2009-12-03T17:18:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-03:/blog//google-launches-public-dns-service.html/</id><summary type="html">&lt;p&gt;Google just launched a
&lt;a class="reference external" href="http://code.google.com/speed/public-dns/"&gt;Public DNS Service&lt;/a&gt;,
much like OpenDNS. ###Let me Try! To give it a try, change your
computer (our router)'s DNS servers.
&lt;tt class="docutils literal"&gt;DNS Servers: 4.3.2.1, 8.8.8.8, 8.8.4.4&lt;/tt&gt; I expect this to have
significantly greater adoption rates than OpenDNS, since the IP
Address of the servers are much easier to remember.&lt;/p&gt;
</summary></entry><entry><title>Yahoo to Introduce Full Facebook Connect</title><link href="http://kennethreitz.com/blog//yahoo-to-introduce-full-facebook-connect.html" rel="alternate"></link><updated>2009-12-02T18:42:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-02:/blog//yahoo-to-introduce-full-facebook-connect.html/</id><summary type="html">&lt;p&gt;Yahoo, Inc
&lt;a class="reference external" href="http://yhoo.client.shareholder.com/press/releasedetail.cfm?ReleaseID=427720"&gt;just announced&lt;/a&gt;
that it will integrate Facebook Connect for all accounts. I love
this.&lt;/p&gt;
&lt;p&gt;Continuing its commitment to be the center of people's online
lives, Yahoo! Inc. (NASDAQ:YHOO) today announced further
integration with Facebook that unites social experiences from
across the Web to provide a place for consumers to enjoy meaningful
content and stay in touch with the people they care about most.
&amp;quot;With this integration, we are opening the door for two of the
Internet's largest online communities to make it easier for people
to stay connected,&amp;quot; said Jim Stoneham, vice president of
Communities for Yahoo!. &amp;quot;It also enables us to further the Yahoo!
Open Strategy, which is aimed at making experiences dramatically
more open, social and personally relevant for the more than 500
million people that visit Yahoo! each month.&amp;quot;&lt;/p&gt;
</summary></entry><entry><title>Asynchronous Google Analytics!</title><link href="http://kennethreitz.com/blog//asynchronous-google-analytics.html" rel="alternate"></link><updated>2009-12-02T13:29:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-02:/blog//asynchronous-google-analytics.html/</id><summary type="html">&lt;p&gt;Google Analytics now supports Asyncronous loads, which allow the
browser to continue loading content while &lt;strong&gt;ga.js&lt;/strong&gt; is being
loaded. Now it's safe to put the script tag in the &lt;tt class="docutils literal"&gt;&amp;lt;head&amp;gt;&lt;/tt&gt; for
you XHTML STRICT junkies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here's the new code to do so:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="literal-block"&gt;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') +
'.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
&lt;/pre&gt;
&lt;p&gt;## WordPress Plugin Update I love this new code clip so much, I
decided to write a WordpPress Plugin for it. Enjoy! -
&lt;a class="reference external" href="http://github.com/kennethreitz/async-google-analytics-wordpress-plugin"&gt;GitHub Project Page&lt;/a&gt;
-
&lt;a class="reference external" href="http://github.com/kennethreitz/async-google-analytics-wordpress-plugin/zipball/master"&gt;Direct WordPress Plugin&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>How's My Code?</title><link href="http://kennethreitz.com/blog//hows-my-code.html" rel="alternate"></link><updated>2009-12-01T19:56:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-01:/blog//hows-my-code.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://howsmycode.com"&gt;How's My Code?&lt;/a&gt; is a new service for peer
code review that is decentralized, and available wherever you are.
Perfect for indie development teams. Oh, and did I mention Seamless
GitHub integration?&lt;/p&gt;
</summary></entry><entry><title>User Interface: Content vs. MetaContent</title><link href="http://kennethreitz.com/blog//user-interface-content-vs-metacontent.html" rel="alternate"></link><updated>2009-12-01T17:38:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-12-01:/blog//user-interface-content-vs-metacontent.html/</id><summary type="html">&lt;p&gt;Trey of lopsa.org wrote a
&lt;a class="reference external" href="http://lopsa.org/node/1566"&gt;fantastic article&lt;/a&gt; on the the techie
vs. non-techie divide. If you are in the user-interface market, I
suggest you read this. It sheds some wonderful light on this great
divide. ## In Short Ordinary Users only see and understand content
in a system. Developers and Techies implicitly understand the
Metadata that surrounds that content at such an intimate level that
they build systems that subconsciously further the divide. Good
Stuff.&lt;/p&gt;
</summary></entry><entry><title>Google Analytics + Intellegence</title><link href="http://kennethreitz.com/blog//google-analytics-intellegence.html" rel="alternate"></link><updated>2009-11-30T17:53:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//google-analytics-intellegence.html/</id><summary type="html">&lt;p&gt;Google's super-star flagship cloud-based visitor tracking software,
&lt;a class="reference external" href="http://google.com/analytics"&gt;Google Analytics&lt;/a&gt;, released a
&lt;a class="reference external" href="http://1.bp.blogspot.com/_J20OFghLIP0/Sv2bgjlDn8I/AAAAAAAAAMA/kI-VHM7VRD0/s400/Intelligence_Report.jpg"&gt;new feature&lt;/a&gt;
recently. It's called
&lt;a class="reference external" href="http://analytics.blogspot.com/2009/11/new-feature-spotlight-analytics.html"&gt;Intelligence&lt;/a&gt;.
##What They Have To Say Your new hardworking assistant, Analytics
Intelligence, can't replace you or a professional analyst. But, it
can find key information for you and your professional analysts --
so that your team can focus on making strategic decisions, instead
of sifting through an endless sea of data. Intriguing.&lt;/p&gt;
</summary></entry><entry><title>Google Wave Interface FAIL</title><link href="http://kennethreitz.com/blog//google-wave-interface-fail.html" rel="alternate"></link><updated>2009-11-30T17:43:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//google-wave-interface-fail.html/</id><summary type="html">&lt;p&gt;I had the opportunity to see a non-technical friend's first
reaction to Google Wave today.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.kennethreitz.com/stephanie-85.png" /&gt; I can't help but laugh.&lt;/p&gt;
&lt;p&gt;Also, If you'd like to experience this mess of an interface for
yourself, please
&lt;a class="reference external" href="http://kennethreitz.com/contact-me/"&gt;contact me&lt;/a&gt;.&lt;/p&gt;
</summary></entry><entry><title>The SEO Rapper</title><link href="http://kennethreitz.com/blog//the-seo-rapper.html" rel="alternate"></link><updated>2009-11-30T17:21:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//the-seo-rapper.html/</id><summary type="html">&lt;p&gt;SEO Tactics are typically a dime a dozen, written by people
interested in BlackHat PageRank Hacking and Link Farming. Surprise,
Surprise: an SEO Rap.&lt;/p&gt;
&lt;p&gt;Surprisingly, he knows what he's talking about, and offers decent
advice.&lt;/p&gt;
</summary></entry><entry><title>DRY and Pythonic jQuery?</title><link href="http://kennethreitz.com/blog//dry-and-pythonic-jquery.html" rel="alternate"></link><updated>2009-11-30T17:16:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//dry-and-pythonic-jquery.html/</id><summary type="html">&lt;p&gt;Apparently, &lt;strong&gt;groovy:spring:java&lt;/strong&gt; as &lt;strong&gt;jabs:jquery:javascript&lt;/strong&gt;.
As if jQuery wasn't short enough already.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://github.com/collin/jabs"&gt;Jabs&lt;/a&gt; lets you write this jQuery
code:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
jQuery(function() {
var $ = jQuery;
$(&amp;quot;[default_value]&amp;quot;)
.blur(function() {
var self = $(this);
if(self.val() === &amp;quot;&amp;quot;) {
self.val(self.attr(&amp;quot;default_value&amp;quot;));
}
})
.focus(function() {
var self = $(this);
if(self.val === self.attr(&amp;quot;default_value&amp;quot;)) {
self.val(&amp;quot;&amp;quot;);
}
})
.blur();
});
&lt;/pre&gt;
&lt;p&gt;By typing this:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ [default_value]
:blur
if &amp;#64;value === &amp;quot;&amp;quot;
&amp;#64;value = &amp;#64;default_value
:focus
if &amp;#64;value === &amp;#64;default_value
&amp;#64;value = &amp;quot;&amp;quot;
.blur
&lt;/pre&gt;
&lt;p&gt;&lt;a class="reference external" href="http://haml-lang.com/"&gt;HAML&lt;/a&gt; tactics FTW.&lt;/p&gt;
</summary></entry><entry><title>The Power of a Clean API</title><link href="http://kennethreitz.com/blog//the-power-of-a-clean-api.html" rel="alternate"></link><updated>2009-11-30T12:29:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//the-power-of-a-clean-api.html/</id><summary type="html">&lt;p&gt;The folks over at &lt;a class="reference external" href="http://mozillalabs.com/"&gt;Mozilla Labs&lt;/a&gt; never
cease to amaze me with their unique ideas. They strive to transform
the way users interact with the web forever.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://jetpack.mozillalabs.com/"&gt;**Mozilla JetPack**&lt;/a&gt; is a bit
different, though. This tool allows web developers to make
incredibly powerful Firefox Extentions with the layout languages
they already know and love.&lt;/p&gt;
&lt;p&gt;My god, this is amazing.&lt;/p&gt;
</summary></entry><entry><title>Google's Gotta New Face</title><link href="http://kennethreitz.com/blog//googles-gotta-new-face.html" rel="alternate"></link><updated>2009-11-30T12:05:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//googles-gotta-new-face.html/</id><summary type="html">&lt;p&gt;&lt;img alt="image" src="http://blogoscoped.com/files/google-everything/2.png" /&gt; Want to try it? Go to &lt;a class="reference external" href="http://google.com"&gt;google.com&lt;/a&gt; and
paste this into your browser's address bar:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
javascript:void(document.cookie=&amp;quot;PREF=ID=20b6e4c2f44943bb:U=4bf292d46faad806:
TM=1249677602:LM=1257919388:S=odm0Ys-53ZueXfZG;path=/;domain=.google.com&amp;quot;);
&lt;/pre&gt;
</summary></entry><entry><title>jQuery Snippet #1: URL Parameter Fetching</title><link href="http://kennethreitz.com/blog//jquery-snippet-1-url-parameter-fetching.html" rel="alternate"></link><updated>2009-11-30T09:08:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//jquery-snippet-1-url-parameter-fetching.html/</id><summary type="html">&lt;p&gt;I've decided to provide you with a new data stream. The jQuery
Snippet of the Week. Enjoy.&lt;/p&gt;
&lt;p&gt;When executed, this function will return a beautiful string-indexed
array of your hacking pleasures.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;a class="reference external" href="http://snipplr.com/users/Roshambo/"&gt;Roshambo&lt;/a&gt; and
&lt;a class="reference external" href="http://jquery-howto.blogspot.com/"&gt;jQuery HowTo&lt;/a&gt;!&lt;/p&gt;
</summary></entry><entry><title>jQuery Snippet #1: URL Parameter Fetching</title><link href="http://kennethreitz.com/blog//jquery-snippet-1-url-parameter-fetching.html" rel="alternate"></link><updated>2009-11-30T09:08:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-30:/blog//jquery-snippet-1-url-parameter-fetching.html/</id><summary type="html">&lt;p&gt;I've decided to provide you with a new data stream. The jQuery
Snippet of the Week. Enjoy.&lt;/p&gt;
&lt;p&gt;When executed, this function will return a beautiful string-indexed
array of your hacking pleasures.&lt;/p&gt;
&lt;p&gt;Thanks, &lt;a class="reference external" href="http://snipplr.com/users/Roshambo/"&gt;Roshambo&lt;/a&gt; and
&lt;a class="reference external" href="http://jquery-howto.blogspot.com/"&gt;jQuery HowTo&lt;/a&gt;!&lt;/p&gt;
</summary></entry><entry><title>Blog &amp;lt; Effort</title><link href="http://kennethreitz.com/blog//blog-lt-effort.html" rel="alternate"></link><updated>2009-11-25T07:06:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-25:/blog//blog-lt-effort.html/</id><summary type="html">&lt;p&gt;&lt;strong&gt;Word to the wise&lt;/strong&gt;: blogs take effort to maintain.&lt;/p&gt;
</summary></entry><entry><title>OSX + MAMP + Python + PHP + MySQL</title><link href="http://kennethreitz.com/blog//osx-mamp-python-php-mysql.html" rel="alternate"></link><updated>2009-11-05T18:15:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-05:/blog//osx-mamp-python-php-mysql.html/</id><summary type="html">&lt;p&gt;If you're a web developer who uses MAMP in conjunction with
anything other than PHP,
I'm sure you've had quite a large bit of frustration involving
multiple MyQL instances.&lt;/p&gt;
&lt;p&gt;Not any more! This simple chain of commands will save you days upon
days of troubles:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
sudo rm /tmp/mysql.sock
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
&lt;/pre&gt;
&lt;p&gt;I only wish I had found this sooner. Enjoy.&lt;/p&gt;
</summary></entry><entry><title>Cloud Computing: Yin and Yang</title><link href="http://kennethreitz.com/blog//cloud-computing-yin-and-yang.html" rel="alternate"></link><updated>2009-11-03T14:32:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-11-03:/blog//cloud-computing-yin-and-yang.html/</id><summary type="html">&lt;p&gt;Cloud computing enables us. Amazon's EC2 allows anyone in the world
to have instant access to incredibly powerful high-end servers that
would usually cost tens of thousands of dollars for pennies on the
dollar. ##Life is good. Of course, people use this technology for
both good and bad. In fact, a few days ago, someone wrote a
tutorial
for`Cracking PGP with an Amazon EC2 instance &amp;amp; EDPR &amp;lt;&lt;a class="reference external" href="http://news.electricalchemy.net/2009/10/cracking-passwords-in-cloud.html"&gt;http://news.electricalchemy.net/2009/10/cracking-passwords-in-cloud.html&lt;/a&gt;&amp;gt;`_.
Again, life is good. &lt;strong&gt;Remember:&lt;/strong&gt; if you create an successful open
door web service, all people, good and bad, will come. &lt;img alt="image" src="http://s3.amazonaws.com/media.kennethreitz.com/black-hattitude-82.jpg" /&gt;&lt;/p&gt;
</summary></entry><entry><title>GitHub + Strategy</title><link href="http://kennethreitz.com/blog//github-strategy.html" rel="alternate"></link><updated>2009-10-30T16:12:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-10-30:/blog//github-strategy.html/</id><summary type="html">&lt;p&gt;GitHub is currently &lt;a class="reference external" href="http://github.com"&gt;down&lt;/a&gt;. And that is very
sad. However, they have an
&lt;a class="reference external" href="http://github.com/images/error/angry_unicorn.png"&gt;Awesome Angry Unicorn&lt;/a&gt;.
And this unicorn makes me smile, even though I can't get to any of
my projects. If you're going to make a web application, give it
some personality. This will not only keep your userbase
entertained, but will serve as a nice insurance package when you
let them down. &lt;img alt="image" src="http://s3.amazonaws.com/media.kennethreitz.com/image.axd-96.png" /&gt;&lt;/p&gt;
</summary></entry><entry><title>imo.im &amp;gt; meebo</title><link href="http://kennethreitz.com/blog//imoim-gt-meebo.html" rel="alternate"></link><updated>2009-10-27T22:50:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-10-27:/blog//imoim-gt-meebo.html/</id><summary type="html">&lt;p&gt;I've been a long-time user of &lt;a class="reference external" href="http://meebo.com"&gt;meebo&lt;/a&gt;, a
web-based chat client.
I'm not going to use it anymore now. I found...
{ &lt;a class="reference external" href="https://imo.im/"&gt;imo.im&lt;/a&gt; }&lt;/p&gt;
</summary></entry><entry><title>Apple + Developers = Earnings</title><link href="http://kennethreitz.com/blog//apple-developers-earnings.html" rel="alternate"></link><updated>2009-10-25T16:52:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-10-25:/blog//apple-developers-earnings.html/</id><summary type="html">&lt;p&gt;&lt;strong&gt;Apple, Inc&lt;/strong&gt; reported their
&lt;a class="reference external" href="http://www.businessweek.com/technology/ByteOfTheApple/blog/archives/2009/10/apple_stock_hit.html"&gt;highest earnings ever&lt;/a&gt;
today.
But, Why? Because they have proven that thoughtful design and
attention to every minute detail will always win in the end.&lt;/p&gt;
&lt;p&gt;Because they have shown that designing with both developers and
users equally in mind is essential.&lt;/p&gt;
&lt;p&gt;Because they noticed that being remarkable isn't about being the
go-to guy all the time.&lt;/p&gt;
&lt;p&gt;Because they realized that it's okay to do not have the biggest
market share.&lt;/p&gt;
&lt;p&gt;Because they realized there is a balance. And they found it.&lt;/p&gt;
&lt;p&gt;Because they make the best laptops around.&lt;/p&gt;
&lt;p&gt;Because they lead a tribe of people.&lt;/p&gt;
&lt;p&gt;So, Congratulations Apple.&lt;/p&gt;
&lt;p&gt;You deserve it.&lt;/p&gt;
&lt;p&gt;Really.&lt;/p&gt;
&lt;p&gt;Kenneth Reitz&lt;/p&gt;
</summary></entry><entry><title>OpenDNS Finally Monetizes</title><link href="http://kennethreitz.com/blog//opendns-finally-monetizes.html" rel="alternate"></link><updated>2009-10-25T16:52:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-10-25:/blog//opendns-finally-monetizes.html/</id><summary type="html">&lt;p&gt;I've been a long-time fan and user of
&lt;strong&gt;`OpenDNS &amp;lt;http://www.opendns.com&amp;gt;`_&lt;/strong&gt;, the free and
often-superior DNS Server. I've always noticed drastic improvements
in my site loading speeds when using the service (due to
drastically improved domain name lookups). There's really no
downside to using the system. It's significantly faster than most
ISP's own DNS servers, and it's updated far more frequently.
##Announcing OpenDNS Monetization OpenDNS now offers a new service
called &lt;strong&gt;OpenDNS Deluxe&lt;/strong&gt;, which is tailed for the average
household as well as smaller companies. ###Premium Support It
allows users to have an ad-free experience and have priority over
free members. The price for this service is only $9.95 a year. Not
too bad! ###For Power Users They are also offering a very robust
&lt;strong&gt;OpenDNS Enterprise&lt;/strong&gt; edition for medium to fortune 500 companies.
It has many advanced features such as: delegated administration,
advanced reporting, and malware site protection. ###Pricing That
price isn't listed :)
&lt;a class="reference external" href="http://www.opendns.com/start/"&gt;Sign up today!&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>DISQUS 2 Is Awesome</title><link href="http://kennethreitz.com/blog//disqus-2-is-awesome.html" rel="alternate"></link><updated>2009-09-13T06:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-09-13:/blog//disqus-2-is-awesome.html/</id><summary type="html">&lt;p&gt;I have to admit, for a while I really disliked DISQUS.&lt;/p&gt;
&lt;p&gt;Im a huge fan of WordPress, and do a signifiant amount of my
development within it. Id work on a new site, and then install the
DISQUS plugin, and to my avail, commenting on my sites instantly
sucked. Within the comment box, images rarely loaded correctly, and
the layout was very much sucktastic.&lt;/p&gt;
&lt;p&gt;While doing a super-casual mini-mashup for
&lt;a class="reference external" href="http://louisfabrizi.com"&gt;&amp;#64;LouisFabrizi&lt;/a&gt;, I discovered a lovely
piece of code that lets you embed DISQUS commenting on any page
period:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
View the discussion thread.
blog comments powered by Disqus
&lt;/pre&gt;
</summary></entry><entry><title>Facebook vs Facebook Lite: Loading Time</title><link href="http://kennethreitz.com/blog//facebook-vs-facebook-lite-loading-time.html" rel="alternate"></link><updated>2009-09-11T01:31:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-09-11:/blog//facebook-vs-facebook-lite-loading-time.html/</id><summary type="html">&lt;p&gt;I live in the middle of nowhwere. My internet connection (when I'm
not in a
&lt;a class="reference external" href="http://kennethreitz.com/blog/dear-borders-group/"&gt;free-wifi café&lt;/a&gt;)&amp;nbsp;sucks.
Terribly.&amp;nbsp;&lt;em&gt;and Facebook doubly so&lt;/em&gt;. Thankfully, Facebook just
opened up
&lt;a class="reference external" href="http://kennethreitz.com/blog/facebook-lit-open-to-public/"&gt;Facebook Lite&lt;/a&gt;,
so my life just got alot easier. Here's the side-by-side
comparison... ### &lt;a class="reference external" href="http://www.facebook.com"&gt;Regular Facebook&lt;/a&gt;:&lt;/p&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 2); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Duplicate explicit target name: &amp;quot;facebook lite&amp;quot;.&lt;/div&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.kennethreitz.com/fblite-before-80.png" /&gt; ### &lt;a class="reference external" href="http://lite.facebook.com"&gt;Facebook Lite&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image1" src="http://media.kennethreitz.com/fblite-after-46.png" /&gt; ## QED.&lt;/p&gt;
</summary></entry><entry><title>Facebook Lite Open to Public!</title><link href="http://kennethreitz.com/blog//facebook-lite-open-to-public.html" rel="alternate"></link><updated>2009-09-10T22:05:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-09-10:/blog//facebook-lite-open-to-public.html/</id><summary type="html">&lt;p&gt;It's official, &lt;a class="reference external" href="http://lite.facebook.com"&gt;Facebook Lite&lt;/a&gt; was
opened up to the US public about 10 minutes ago.&lt;/p&gt;
&lt;p&gt;This slimmed down version of Facebook is wonderful for those of us
on slow internet connections (or tethering from our iPhones), this
is a dream come true.&lt;/p&gt;
&lt;p&gt;Reminds me of the good ol' days, when I had to go to
&lt;a class="reference external" href="http://gmu.facebook.com"&gt;http://gmu.facebook.com&lt;/a&gt; to see my facebook friends.&lt;/p&gt;
&lt;p&gt;Here you can see it in action:&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://s3.amazonaws.com/media.kennethreitz.com/facebook-lite-1.png"&gt;|image|&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://lite.facebook.com"&gt;Try it out now!&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Dear Borders: I hate you</title><link href="http://kennethreitz.com/blog//dear-borders-i-hate-you.html" rel="alternate"></link><updated>2009-09-10T18:26:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-09-10:/blog//dear-borders-i-hate-you.html/</id><summary type="html">&lt;p&gt;Dear Borders (and Starbucks subidary Seattle's Best Coffee), You
have a lovely book store. Quite lovely. I love the books you sell.
I love the music you play. I love the coffee you serve. I &lt;strong&gt;love&lt;/strong&gt;
the Moleskine Notebooks you sell. Everything about your store
tailors itself perfectly to people like me. You strive to make a
person feel intellectual and important, and that is marketed almost
flawlessly. You seem to have forgotten one key demographic,
however. If a tech-savvy web developer wants to go and play with
his newly-developed web design skills he obtained from books out of
&lt;em&gt;your&lt;/em&gt; technology section, he is free to bring his laptop into your
lovely café. Awesome. You even offer power outlets. All the
sweeter. So, he decides to bring his laptop in one day to play with
his newly purchased python web development book. He connects to
your aptly named “Borders” network, and types “&lt;a class="reference external" href="http://google.com"&gt;http://google.com&lt;/a&gt;
into his address bar, excited to be connected to his world in such
a convenient location. His face of joy then abruptly changes,
however, when he realizes that he has to fork out SEVEN DOLLARS to
use the network. &lt;strong&gt;Seven Dollars&lt;/strong&gt;. You could feed a starving child
in Africa for a WEEK with $7. There is no justification. There is
no excuse. This is downright stupid on your part. Do you have any
idea how much business you are turning down by doing this? If your
stores offered free wifi, chances are, Id be there three to four
times every week, buying coffee every time, and most likely a book
every other time. That is a LOT of business. And there are many
more people like me. Many more. People like me love your stores. We
love the atmosphere. We love the books. We love the knowledge. We
love the Moleskines. And we also love the internet. Apparently,
more than you know. I understand that you have an agreement with
AT&amp;amp;T, and im sure they have wonderful salesman that assure that
you are offering a service to your employees. They are wrong. Very
wrong. I know for a fact that Id be a customer time and time again
if you offered this service for free. And Im sure your café and
book sales would go up at least 15%. From what I understand, your
profits are decreasing heavily at the moment. I believe your stock
is currently worth $3.34 a share. Impressive. So what do you have
to lose? In the meantime, Ill be taking my daily $7 coffee
excursions to Panera, where wifi is free. Kindest Regards, Kenneth
Reitz # Border's Respnse Dear Kenneth, Thank you for contacting
Borders Customer Care regarding Wifi service. We welcome your
comments, as we rely on feedback from customers to improve on the
services and products we provide. Borders stores will be offering
free Wifi service and all of the stores will have it by mid
October. We appreciate your positive comments about Borders stores.
We are always glad to hear from customers, but it is especially
nice when a happy customer takes the time to let us know that
they're enjoying the rewards and services we offer. If you have any
other questions or concerns, please don't hesitate to contact us.
Sincerely, Kathy Borders Rewards Customer Care ## My Reaction Well,
I didn't see that coming.&lt;/p&gt;
</summary></entry><entry><title>Amazon AWS Introduces Virtual Private Cloud</title><link href="http://kennethreitz.com/blog//amazon-aws-introduces-virtual-private-cloud.html" rel="alternate"></link><updated>2009-08-26T12:07:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-26:/blog//amazon-aws-introduces-virtual-private-cloud.html/</id><summary type="html">&lt;p&gt;Dear Amazon EC2 Customer,&lt;/p&gt;
&lt;p&gt;We are excited to announce the limited beta of Amazon Virtual
Private Cloud (Amazon VPC), a secure and seamless bridge between
your existing IT infrastructure and the AWS cloud. Amazon VPC
enables you to connect your existing infrastructure to a set of
isolated AWS compute resources via a Virtual Private Network (VPN)
connection, and to extend your existing management capabilities
such as security services, firewalls, and intrusion detection
systems to include your AWS resources. Amazon VPC integrates today
with Amazon EC2 compute resources, and we will integrate Amazon VPC
with other AWS services in the future.&lt;/p&gt;
&lt;p&gt;Here are some service highlights:&lt;/p&gt;
&lt;p&gt;Isolated Network Access - Amazon VPC provides end-to-end network
isolation by utilizing an IP address range you specify, and by
routing all network traffic between your VPC and datacenter through
an industry-standard encrypted IPsec VPN. This allows you to
leverage your pre-existing security infrastructure, such as
firewalls and intrusion detection systems to inspect network
traffic going to and from a VPC.&lt;/p&gt;
&lt;p&gt;Flexible - You control your VPC in much the same way you control
your datacenter, using familiar network concepts such as subnets
and gateways. With Amazon VPC, you can 1) freely create subnets to
organize your resources based on the criteria you define, 2) assign
an IP address range for Amazon EC2 instances within subnets, and 3)
configure secure connectivity to determine who can access your AWS
cloud-based resources.&lt;/p&gt;
&lt;p&gt;Best of Both Worlds - Amazon VPC enables you to build a bridge
between your existing IT resources and your isolated resources
within the AWS cloud, enabling you to use both worlds in concert.
Now, you can build hybrid architectures that allow you to take full
advantage of the benefits of the AWS cloud - true elasticity
without owning the capital expense of the hardware or datacenter
(given AWS's pay-as-you-go pricing) - and yet still have the
network isolation and secure connectivity you would enjoy if all
the resources were in your own datacenter. With Amazon VPC, you can
gradually move to the AWS cloud, replicate your entire data center,
or anywhere in between.&lt;/p&gt;
&lt;p&gt;Reliable - Amazon VPC is built using Amazon's own world-class
technology infrastructure. Like other Amazon Web Services, the
service runs within Amazon's proven global network infrastructure
and datacenters.&lt;/p&gt;
&lt;p&gt;Amazon VPC is available on a pay-as-you-go basis with no up-front
fee, minimum spend or long-term commitment required. Please see the
Amazon VPC product page for more information on this exciting new
service, and for details on how to request access to the limited
beta. We will admit participants over time, but wanted to let you
know about it now, seeing that this has been a much-requested AWS
capability.&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;/p&gt;
&lt;p&gt;The Amazon Web Services Team&lt;/p&gt;
</summary></entry><entry><title>Django ORM for Online Payment Systems?</title><link href="http://kennethreitz.com/blog//django-orm-for-online-payment-systems.html" rel="alternate"></link><updated>2009-08-21T23:26:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-21:/blog//django-orm-for-online-payment-systems.html/</id><summary type="html">&lt;p&gt;Ive been spending an increasingly large amount of time with some
rapid development frameworks, primarily Django (Python!), Grails
(Groovy / Java), and Symfony (PHP). Ive been enjoying it. Alot.
Life has never been better.&lt;/p&gt;
&lt;p&gt;DRY tactics. Code portability. Who likes to repeat themselves
anyway? Its a great idea.&lt;/p&gt;
&lt;p&gt;My favorite concept to date is the Object Relational Model (ORM).
Database-agnostcisty is fantastic. Not sure what database you want
to use? Worry about it later. A client wants to switch to MySQL
because SQLServer is costing too much? No problem. How much of my
codebase will I have to change? About six charecters. Wow.&lt;/p&gt;
&lt;p&gt;So why not take this concept, and apply it elsewhere? Im currently
doing some work for a startup, and we are having trouble deciding
which online payment service to use/support: PayPal, Amazon
Payments, or Google Checkout.&lt;/p&gt;
&lt;p&gt;My solution is to write a webPaySystem module that integrates all
of these payment systems into one single class. But, before I spend
the time to write this, Id like to extend this question to the
Python / Django community:&lt;/p&gt;
&lt;p&gt;Would you find this useful in your web (and business desktop)
applications?&lt;/p&gt;
&lt;p&gt;Comment and let me know what you think!&lt;/p&gt;
</summary></entry><entry><title>CSS With a Hint of DRY</title><link href="http://kennethreitz.com/blog//css-with-a-hint-of-dry.html" rel="alternate"></link><updated>2009-08-20T02:57:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-20:/blog//css-with-a-hint-of-dry.html/</id><summary type="html">&lt;p&gt;I am a DRY (&lt;em&gt;Dont Repeat Yourself&lt;/em&gt;) programmer. Im not positive,
but I most likely inherited my love for this concept from my
intensive Python immersion. I'm so grateful for it. Anyway, DRY is
an essential stage of any developer's workflow. It drastically
enforces good structure, and significantly increases your logical
skills. As with everything in life, theres a time and place for
DRY. Object oriented programming is one of those places. ## CSS Is
Not DRY Let it be said: CSS is &lt;em&gt;not&lt;/em&gt; a programming language. It is
&lt;em&gt;not&lt;/em&gt; a programmers language. It is not supposed to be. It is a
styling markup language. But for those of us who like to take a
more structured and programmatic approach, CSS is far from ideal. I
want my CSS to do math. I want it to be dynamic. So, that's where
fun little libraries come in to play that generate CSS on the fly
based on logic and rules! I implore you to take a look at
&lt;a class="reference external" href="http://sandbox.pocoo.org/clevercss"&gt;CleverCSS&lt;/a&gt;. The awesome
Python CSS generator. It supports variables, code manipulation,
inheritance, and oh, so much more. Ill be writing a Django helper
module soon that generates this CSS on the fly. ###See Also: There
is also &lt;a class="reference external" href="http://sass-lang.com"&gt;SASS&lt;/a&gt;, or
&lt;a class="reference external" href="http://sass-lang.com"&gt;Syntactically Awesome StyleSheets&lt;/a&gt;. I must
credit it: it seems to be the originator of the concept, has a
significantly cooler name, and is a bit more widely accepted in the
world. Oh, but thats not written in Python, is it?&lt;/p&gt;
</summary></entry><entry><title>The Call for an Open Source Social Network</title><link href="http://kennethreitz.com/blog//the-call-for-an-open-source-social-network.html" rel="alternate"></link><updated>2009-08-16T20:16:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-16:/blog//the-call-for-an-open-source-social-network.html/</id><summary type="html">&lt;p&gt;Lately, I've been tossing some ideas around that I feel would
benefit the Social Web as a whole. Its been going through some
rough times lately, and I think its time for a change. Or so I
thought. My first idea was to create a site that was rather
decentralized, allowing all of your content to exist on other
sites, but still allowing for you to interact without locking a
user in. As it turns out, this site already exists. It is called
&lt;a class="reference external" href="http://friendfeed.com/kennethreitz"&gt;FriendFeed&lt;/a&gt;.
&lt;em&gt;`I love FriendFeed &amp;lt;http://kennethreitz.com/blog/friendfeed-is-awesome/&amp;gt;`_&lt;/em&gt;.
About a week after I decided that I wanted to get into it,
&lt;a class="reference external" href="http://kennethreitz.com/blog/friendfeed-is-awesome/"&gt;Facebook decided to purchase it&lt;/a&gt;.
How sad. They claim that it will still be up and running, but well
see if that proves to be the case (I have my fingers crossed).
Pownce (which was powered by Python / Django) was shut down when it
was purchased. I pray this not be the case. Think about this now:
&lt;strong&gt;Why is that even an option&lt;/strong&gt;? Social networking is all about
community and building tribes So why do we need to have an
organization in charge of our chosen communication platform?
&lt;strong&gt;Here is my proposal&lt;/strong&gt;: Create a community-driven,
community-developed, and community-controlled social networking
site that is truly open source. The community could take care of
everything from feature development to content control. No random
shutting down, buy-outs, or merges. No more random change of
Privacy Policies or Content Ownership battles. No more worries. The
only group of people who would be benefitted would be the community
itself, not some company. An open minded network full of open
minded people working for the better of the community. # The Open
Web of Flow&lt;/p&gt;
&lt;div class="section" id="step-one-solid-platform-choice"&gt;
&lt;h2&gt;&lt;strong&gt;Step One&lt;/strong&gt;: Solid Platform Choice&lt;/h2&gt;
&lt;p&gt;The platform choice is the most important. You've seen what happens
when the wrong tool is chosen for the job: look at Twitter: Bad
Planning. We're all familiar with the Fail Whale but we shouldn't.
At all. So what do we use? There's an array of options. .NET? HAHA!
Did you know that there's even
&lt;a class="reference external" href="http://membertomember.com/"&gt;a social platform built on top of Microsoft's Sharepoint&lt;/a&gt;?
I bet you didn't. I've installed it a number of times. It's
fantastic (for people who need it). But we don't. At all. What type
of open source project aside Mono is driven by NET developers
anyway? They are in an entirely different mindset than us. Anyway,
the answer is obvious: Django on a LAMP Stack (Linux + Apache +
MySql + Python). We can all agree that Python is freaking amazing.
And it's certianly not going anywhere any time soon. I think google
has proven time-and time again that Python is the language for just
about any job. And when Google's unlayden-swallow project is
complete, all (typically negligible) performance issues will be
eliminated. Done. ### &lt;strong&gt;Step Two&lt;/strong&gt;: Basic Information Architecture&lt;/p&gt;
&lt;p&gt;We need to decide how the whole system will work. FriendFeed has an
excellent system in place. Lets use it. Users can tie everything in
from all of their other websites and steam it on their profile, and
display it all on one page. Everything's streamlined, commentable,
hookable, and readily accessible. Google Profiles rock. But that is
definitely an abandoned project. Lets mix that with a
FriendFeed-style activity stream. Done. ### &lt;strong&gt;Step Three&lt;/strong&gt;:
Sustainability, Audience, and Accessibility&lt;/p&gt;
&lt;p&gt;How will we pay for it? How will we get people to contribute? How
will be get people to use it? Answer: Twitter is getting old and
it's getting old fast. It's time for something new. Lets blow them
away and they will ALL hop on board. Allow for easy
external-account migration and account creation and we'll be
golden. ### &lt;strong&gt;Step Four&lt;/strong&gt;: Technical Planning and Engineering&lt;/p&gt;
&lt;p&gt;This is all the stuff end users don't have to worry about.
Performance. Design. System Administration. Database Engineering.
The geek stuff. I mean come on guys, how awesome would it be to be
able to make a commit to the Twitter live SVN Branch? Epically
awesome. ### &lt;strong&gt;Step Five&lt;/strong&gt;: Community + Collaboration&lt;/p&gt;
&lt;p&gt;Once the community gets going, there will be no stopping it. In
conclusion, think about what we have to lose? Are you with me?&lt;/p&gt;
&lt;/div&gt;
</summary></entry><entry><title>Facebook Plugin for WordPress</title><link href="http://kennethreitz.com/blog//facebook-plugin-for-wordpress.html" rel="alternate"></link><updated>2009-08-16T14:38:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-16:/blog//facebook-plugin-for-wordpress.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://twitter.com/RealNerd"&gt;Blake&lt;/a&gt;, a PHP engineer at
&lt;a class="reference external" href="http://squidoo.com"&gt;Squidoo&lt;/a&gt;, has a blog called
&lt;a class="reference external" href="http://www.thewhyandthehow.com/"&gt;The Why and the How&lt;/a&gt;. You
should check it out, he writes really good articles and shares
great&lt;/p&gt;
&lt;p&gt;My friend and coworker
&lt;a class="reference external" href="http://aaroncollegeman.com/"&gt;Aaron Collegeman&lt;/a&gt; decided to write
a WordPress plugin that automatically replaces the built-in
WordPress commenting system with Facebooks.&lt;/p&gt;
&lt;p&gt;It is under active development and will eventually it will s
backend upport storage of comments, but for now you can do
everything from Facebook. In the meantime, you should a
&lt;a class="reference external" href="http://code.google.com/p/wpfb/"&gt;grab a copy&lt;/a&gt; and see it in
action for yourself.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://code.google.com/p/wpfb/"&gt;Facebook Comments for Wordpress&lt;/a&gt;.&lt;/p&gt;
</summary></entry><entry><title>Google Lets Users Opt Out</title><link href="http://kennethreitz.com/blog//google-lets-users-opt-out.html" rel="alternate"></link><updated>2009-08-12T17:59:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-12:/blog//google-lets-users-opt-out.html/</id><summary type="html">&lt;p&gt;Hilarious. embed
src=&amp;quot;&lt;a class="reference external" href="http://www.theonion.com/content/themes/common/assets/onn_embed/embedded_player.swf"&gt;http://www.theonion.com/content/themes/common/assets/onn_embed/embedded_player.swf&lt;/a&gt;&amp;quot;type=&amp;quot;application/x-shockwave-flash&amp;quot;
allowScriptAccess=&amp;quot;always&amp;quot; allowFullScreen=&amp;quot;true&amp;quot;
wmode=&amp;quot;transparent&amp;quot; width=&amp;quot;480&amp;quot;
height=&amp;quot;430&amp;quot;flashvars=&amp;quot;image=http%3A%2F%2Fwww.theonion.com%2Fcontent%2Ffiles%2Fimages%2FGOOGLE_VILLAGE_article.jpg&amp;amp;videoid=97279&amp;amp;title=Google%20Opt%20Out%20Feature%20Lets%20Users%20Protect%20Privacy%20By%20Moving%20To%20Remote%20Village&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.theonion.com/content/video/google_opt_out_feature_lets_users?utm_source=videoembed"&gt;Google Opt Out Feature Lets Users Protect Privacy By Moving To Remote Village&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Smoothy TextMate Theme</title><link href="http://kennethreitz.com/blog//smoothy-textmate-theme.html" rel="alternate"></link><updated>2009-08-11T14:31:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-11:/blog//smoothy-textmate-theme.html/</id><summary type="html">&lt;p&gt;I've said it before and I'll say it again:
&lt;a class="reference external" href="http://kennethreitz.com/blog/if-textmate-42/"&gt;TextMate&lt;/a&gt; is one
fantastic text editor.&lt;/p&gt;
&lt;p&gt;Now, I won't bore you with my passion for it, but if you've been
reading my blog for long, you know how I feel.I do the majority of
my development in TextMate, so theme choice is pretty important
(others beg to differ but I disagree aesthetics are everything).
I tried a number of themes and found some really great ones. I'm
always partial to darker schemes, so I settled on using Vibrant
Ink. Fantastic theme. After a while, I needed a break from the dark
background, and decided to find a more minimalist white-based theme
online. Much to my avail, I discovered that there are no good
ligher-colored themes out there for TextMate. Some come close, but
nothing hits the nail on the head. So I made one.&lt;/p&gt;
&lt;p&gt;I call it &lt;strong&gt;Smoothy&lt;/strong&gt;
(&lt;a class="reference external" href="http://media.kennethreitz.com/themes/Smoothy.tmTheme.gif"&gt;screenshot&lt;/a&gt;,
&lt;a class="reference external" href="http://media.kennethreitz.com/themes/Smoothy.tmTheme"&gt;download&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://media.kennethreitz.com/themes/Smoothy.tmTheme"&gt;TmTheme Download it here (65KB)&lt;/a&gt;
So, after a great number of hours, and realizing that making things
coordinate on black is far easier than white, I settled on a theme
that was colorful, functional, useful, triatic, and
most-importantly, not a piece of crap. Enjoy!&lt;/p&gt;
</summary></entry><entry><title>The Truth of Facebook's FriendFeed Acquisition</title><link href="http://kennethreitz.com/blog//the-truth-of-facebooks-friendfeed-acquisition.html" rel="alternate"></link><updated>2009-08-11T00:53:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-11:/blog//the-truth-of-facebooks-friendfeed-acquisition.html/</id><summary type="html">&lt;p&gt;As I'm sure most of you know, &lt;a class="reference external" href="http://facebook.com"&gt;Facebook&lt;/a&gt;
decided today that it was going to buy
&lt;a class="reference external" href="http://friendfeed.com/kennethreitz"&gt;FriendFeed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My opinion might be a little biased... I just discovered FF
&lt;a class="reference external" href="http://kennethreitz.com/blog/friendfeed-is-awesome/"&gt;recently&lt;/a&gt;,
and I must say that I've been thoroughly impressed with the service
so far. I've been spending an increasing amount of time on it every
day, and It's most certainly a breath of fresh air from the clogged
mob-congestion of Twitter.&lt;/p&gt;
&lt;p&gt;So apparently someone at Facebook realized this and decided to join
forces.&lt;/p&gt;
&lt;p&gt;So what is Facebook after? Absorbing the competition? I don't think
so. Did you know FriendFeed is operated by only 11 people? and it
rocks! That's definitely 11 people who are extremely talented and
know exactly what they are doing. Something Facebook needs. They
have been trying to put something together that works as well as FF
for while now. The two merging might not be that bad, as long as FF
marches on. My last favorite social site,
&lt;a class="reference external" href="http://pownce.com"&gt;Pownce&lt;/a&gt;, was shut down when
&lt;a class="reference external" href="http://sixapart.com"&gt;Six Apart&lt;/a&gt; purchased them for the creation
of &lt;a class="reference external" href="http://www.movabletype.com/motion/"&gt;Motion&lt;/a&gt; an utter
failure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Luckily, the two companies announced today that FriendFeed will
continue to remain a separate, fully functional entity from
Facebook. Facebook will be integrating features of FriendFeed. Good
news! Lets see if it happens.&lt;/p&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 2); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Duplicate explicit target name: &amp;quot;friendfeed&amp;quot;.&lt;/div&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 2); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Duplicate explicit target name: &amp;quot;facebook&amp;quot;.&lt;/div&gt;
&lt;p&gt;&lt;a class="reference external" href="http://technorati.com/tag/FriendFeed"&gt;FriendFeed&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/Facebook"&gt;Facebook&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/FaceFeed"&gt;FaceFeed&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/FriendBook"&gt;FriendBook&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>FriendFeed is Awesome</title><link href="http://kennethreitz.com/blog//friendfeed-is-awesome.html" rel="alternate"></link><updated>2009-08-09T07:10:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-08-09:/blog//friendfeed-is-awesome.html/</id><summary type="html">&lt;p&gt;I wanted to make a new social website that tied the knot on every
site that's out there now but it looks like it's already been
done! Awesome!&lt;/p&gt;
</summary></entry><entry><title>Aesthetics: More Than Meets the Eye</title><link href="http://kennethreitz.com/blog//aesthetics-more-than-meets-the-eye.html" rel="alternate"></link><updated>2009-07-24T05:28:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-24:/blog//aesthetics-more-than-meets-the-eye.html/</id><summary type="html">&lt;p&gt;I was doing some routine poking around the
&lt;a class="reference external" href="http://wiki.macromates.com/Main/HomePage"&gt;TextMate Wiki&lt;/a&gt;
tonight, and I came across an
&lt;a class="reference external" href="http://jason-evers.com/code/code-like-i-do"&gt;amazing mod&lt;/a&gt;.
Amazing. After installing it, my favorite editor looked brand new,
and I started hacking away at code for hours.&lt;/p&gt;
&lt;p&gt;Customized (yet clean) interfaces really help me focus on my work.
Working in an IDE with a black background just feels right to me. I
wasn't nearly as satisfied with my .NET development when using the
default
&lt;a class="reference external" href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/06/Join-the-Dark-Side-of-Visual-Studio.aspx"&gt;Visual Studio color scheme&lt;/a&gt;.
I found the dark and everything became better. I felt more at home.
I looked at it and it made me smile.&lt;/p&gt;
&lt;p&gt;Just a thought.&lt;/p&gt;
</summary></entry><entry><title>Django 1.1 RC Released</title><link href="http://kennethreitz.com/blog//django-11-rc-released.html" rel="alternate"></link><updated>2009-07-22T05:46:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-22:/blog//django-11-rc-released.html/</id><summary type="html">&lt;p&gt;Django 1.1's Release Candidate was released today! Whoot. Here's
the official release: &amp;gt; As part of the Django 1.1 release process,
tonight we've released &amp;gt; Django 1.1 release candidate 1, a
preview/testing package which, &amp;gt; hopefully, is quite close to what
will constitute the final Django &amp;gt; 1.1 release. As with all
pre-release packages, this is not for &amp;gt; production use, but if
you'd like to try out some of the new &amp;gt; goodies coming in 1.1, or
if you'd like to pitch in and help us fix &amp;gt; bugs before the final
1.1 release (due in approximately one week), &amp;gt; feel free to grab a
copy and give it a spin. You can get a copy of &amp;gt; the 1.1 RC from
our downloads page, and we recommend you read the &amp;gt; release notes.
Also, for the security conscious, signed MD5 and &amp;gt; SHA1 checksums
of the 1.1 release candidate package are available. &amp;gt; If no
show-stopping bugs are found, the Django 1.1 final release &amp;gt; will
take place in one week. In the meantime, only critical &amp;gt;
release-blocking bugs will be considered for the final release. &amp;gt;
Django 1.1 is also now in string freeze; strings marked for &amp;gt;
translation will not change between now and the final release, so &amp;gt;
if you have translations to contribute now's the time. With luck, &amp;gt;
we'll see you back here in a week for the release of Django 1.1.&lt;/p&gt;
</summary></entry><entry><title>The Microsoft Reaction Experience</title><link href="http://kennethreitz.com/blog//the-microsoft-reaction-experience.html" rel="alternate"></link><updated>2009-07-16T06:39:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-16:/blog//the-microsoft-reaction-experience.html/</id><summary type="html">&lt;p&gt;It seems like Microsoft base its entire product line nowadays on
reactions.&lt;/p&gt;
&lt;p&gt;They will be apparently be opening Microsoft Retailer stores across
the nation soon. Why? I mean, I know they have the Zune, the XBox,
and, well, Windows. But why a store? It works great for Apple But
Apple and Microsoft are two very different companies. Nowadays,
Apple is an innovator. Microsoft is a copy-cat essentially. A few
things are excluded from this of course (Sharepoint), but in
general, the company just isn't all that Creative. I mean
Silverlight? Flash has been out for well over 8 years. Why even try
to compete? Sure Flash is a ridiculous resource hog and it's great
that you want to make something better. But Microsoft: please, for
once, try to make something NEW for a change?&lt;/p&gt;
</summary></entry><entry><title>What's in a Language?</title><link href="http://kennethreitz.com/blog//whats-in-a-language.html" rel="alternate"></link><updated>2009-07-15T04:13:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//whats-in-a-language.html/</id><summary type="html">&lt;p&gt;What do developers want in a language?&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Lots of Available Resources / Documentation&lt;/li&gt;
&lt;li&gt;Large Standard Library&lt;/li&gt;
&lt;li&gt;Portability&lt;/li&gt;
&lt;li&gt;Speed of Development&lt;/li&gt;
&lt;li&gt;Easy to Read&lt;/li&gt;
&lt;li&gt;A Community of Developers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes, Easy to read. You'd really be surprised how much this helps a
developer. Well over half the time a C++ Developer spends writing
code is actually time spent deciphering what he's already written.
Certainly the amount of time spent doing this decreases over time,
but even if you've been reading C++ for 20+ years, there still is
and always will be a lot of junk in the middle that subconsciously
slows you down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution?&lt;/strong&gt; Whitespace.&lt;/p&gt;
&lt;p&gt;Whitespace is fantastic. It's standard practice to use indenting
all over the place. Why not use that as block delimiters? We do it
anyway. Lets get rid of Curly Braces.&lt;/p&gt;
&lt;p&gt;Here is a clip of C#. No shortcuts taken:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
String output = new String();
output = &amp;quot;Hello, World!&amp;quot;;
try {
System.Console.WriteLine(output);
}
catch (Exception e) {
raise;
}
&lt;/pre&gt;
&lt;p&gt;Here is the same clip of code in Python:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
output = &amp;quot;Hello, world!&amp;quot;
try:
print(output)
except:
raise
&lt;/pre&gt;
&lt;p&gt;Nicer, eh?&lt;/p&gt;
</summary></entry><entry><title>Media Temple and My Hosting</title><link href="http://kennethreitz.com/blog//media-temple-and-my-hosting.html" rel="alternate"></link><updated>2009-07-15T03:53:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//media-temple-and-my-hosting.html/</id><summary type="html">&lt;p&gt;While I haven't used many hosting services, I must admit that I
cannot imagine any being much better than Media Temple.&lt;/p&gt;
&lt;p&gt;Alot of other people use terrible hosting that is less than $5 a
month. Don't waste your time. Why are you even on the internet if
you are only willing to invest $5 a month for your website?&lt;/p&gt;
&lt;p&gt;MediaTemple's Dedicated Virtual server simply cannot be beat. For
$50 a month, I get 20GB of storage, 1TB of transfer, and 2x 3GHz
Xeon Processors. I have full root access to the machine, and can do
whatever I want with it.&lt;/p&gt;
&lt;p&gt;Now thats a hosting company. And that's a server. I'll host you on
it if you want you'll get all the benefits of the $50 a month
server, without all the overhead - plus one geek who's at your
service 24/7. And all for $20 a month.&lt;/p&gt;
</summary></entry><entry><title>Windows Mobile and iPhone OS</title><link href="http://kennethreitz.com/blog//windows-mobile-and-iphone-os.html" rel="alternate"></link><updated>2009-07-15T03:49:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//windows-mobile-and-iphone-os.html/</id><summary type="html">&lt;p&gt;I've owned about 5 WIndows Mobile devices, 3 Palm Devices, and 1
iPhone.&lt;/p&gt;
&lt;p&gt;What we all need:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Simplicity&lt;/li&gt;
&lt;li&gt;Power&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Integration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Palm OS&lt;/strong&gt; (Pre-Pre haha):&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Simple. Very Simple.&lt;/li&gt;
&lt;li&gt;Does what it needs to do and doesn't falter.&lt;/li&gt;
&lt;li&gt;Not much in terms of applications.&lt;/li&gt;
&lt;li&gt;Most certainly not designed for a mobile professional.&lt;/li&gt;
&lt;li&gt;It's a glorified rolodex.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Windows Mobile&lt;/strong&gt; (5, 6, 6.1):&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Attempts to satisfy someone who needs to read spreadsheets on
the go.&lt;/li&gt;
&lt;li&gt;Very slow and unstable. Not good for phone use. At all.&lt;/li&gt;
&lt;li&gt;Integration is sub-par.&lt;/li&gt;
&lt;li&gt;Lots of work-arounds for lots of things, nothing is simple.&lt;/li&gt;
&lt;li&gt;Fonts are ugly.&lt;/li&gt;
&lt;li&gt;Interface is clunky.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;iPhone OS&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Smooth, and very nice looking.&lt;/li&gt;
&lt;li&gt;Font rendering is exceptional.&lt;/li&gt;
&lt;li&gt;Web browsing is a dream.&lt;/li&gt;
&lt;li&gt;Did I mention how good it looks?&lt;/li&gt;
&lt;li&gt;Fantastic applications, integration, and standards.&lt;/li&gt;
&lt;li&gt;Apps need approval (good and bad).&lt;/li&gt;
&lt;li&gt;Very fast. Very slick. Problem free.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Verdict&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;iPhone OS simply cannot be beat. It's perfect. I haven't used
Android, but it's more of a platform than an intended
out-of-the-box Mobile OS. You aren't intended to use the built-in
Window Manager if you don't want to. Windows Mobile: pay
attention.&lt;/p&gt;
</summary></entry><entry><title>Early Adoption</title><link href="http://kennethreitz.com/blog//early-adoption.html" rel="alternate"></link><updated>2009-07-15T03:10:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//early-adoption.html/</id><summary type="html">&lt;p&gt;The world is full of people who wait for people to tell them what
to use next. Especially on the internet.&lt;/p&gt;
&lt;p&gt;Find (or create) something great before it's popular and show
others if your recommendation holds true, they will respect you
for it. They will trust you. They will go to you when needed.&lt;/p&gt;
&lt;p&gt;And that's why this site exists.&lt;/p&gt;
</summary></entry><entry><title>Microsoft Software Running in Linux</title><link href="http://kennethreitz.com/blog//microsoft-software-running-in-linux.html" rel="alternate"></link><updated>2009-07-15T02:55:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//microsoft-software-running-in-linux.html/</id><summary type="html">&lt;p&gt;A few months ago, I wrote a small article for
&lt;a class="reference external" href="http://programmerfish.com/"&gt;ProgramerFish&lt;/a&gt; that was
&lt;a class="reference external" href="http://tech.slashdot.org/article.pl?sid=09/03/17/2235215"&gt;featured on SlashDot's Front Page&lt;/a&gt;.
It was amazing. Within hours, my post had thousands of views and
hundreds of comments. People both loved and hated the idea.&lt;/p&gt;
&lt;p&gt;But what made
&lt;a class="reference external" href="http://tech.slashdot.org/article.pl?sid=09/03/17/2235215"&gt;my post&lt;/a&gt;
so popular? The fact that I showed people how to run a very popular
piece of proprietary software in Linux. And this made a very large
number of people very angry. Why though? Half the users of linux
are openly against proprietary software.&lt;/p&gt;
&lt;p&gt;But Certainly software is just a means to an end, not and end
itself.&lt;/p&gt;
&lt;p&gt;They failed to see the point. All they cared about was letting
everyone else know how much they hated my idea.&lt;/p&gt;
&lt;p&gt;I inadvertently started a mini-controversy. And it got attention.&lt;/p&gt;
&lt;p&gt;Sometimes the best way to be heard is to say something people don't
like to hear.&lt;/p&gt;
</summary></entry><entry><title>Revolution vs. Innovation</title><link href="http://kennethreitz.com/blog//revolution-vs-innovation.html" rel="alternate"></link><updated>2009-07-15T01:08:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//revolution-vs-innovation.html/</id><summary type="html">&lt;p&gt;I've been thinking alot about this cloud-computing &amp;quot;movement&amp;quot; that
has been a buzz word for the past year and half or so. Being able
to access anything from anywhere? Awesome, but
&lt;em&gt;I can do that now&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I don't really get it why everyone's like &amp;quot;oh this will totally
change computing as we know it&amp;quot;. I beg to differ. Perhaps it will
change the way we develop, or organize. But not how Desktops sell.
Or eliminate the need for desktop software. The desktop is not
going to die. Not from Azure, at least.&lt;/p&gt;
&lt;p&gt;Amazon has EC2, Microsoft has Azure, and Google has AppEngine.
These are fantastic tools, &lt;em&gt;but they are nothing new &lt;/em&gt; Just
something someone else thought up, executed properly followed
through and improved upon.&lt;/p&gt;
&lt;p&gt;Bill Gates came up with the idea of a true Software Company. This
was revolutionary. Apple took Bill's model, and innovated. They
improved upon it. And look at what's happening.&lt;/p&gt;
&lt;p&gt;I really doubt that Google's new OS is going to bring us anything
we don't have already. I do think, however, that
&lt;em&gt;it will build on things we already have.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When Chrome came out, it didn't offer anything that we didn't
already have. Sure it's a fantastic browser, and I don't want to
discount that. But the ability to run &amp;quot;web apps&amp;quot; as applications is
nothing new. I had been using
&lt;a class="reference external" href="http://labs.mozilla.com/2007/10/prism/"&gt;Mozilla's Prism&lt;/a&gt; for at
least a year before Chrome was announced. And on OSX I had been
using &lt;a class="reference external" href="http://fluidapp.com/"&gt;FluidApp&lt;/a&gt;, which is like Prism on
Crack.&lt;/p&gt;
&lt;blockquote&gt;
It seems like the smart thing to do in the tech world nowadays is
to follow through with great ideas even if they aren't yours.&lt;/blockquote&gt;
&lt;p&gt;Mozilla's team came up with the idea of running web apps at
application with SSB's (single site browsers), but implementation
of Prism was slow, and incredibly buggy. They didn't follow
through. Google did. and Google won.&lt;/p&gt;
&lt;p&gt;Maybe I don't need to come up with a revolutionary idea. Maybe I
just need to be innovative.&lt;/p&gt;
</summary></entry><entry><title>Amazon is Amazing... Most of the Time</title><link href="http://kennethreitz.com/blog//amazon-is-amazing-most-of-the-time.html" rel="alternate"></link><updated>2009-07-15T00:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-15:/blog//amazon-is-amazing-most-of-the-time.html/</id><summary type="html">&lt;p&gt;&lt;a href="#id1"&gt;&lt;span class="problematic" id="id2"&gt;|&lt;/span&gt;&lt;/a&gt;image|Again and again I'm really amazed at Amazon. I discovered
&lt;a class="reference external" href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt; a few months ago, and was
really impressed with the service. For mere pennies a month, you
can have literally an unlimited amount of &amp;quot;cloud&amp;quot; storage.
Phenomenal. After using the service for a while, I realized that
they allow you to name an S3 bucket a domain name, and if the DNS
Zone File of that domain contains an A record that points to
Amazon's AWS servers, your bucket will automatically be available
at that domain. This is amazing.
&lt;em&gt;[media.kennethreitz.com is actually an S3 Bucket]&lt;/em&gt;&lt;/p&gt;
&lt;div class="system-message" id="id1"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 8); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Inline substitution_reference start-string without end-string.&lt;/div&gt;
&lt;p&gt;A few other services allow you to do this and I've never seen it go
wrong: Amazon S3 and Cloud Front,
&lt;a class="reference external" href="http://posterous.com"&gt;Posterous&lt;/a&gt;, &lt;a class="reference external" href="http://tumblr.com"&gt;Tumblr&lt;/a&gt;,
and &lt;a class="reference external" href="http://blogger.com"&gt;Blogger&lt;/a&gt;, to name a few.
&lt;em&gt;[http://posts.kennethreitz.com is a Posterous site].&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After being blown away by the offering of unlimited storage, I was
introduced to unlimited computing power:
&lt;a class="reference external" href="http://aws.amazon.com/ec2/"&gt;Amazon EC2&lt;/a&gt;. All I can say is about
this is this is every Hacker's dream come true. I mean seriously. I
can instantly command 500 Xeon-powered linux machines to do
whatever I like for an hour, and then suddenly have them all
disappear off the grid and it will cost me a total of about $10.
Seriously. Wow.&lt;/p&gt;
&lt;blockquote&gt;
All excuses are now gone. The possibilities are &lt;strong&gt;limitless&lt;/strong&gt;. Why
aren't more people taking advantage of this wonderful service?&lt;/blockquote&gt;
&lt;p&gt;I then was introduced to their Affiliate program. If you provide a
link to an Amazon.com sales listing, and someone purchases
something from your link, you will receive a percentage of that
sale. Genius! Screw using Google Adwords, this is a great idea. I
did a few tests on Twitter. I posted one link, and within about 15
minutes, I had over 100 clicks to the Amazon listing.&lt;/p&gt;
&lt;p&gt;I'm pretty surprised at what i've read recently, however.
Apparently Amazon doesn't want you to use their affiliate links on
mobile devices? What a missed opportunity. I wonder why this is? It
must be some legal issues... I mean, Amazon makes money from
affiliate links - why would they want to limit them?&lt;/p&gt;
&lt;p&gt;Leave a comment if you have any thoughts on this.&lt;/p&gt;
</summary></entry><entry><title>if (TextMate == 42)</title><link href="http://kennethreitz.com/blog//if-textmate-42.html" rel="alternate"></link><updated>2009-07-14T23:13:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-14:/blog//if-textmate-42.html/</id><summary type="html">&lt;p&gt;&lt;strong&gt;{&lt;/strong&gt; I've had some pretty extensive experience using every major
OS for various forms of development and end-user work. And just
like every other programmer in the world, I certainly have my
opinions, likes, and dislikes of every platform (some are a lot
closer to perfection than others of course). Text editors are the
same way. Everyone loves one or two, and hates all the others.
There are others of course: I actually know a guy who edits his
live &amp;quot;enterprise-level php applications&amp;quot; with Pico. And he says he
has been for 10 years (Note that Pico has only been out for 9
years). What a joke. &amp;gt; Pico is not a programmer's tool.&lt;/p&gt;
&lt;p&gt;But anyway: For literally decades, there has been a great war
between unix developers.
&lt;a class="reference external" href="http://en.wikipedia.org/wiki/Editor_war"&gt;VI(m) vs. Emacs&lt;/a&gt;. I am
most certainly a proponent of VI, and probably always will be. It's
a fantastic editor, and it suits my needs pefectly. And for those
of us who need something a little more streamlines there's always
&lt;a class="reference external" href="http://cream.sourceforge.net/"&gt;CREAM&lt;/a&gt;, which is a fantastic
implementation of a heavily customized GVIM that can handle
literally anything you throw at it with little or no fuss. Now all
software, in any context, is a tool. Nothing more. VI and EMACS and
all others exist for one reason: to make a programmer's life
easier. That's why they were invented, and that's why they are
maintained. Now, I still use VIM all the time in my day-to-day
life. Its wonderful to SSH into just about any *nix server on the
planet, and have VIM sitting there, waiting for me to tell it what
to do. It helps me to feel at home. I used to use it full-time for
all of my coding on my workstations as well. I was passionate about
it. I'd tote VIM all the time. VIM is great. It seemed so. It used
to. &lt;a href="#id1"&gt;&lt;span class="problematic" id="id2"&gt;|&lt;/span&gt;&lt;/a&gt;image|Used to. And then there was TextMate. TextMate.
TextMate. Have a mac?
&lt;a class="reference external" href="http://download-b.macromates.com/TextMate_1.5.8.dmg"&gt;Try it&lt;/a&gt;.
Now.
&lt;a class="reference external" href="http://download-b.macromates.com/TextMate_1.5.8.dmg"&gt;Download it&lt;/a&gt;.
&lt;a class="reference external" href="http://license.macromates.com/"&gt;Buy it&lt;/a&gt;. Pirate it, I don't
care. &lt;strong&gt;Your life will never be the same.&lt;/strong&gt; TextMate is seriously
the best piece of software I have come across in a very very long
time. I can code incredibly fast with it. It helps me to become a
better programmer. We all agree that you should NEVER Copy and
Paste code: but using code snippets is different. It's like... An
experience I cannot describe. I'll be purchasing a new laptop soon,
and to be honest with you, the fact that I'll have TextMate on a
mac makes me sure without a doubt to get an Apple computer. That
and the fact that Mac OS X is a FANTASTIC operating system) &amp;gt;
TextMate is a text editor like no other.&lt;/p&gt;
&lt;div class="system-message" id="id1"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 19); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Inline substitution_reference start-string without end-string.&lt;/div&gt;
&lt;p&gt;There's nothing better. And there never will. I know that's quite
an extreme statement, but it's true. I'll do a full review
eventually. I'm just so blown away. Sorry for my thoughts being all
over the place in this post. I can't think strait.
&lt;a class="reference external" href="http://macromates.com/"&gt;Textmate&lt;/a&gt;. &lt;strong&gt;}&lt;/strong&gt;&lt;/p&gt;
</summary></entry><entry><title>Instapaper: Best Web App Ever Created</title><link href="http://kennethreitz.com/blog//instapaper-best-web-app-ever-created.html" rel="alternate"></link><updated>2009-07-13T22:54:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-13:/blog//instapaper-best-web-app-ever-created.html/</id><summary type="html">&lt;p&gt;Out of all the startup applications that I have ever used,
&lt;a class="reference external" href="http://instapaper.com"&gt;Instapaper&lt;/a&gt; (from the creators of
micro-blogging site &lt;a class="reference external" href="http://tumblr.com"&gt;Tumblr&lt;/a&gt;) is by far the
most innovative and useful. I use it on a daily basis. It not only
saves me hours upon hours of time, but it allows me to focus more
on the task at hand and boosts my productivity levels through the
roof.&lt;/p&gt;
&lt;p&gt;Whenever I'm surfing the web, I have a bad habit of clicking open
new tabs almost constantly. It's not uncommon for me to easily have
over 60 tabs open, and in the process of sorting through all these
wonderful links, the task at hand drowns in a sea of information.&lt;/p&gt;
&lt;p&gt;Well, I don't have this problem anymore, thanks to Instapaper. When
I find something interesting online now, and it's not related to
the task at hand, I hit the nifty &amp;quot;read later&amp;quot; bookmarklet. This
ads it to my list of unread marertial on Instapaper.com. I can go
there at any time and read any of the pages that I didnt' have time
to read before!&lt;/p&gt;
&lt;p&gt;Seriously guys, this is amazing.&lt;/p&gt;
&lt;p&gt;What's better yet, is that they have an iPhone app. I can read my
synched list of hundreds of unread pages at any time in
Kindle-quality formated pages. Even without an internet
connection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Surely life doesn't get better than this.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;`Instapaper &amp;lt;http://instapaper.com&amp;gt;`_&lt;/strong&gt;&lt;/p&gt;
</summary></entry><entry><title>Best iPhone App: Byline</title><link href="http://kennethreitz.com/blog//best-iphone-app-byline.html" rel="alternate"></link><updated>2009-07-12T03:47:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-12:/blog//best-iphone-app-byline.html/</id><summary type="html">&lt;p&gt;&lt;img alt="image" src="http://www.phantomfish.com/Resources/bylineicon.png" /&gt; A couple months ago, I wrote a real simple post on
&lt;a class="reference external" href="http://kennethreitz.com/blog/the-ultimate-rss-feed-reader/"&gt;Google Reader&lt;/a&gt;,
so you know why I love it so. Well, having an iPhone is wonderful,
but coming up with great reading material isn't the best when
you're trying to use mobile safari. What happens if you don't have
internet access?
&lt;strong&gt;Problem Solved&lt;/strong&gt;
Byline is a fantastic iPhone app that works as a google reader
client. Once a post is read on the device, it is marked as read on
google reader, so you'll never have to go back and check which
posts you read. This is a massive time saver, and reading with it
is a breeze. I highly Recommend! It is well worth the &lt;strong&gt;$1.99&lt;/strong&gt; I
spent for it. It makes my world a better place to live. :)&lt;/p&gt;
&lt;p&gt;&lt;a href="#id1"&gt;&lt;span class="problematic" id="id2"&gt;|Byline for iPhone|`|image2|&lt;/span&gt;&lt;/a&gt; &amp;lt;&lt;a class="reference external" href="http://click.linksynergy.com/fs-bin/stat?id=9yyTS5BfMus&amp;amp;offerid=146261&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware"&gt;http://click.linksynergy.com/fs-bin/stat?id=9yyTS5BfMus&amp;amp;offerid=146261&amp;amp;type=3&amp;amp;subid=0&amp;amp;tmpid=1826&amp;amp;RD_PARM1=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware&lt;/a&gt;?id=284946773&amp;amp;mt=8&amp;amp;partnerId=30&amp;gt;`_&lt;/p&gt;
&lt;div class="system-messages section"&gt;
&lt;h2&gt;Docutils System Messages&lt;/h2&gt;
&lt;div class="system-message" id="id1"&gt;
&lt;p class="system-message-title"&gt;System Message: ERROR/3 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 22); &lt;em&gt;&lt;a href="#id2"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Undefined substitution referenced: &amp;quot;Byline for iPhone|`|image2&amp;quot;.&lt;/div&gt;
&lt;/div&gt;
</summary></entry><entry><title>My Pitch for SocialWeb 2.0</title><link href="http://kennethreitz.com/blog//my-pitch-for-socialweb-20.html" rel="alternate"></link><updated>2009-07-12T03:10:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-12:/blog//my-pitch-for-socialweb-20.html/</id><summary type="html">&lt;p&gt;The social web is severely flawed. I like to fix it. Who's in?&lt;/p&gt;
</summary></entry><entry><title>The Universal Flaw in Commercial-Based OS's</title><link href="http://kennethreitz.com/blog//the-universal-flaw-in-commercial-based-oss.html" rel="alternate"></link><updated>2009-07-10T21:24:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-10:/blog//the-universal-flaw-in-commercial-based-oss.html/</id><summary type="html">&lt;p&gt;Designers and Developers around the world, I present to you the
flaw prevalent in all of today's commercial operating systems. This
is not a security hole, nor is it a CPU-capping bug. It's more of a
world-view. We're simply looking at things the wrong way.
&lt;strong&gt;What ever happened to the days when a computer was a *tool*, rather than an *experience*?&lt;/strong&gt;
Nowadays, computers are viewed by the public as a way of expressing
oneself. Don't get me wrong, a computer can be all of that and
more. Certainly, I find a level of solace and self-identity in my
software/hardware setup. But, a computer, more primarily, is so
much more than that. A computer, in today's modern consumerist
mindset, is a box that runs applications that are made by other
people. You will use the applications either because you think it
will enhance your quality of life, make you more productive, cure
you from boredom, or just be plain &lt;em&gt;neat&lt;/em&gt;. No other options exist,
just the software that big-name companies produce. Sure, this
method does sell well and, in the scheme of things, makes a company
a large amount of money in a short amount of time (which is the
point of a business, is it not?), but perhaps those big-name
companies should think a little more long-term for the sake of us
all. What does this method truly accomplish? It makes people buy
lots of computers that have power way beyond practicality. This, in
term, makes software development freeze. In case you haven't
noticed, we can't do much with computers nowadays that we couldn't
do 10 years ago, except perhaps check our bank accounts online, and
that's hardly a major breakthrough rather than an new-found
application to keep everyone's interest. It self-destructs in the
end when you think about it. And this, my friends, is the central
heart of our problem. In our &amp;quot;ever-changing&amp;quot; world of computer
software, there is little to be found that is truly new or
exciting. We have a bad habit of putting a new face on an old
concept and calling it by a different name, when, in reality, we've
run out of good ideas.&lt;/p&gt;
</summary></entry><entry><title>Video Blog Series</title><link href="http://kennethreitz.com/blog//video-blog-series.html" rel="alternate"></link><updated>2009-07-10T15:46:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-10:/blog//video-blog-series.html/</id><summary type="html">&lt;p&gt;Well, I'm thinking of doing a series of video posts. This seems to
work pretty well for some people.
I'm looking for some good topic ideas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ideas so far:&lt;/strong&gt; - Gadget Reviews - Emotional posts that just
can't be captured by words - In general thoughts on the tech world&lt;/p&gt;
&lt;p&gt;I'll see what I can do about posting one this week.&lt;/p&gt;
</summary></entry><entry><title>New Design!</title><link href="http://kennethreitz.com/blog//new-design.html" rel="alternate"></link><updated>2009-07-10T09:24:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-07-10:/blog//new-design.html/</id><summary type="html">&lt;p&gt;KennethReitz.com now has a new, rich theme, ready to take on a new
life. And now iPhone friendly! My gloal? To become more well known
that both &lt;a class="reference external" href="http://joelonsoftware.com"&gt;Joel Spolsky&lt;/a&gt; and
&lt;a class="reference external" href="http://chris.parillo.com"&gt;Chris Parillo&lt;/a&gt;. Nothing wrong with
them, of course. I'm just as qualified though. And I think I might
bring more to the table. Think I can do it?&lt;/p&gt;
&lt;p&gt;I built the site with PHP on top of Wordpress with a hint of
Coreylib and jQuery. A nice mix, if you ask me. I ditched
&lt;a class="reference external" href="http://disqus.com/"&gt;DISQUS&lt;/a&gt; in favor of IntenseDebate (as you
can see below). DISQUS has a terrible media server that fails
constantly. I can't stand that.
&lt;a class="reference external" href="http://intensedebate.com"&gt;IntenseDebate&lt;/a&gt; comes pre-themed too,
and, I must say, it looks &lt;em&gt;nice&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The design was inspired by &lt;a class="reference external" href="http://haveamint.com"&gt;haveamint.com&lt;/a&gt;.
They did a phenomenal job and I wanted to take what they had and
build from it. Expect this to be update much more frequently.
Hopefully daily.&lt;/p&gt;
</summary></entry><entry><title>Django Remote Development Server</title><link href="http://kennethreitz.com/blog//django-remote-development-server.html" rel="alternate"></link><updated>2009-05-08T04:03:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-05-08:/blog//django-remote-development-server.html/</id><summary type="html">&lt;p&gt;&lt;img alt="image" src="http://media.kennethreitz.com/images/django-logo.png" /&gt; If you've worked with Django much at all, I'm sure you've
had this problem: wanting to access the built-in development
webserver remotely. Typically, this integrated mini-server ignores
all requests from any IP Address other than 127.0.0.1 . If you run
the following command, however, it will be accessible remotely.
VERY useful for remote dev work.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
./manage.py runserver 0.0.0.0:8000
&lt;/pre&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://technorati.com/tag/Development"&gt;Development&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/Django"&gt;Django&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/Python"&gt;Python&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Remote TextMate Development via SSH and Rsync</title><link href="http://kennethreitz.com/blog//remote-textmate-development-via-ssh-and-rsync.html" rel="alternate"></link><updated>2009-05-08T00:39:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-05-08:/blog//remote-textmate-development-via-ssh-and-rsync.html/</id><summary type="html">&lt;p&gt;I am a huge fan of
&lt;a class="reference external" href="http://kennethreitz.com/blog/if-textmate-42/"&gt;TextMate&lt;/a&gt;. In my
opinion, it is by far the greatest text editor ever conceived by
mankind. It has a couple of shortcomings, however. One of which is
that it has no built-in FTP or SFTP support. Remote file editing is
a bit of a bear here if you like to view folders in the project
drawer on the side. &lt;img alt="image" src="http://media.kennethreitz.com/images/textmate-logo.png" /&gt;
&lt;strong&gt;Options for remote editing with TextMate:&lt;/strong&gt; - Cyberduck FTP
client - MacFUSE + SSHFS - Rsync + SSH&lt;/p&gt;
&lt;div class="section" id="cyberduck"&gt;
&lt;h2&gt;Cyberduck&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The `Cyberduck &amp;lt;http://david.olrik.dk/files/Synchronize_remote_directory_rsync_ssh.zip&amp;gt;`_ option is very very useful. While in the FTP client, you simply click &amp;quot;Edit in TextMate&amp;quot; and the client will download the file for you, open it in your editor, and here's the awesome part it automatically uploads the file every time you save it. This works great when working with one file at a time. The drawback, however, is when working with large projects. Toggling between many files can be an albatross without the project drawer (cyberduck understandably doesn't allow you to edit an entier folder), so MacFUSE is the next logical choice.&lt;/strong&gt;
## MacFUSE + SSHFS&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.pqrs.org/tekezo/macosx/sshfs/"&gt;MacFUSE&lt;/a&gt; + SSHFS works
great, and allows you to mount an SSH folder as a mountpoint on
your local system. VERY USEFUL. You can open this folder with
TextMate. This is perfect for smaller projects. However, with
larger projects, this makes opening the folder in TextMate almost
unbearable as it checks the status of every single file. Too slow
:P ## Rsync + SSH&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So here's the final solution: Rsync + SSH. This allows me to automatically sync my working copy with my server and allow for snappy file interactions without having insane latencies for starting up and bandwidth hogging!&lt;/strong&gt;
To remotely sync over SSH, run the following code: rsync -avz -e
ssh &lt;a class="reference external" href="mailto:remoteuser&amp;#64;remotehost"&gt;remoteuser&amp;#64;remotehost&lt;/a&gt;:/remote/dir /target/dir/&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hint&lt;/strong&gt;: If your remote working copy is a subverson checkout, you
can add --cvs-exclude&lt;/p&gt;
&lt;div class="system-message"&gt;
&lt;p class="system-message-title"&gt;System Message: WARNING/2 (&lt;tt class="docutils"&gt;&amp;lt;string&amp;gt;&lt;/tt&gt;, line 2); &lt;em&gt;&lt;a href="#id1"&gt;backlink&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
Duplicate explicit target name: &amp;quot;textmate&amp;quot;.&lt;/div&gt;
&lt;p&gt;into the rsync parameters, and it will exclude the &amp;quot;.svn&amp;quot; folders!
You can then open this directory in TextMate and make all the
changes you want, and then sync after ! There is also a wonderful
TextMate Bundle for
&lt;a class="reference external" href="http://david.olrik.dk/files/Synchronize_remote_directory_rsync_ssh.zip"&gt;Remote Rsync + SSH within TextMate&lt;/a&gt;.
&lt;a class="reference external" href="http://technorati.com/tag/Development"&gt;Development&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/OSX"&gt;OSX&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/rsync"&gt;rsync&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/TextMate"&gt;TextMate&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</summary></entry><entry><title>uNetBootin: The Utility Belt for OS's</title><link href="http://kennethreitz.com/blog//unetbootin-the-utility-belt-for-oss.html" rel="alternate"></link><updated>2009-05-06T13:57:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-05-06:/blog//unetbootin-the-utility-belt-for-oss.html/</id><summary type="html">&lt;p&gt;If you're in the mood to try a new operating system or two, I
highly reccommend you try this little utility: uNetBootin. It is an
image downloader that lets you easily select which Linux distro
you'd like to install and it instantly starts fetching it from the
cloud for you. Once the download is complete, it will allow you to
put that bootable image on a jump-drive for super easy and quick
installs.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://upload.wikimedia.org/wikipedia/en/f/ff/Unetbootin_on_Windows.png" /&gt; And it runs in both Linux and Windows. I have yet to
attempt to get it to work in OS X yet. I'm sure it's not too hard
though :)&lt;/p&gt;
&lt;p&gt;[&lt;a class="reference external" href="http://unetbootin.sourceforge.net"&gt;uNetBootin&lt;/a&gt;]&lt;/p&gt;
</summary></entry><entry><title>Reflections on Windows 7</title><link href="http://kennethreitz.com/blog//reflections-on-windows-7.html" rel="alternate"></link><updated>2009-05-06T04:01:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-05-06:/blog//reflections-on-windows-7.html/</id><summary type="html">&lt;p&gt;While I have not had the opportunity to try the latest Windows 7
Release Candidate, I have done a bit of reading on the subject. In
my research, I have made the following observances&lt;/p&gt;
&lt;p&gt;Vista was truly the worst operating system I have ever used in my
life. It had some wonderful features, but everything was tied
together so inefficiently It could bring the fastest computer
around to its knees. I have used Vista on a rather powerful quad
core system with over 4 GB of RAM, and it still responded poorly.
There were a few things in Vista that were wonderful ideas, but
executed horribly:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Integrated Search and Indexing&lt;/li&gt;
&lt;li&gt;ReadyBoost for superior caching&lt;/li&gt;
&lt;li&gt;Windows XP Compatibility Mode&lt;/li&gt;
&lt;li&gt;Application Pre-Caching based on Observed User Activity&lt;/li&gt;
&lt;li&gt;Bending over backwards for old API compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 7 looks promising, however. Take a look at the list of new
improvements:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Transparent Windows XP Virtualization Compatibility Layer&lt;/li&gt;
&lt;li&gt;Responsiveness existent&lt;/li&gt;
&lt;li&gt;Advanced Window Management Abilities&lt;/li&gt;
&lt;li&gt;New Version of ReadyBoost&lt;/li&gt;
&lt;li&gt;Integrated ClearType Tuning (about time)&lt;/li&gt;
&lt;li&gt;Feature-Packed Application Bar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 7 is what Vista was supposed to be from what I understand.
I'm keeping my fingers crossed, but I do look forward to this new
Operating System. I sincerely hope that it truly is a great
improvement. We'll see.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://xkcd.com/528/"&gt;|Disclaimer: I have not actually tried the beta yet. I hear its quite pleasant and hardly Hitler-y at all.|&lt;/a&gt;
&lt;a class="reference external" href="http://technorati.com/tag/Microsoft"&gt;Microsoft&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/Vista"&gt;Vista&lt;/a&gt;,
&lt;a class="reference external" href="http://technorati.com/tag/Windows%207"&gt;Windows 7&lt;/a&gt;&lt;/p&gt;
</summary></entry><entry><title>Software Development vs. Computer Science</title><link href="http://kennethreitz.com/blog//software-development-vs-computer-science.html" rel="alternate"></link><updated>2009-05-05T20:52:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-05-05:/blog//software-development-vs-computer-science.html/</id><summary type="html">&lt;p&gt;Most developer job applications that I see have a &amp;quot;BS in Computer
Science or equivalent experience&amp;quot; requirement.&lt;/p&gt;
&lt;p&gt;During my studies in Computer Science at
&lt;a class="reference external" href="http://kennnethreitsz.com/was-college-worth-it/"&gt;George Mason University&lt;/a&gt;,
though short, I learned a number of things. One of them was what a
waste it was to learn such higher math in my field. I want to
develop software, not develop the most cunning-edge
earth-shattering algorithms. I don't want to reinvent ssh or find a
better way to implement pgp keys. Of course, those things are
necessary in certain fields, but not in mine.&lt;/p&gt;
&lt;p&gt;I was taught that Programming is to Computer Science as a Telescope
is to Astronomy. Its a tool to get to a means. If this is true,
than why wasn't I thought how to make software?&lt;/p&gt;
&lt;p&gt;Many Software Developers also have degrees in Electrical
Engineering. Why is this? A CS degree doesn't seem to quite fit
either. Perhaps we should make a separate degree for Software
Development?&lt;/p&gt;
&lt;p&gt;Computer Science should be separated from Software Development.
They should be two different Degrees.&lt;/p&gt;
&lt;p&gt;When I realized this, I started spending my time focusing on design
rather than math. I learned a great deal of things from color
theory to relational spacing and I found myself a new home: web
design. It's a beautiful field. I started to spend my own time
learning software development, rather than spending hours studying
Calc 2.&lt;/p&gt;
</summary></entry><entry><title>The Ultimate RSS Feed Reader</title><link href="http://kennethreitz.com/blog//the-ultimate-rss-feed-reader.html" rel="alternate"></link><updated>2009-04-23T01:35:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-04-23:/blog//the-ultimate-rss-feed-reader.html/</id><summary type="html">&lt;p&gt;What would the ultimate RSS Reader have? Hmmm.... &lt;strong&gt;Features:&lt;/strong&gt; -
Easy-to-manage import/export - Available anywhere and in a variety
of formats - Easy access to both urls and inline-viewing abilities
- Customizable fonts - Takes up less than 200 MB of RAM (this rules
out all Adobe Air Applications) - Auto feed sniffing from urls -
The ability to play podcasts and other media that is thrown at it
(unlike the PSP) - Syncing for offline viewing - Expendable&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Closest contender&lt;/em&gt;: &lt;strong&gt;Google Reader&lt;/strong&gt;! It offers all of this
functionality and more. It makes my world a better place to live.
&lt;strong&gt;`Google Reader &amp;lt;http://reader.google.com&amp;gt;`_&lt;/strong&gt;&lt;/p&gt;
</summary></entry><entry><title>Facebook vs Twitter: A Critical Synopsis</title><link href="http://kennethreitz.com/blog//facebook-vs-twitter-a-critical-synopsis.html" rel="alternate"></link><updated>2009-04-06T08:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-04-06:/blog//facebook-vs-twitter-a-critical-synopsis.html/</id><summary type="html">&lt;p&gt;For the sake of us all, lets take a look at two major social
networks on the web today: &lt;a class="reference external" href="http://facebook.com"&gt;Facebook&lt;/a&gt; and
&lt;a class="reference external" href="http://twitter.com/kennethreitz"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Twitter is an information-streaming application that is used by
people in all walks of life. It functions, sometimes in roundabout
ways, as an instant messenger, email client, alert system, and
social networking connectivity tool. It also offers fantastic,
powerful searching and heavily encourages all-in-all openness.&lt;/p&gt;
&lt;p&gt;Facebook, when I was introduced to it, was an application that
allowed users to create a simple page with information about
themselves, and connected them with people they knew in real life.
Users could send messages to one another, both privately and
publicly, post links, and upload an unlimited number of photos. Or
at least it was.&lt;/p&gt;
&lt;p&gt;Recently, Facebook revamped their interface and introduced a
reinforced concept of status updates being a &amp;quot;life-stream&amp;quot; rather
than a &amp;quot;summary of my week&amp;quot;. Much emphasis is placed on what is
going on &lt;em&gt;right now&lt;/em&gt;, not what happened yesterday. This is great in
my opinion however, it totally changes what Facebook is for me.
Prior to the change, when adding a friend, much emphasis was placed
on adding relationship details for all of your friends. If you
didn't know someone, Facebook wouldn't even allow you to keep them
as a friend. Now, Facebook auto-suggest people that it thinks you
might know, and encourages the meeting of people through Facebook
itself. Nothing wrong with that of course... I'm just showing how
it has been changed.&lt;/p&gt;
&lt;p&gt;There's a fundamental difference here:
&lt;strong&gt;Twitter changes with its users.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It changes according to the trends of it's users. Twitter does
absolutely nothing to influence they way its users use its
services. In fact, it evolves &lt;em&gt;with&lt;/em&gt; them. For example, Twitter
allowed users to view when people &amp;#64;replied to their tweets by going
to the &amp;#64;replies section of the user interface. In this section, you
could see a list of all the latest tweets that started with
&lt;a class="reference external" href="mailto:'&amp;#64;yourtwittername"&gt;'&amp;#64;yourtwittername&lt;/a&gt;' and see what people had to say to you. After a
while, users started adding &amp;#64;replies everywhere in tweets, not just
the beginning. So, twitter changed the algorithm, and now you can
see when &lt;a class="reference external" href="mailto:'&amp;#64;yourtwittername"&gt;'&amp;#64;yourtwittername&lt;/a&gt;' is mentioned anywhere in a tweet.
Genius.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Facebook tries to change its users.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When was the last time you heard a bunch of Twitter users complain
about a newly implimented feature? and when was the last time you
heard a Facebook user complain of a new feature or interface
change?
Yes, they complain constantly.&lt;/p&gt;
&lt;p&gt;So, what is Facebook's purpose? To deliver useful content and
introduce you to new people (while delivering ads), or providing a
nice platform for friends to connect with eachother? If you ask me,
Facebook's intended purpose is becoming less and less clear the
longer that I use it.&lt;/p&gt;
&lt;p&gt;Go Twitter.&lt;/p&gt;
</summary></entry><entry><title>Free Incredible Color Scheme Designer</title><link href="http://kennethreitz.com/blog//free-incredible-color-scheme-designer.html" rel="alternate"></link><updated>2009-03-17T22:44:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-03-17:/blog//free-incredible-color-scheme-designer.html/</id><summary type="html">&lt;p&gt;&lt;img alt="Picture 3.png" src="http://www.programmerfish.com/wp-content/uploads/2009/03/color-wheel.png" /&gt; Being the programmers that we are, design isn't
always listed as one of our stronger abilities. Every programmer
should have a sense of design, however. Otherwise, every
application you would ever use would be far less useful and be much
less appealing. &lt;em&gt;Aesthetics are everything&lt;/em&gt;. ColorSchemeDesigner
allows any user to create breathtaking Color Schemes for any
purpose in it's quick and easy-to-use interface. It allows you to
use the color wheel to make precisely correct schemes. Options
include: monochrome, complimentary, traids, tetrads, analogical,
and accented analogical schemes. All are fully customizable and
mathematically correct.The site even allows you take your color
scheme and test it out on a test page for web design. You can do
anything from sharing the exact scheme to your friends, to
downloading it as a Photoshop of Gimp Color Scheme, XML, or
plaintext file.
&lt;strong&gt;It even will allow you to download your ColorScheme as HTML / CSS !&lt;/strong&gt;
What a time saver! Other services (like Adobe's
&lt;a class="reference external" href="http://kuler.adobe.com/"&gt;Kuler&lt;/a&gt;), aren't nearly this functional,
and do not offer nearly as many features to its users. The best
thing of all is it's &lt;em&gt;free&lt;/em&gt;. Give
&lt;a class="reference external" href="http://colorschemedesigner.com"&gt;ColorSchemeDesigner&lt;/a&gt; a try!&lt;/p&gt;
</summary></entry><entry><title>Free Direct Download: Microsoft Office 2007</title><link href="http://kennethreitz.com/blog//free-direct-download-microsoft-office-2007.html" rel="alternate"></link><updated>2009-03-17T19:14:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-03-17:/blog//free-direct-download-microsoft-office-2007.html/</id><summary type="html">&lt;p&gt;Have you ever had the problem of losing an installation CD? This
happened to me the other day when I needed to install Microsoft
Office 2007. I found an easy solution, however, and I'd like to
share it with you: Direct Downloads of Microsoft Office 2007 in
&lt;em&gt;all&lt;/em&gt; flavors. Completely legal! All you need is your legitimate
key to install!&lt;/p&gt;
&lt;div class="section" id="microsoft-office-2007-installer-direct-downloads-200903171513-jpg"&gt;
&lt;h2&gt;Microsoft Office 2007 Installer Direct Downloads|200903171513.jpg|&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://download.microsoft.com/download/7/c/4/7c49b09b-d6f9-431d-9738-4c00aff11fc7/Enterprise.exe"&gt;Microsoft Office Enterprise 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30196/X12-30196.exe"&gt;Microsoft Office Professional 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30283/X12-30283.exe"&gt;Microsoft Office Small Business 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30107/X12-30107.exe"&gt;Microsoft Office Home and Student 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30263/X12-30263.exe"&gt;Microsoft Office Standard 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X13-40152/X13-40152.exe"&gt;Microsoft Office Accounting Professional 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30093/X12-30093.exe"&gt;Microsoft Office Groove 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30151/X12-30151.exe"&gt;Microsoft Office OneNote 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30247/X12-30247.exe"&gt;Microsoft Office Publisher 2007&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://msft-dnl.digitalrivercontent.net/msoffice/pub/X12-30351/X12-30351.exe"&gt;Microsoft Office Visio Professional 2007&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;NOTE: this is for &lt;strong&gt;legal&lt;/strong&gt; installs only! You need a key to use
any of these installers! If no key is provided, it will still be
fully functional, but will be working in trial-mode for a total of
30 runs.&lt;/p&gt;
&lt;/div&gt;
</summary></entry><entry><title>Python + Regular Expressions</title><link href="http://kennethreitz.com/blog//python-regular-expressions.html" rel="alternate"></link><updated>2009-03-17T05:30:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-03-17:/blog//python-regular-expressions.html/</id><summary type="html">&lt;p&gt;Have you ever needed to parse through large amounts of text looking
for a specific pattern? Patterns like “one capital letter followed
by three numbers” or “dd/mm/yyyy”? This is known as Pattern
Matching. Regular Expressions allow easy syntax for pattern
matching, and is an invaluable skill to add to ones toolkit, no
matter what your area of expertise/practice is. Whether youre
writing a Compiler, Form Validator, Text Editor, Django Project, or
Language Translator, Regular Expressions will always prove to be
invaluable. Here is a very basic overview of some syntax: \d
represents a digit. \s represents whitespace. . represents any
character. If you have worked with Python for very long, you are
probably already familiar with the concept. Take a look at the
following code: print(“Rounded = %05d” % (42))&lt;/p&gt;
&lt;p&gt;This makes sure that the digit printed has 5 digits, and will
automatically add 0s to compensate. If you understand this
concept, then you shouldnt have a problem. Perl-style Regular
Expressions are a very widely-accepted implementation, and Python
has built in support for this mini-language! Its easily
accessible, so lets get started. The included re module will
give us everything we need to get started: import re&lt;/p&gt;
&lt;p&gt;Lets give our new module a try! It will enable you to do anything
you could ever want with regular expressions. Heres a quick
example of some basic use. import re&lt;/p&gt;
&lt;pre class="literal-block"&gt;
string0 = 'Kenneth Reitz is a cool guy!'
regExp = rkenneth[- ]?reitz
if re.match(regExp, string0, re.IGNORECASE):
print “True”
else:
print “False”
&lt;/pre&gt;
&lt;p&gt;This script takes the string Kenneth Reitz is a cool guy, and
searches for kenneth reitz inside of it. If kenneth reitz is
found within string0 (re.match compares the expression with the
string), the script will print “True”, if not, it will print
“False”. Additional parameters can be passed to the re.match
function when needed. Note the re.IGNORECASE flag used here
This tells the function be case-insensitive. Once you master the
regular expression syntax, youll realize how truly powerful they
can be. The options become limitless and the usefulness becomes
undeniable. Heres another example: import re&lt;/p&gt;
&lt;pre class="literal-block"&gt;
string0 = '10.03.1988'
regExp = r'^\d\d[./]\d\d[./]\d\d\d\d?$'
if re.match(regExp, string0):
print 'True'
else:
print 'False/
&lt;/pre&gt;
&lt;p&gt;When run, this script prints out “True”. If we were to change
string0 to 10.03.88, it would print “False”. Simple, isnt it?
Now, while a True/False return could be useful in certain
applications (i.e. form validation), most of the time, were going
to want to have a bit more information in order for our checks to
be useful. We can tell Python to show us the data that matches our
query. To do this, were going to have to break our expression up
into different groups. In the date we have defined, there are three
obvious groups we could separate this into: the day, month, and
year. While defining a Regular Expression, you can use parentheses
() to define groups: regExp = r^()././$&lt;/p&gt;
&lt;p&gt;This separates our expression into 3 separate groups. Python also
supports turning a Regular Expression string into an
heavily-supported object with the re.compile() function. Once you
define a string as a Regular Expression object, you can use the
built in methods to preform powerful parsing. Now we can ask python
what is in those groups: import restring0 = 10.03.1988 regExp =
re.compile(^()././$) regExpMatches = regExp.match(string0)&lt;/p&gt;
&lt;pre class="literal-block"&gt;
if re.match(regExp, string0):
print(“Day: %s\nMonth: %s\nYear: %s” % (regExpMatches.group(1), \
regExpMatches.group(2), regExpMatches.group(3)))
else:
print(“Invalid Date.”)
&lt;/pre&gt;
&lt;p&gt;When executed, this script parses through our validated date,
breaks it down into groups, and prints the following: &amp;gt; Day: 10 &amp;gt;
Month: 03 &amp;gt; Year: 1988&lt;/p&gt;
&lt;p&gt;The possibilities are limitless! Heres a quick run-down of the re
modules functions, strait from the Python documentation for
reference: match: Match a regular expression pattern to the
beginning of a string. search: Search a string for the presence of
a pattern. sub: Substitute occurrences of a pattern found in a
string subn: Same as sub, but also return the number of
substitutions made. split: Split a string by the occurrences of a
pattern. findall: Find all occurrences of a pattern in a string.
compile: Compile a pattern into a RegexObject. purge: Clear the
regular expression cache. escape: Backslash all non-alphanumerics
in a string.&lt;/p&gt;
&lt;p&gt;Remember, you can always type help(re) (after importing the re
module) into the Python interpret to take a quick look at the
modules built-in documentation. Good luck and happy coding!&lt;/p&gt;
</summary></entry><entry><title>How to Run Microsoft Office 2007 in Ubuntu Linux 8.10</title><link href="http://kennethreitz.com/blog//how-to-run-microsoft-office-2007-in-ubuntu-linux-810.html" rel="alternate"></link><updated>2009-03-16T19:12:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-03-16:/blog//how-to-run-microsoft-office-2007-in-ubuntu-linux-810.html/</id><summary type="html">&lt;p&gt;&lt;img alt="ms-office-2007" src="http://www.programmerfish.com/wp-content/uploads/2009/03/msoffice2007.gif" /&gt; Wouldn't it be lovely to have a nice, clean
installation of Microsoft's Office 2007 Suite to run on your Ubuntu
Linux Distribution? For some people, this is the only thing that
truly holds them back from an all-Linux environment... But not
anymore! We have compiled a nice, concise set of instructions to
help guide you along. ### Install Wine:&lt;/p&gt;
&lt;p&gt;WINE (&lt;strong&gt;W**ine **I**s **N**ot an **E**mulator) is an application
layer for Linux that interprets the Windows API and DLLs into
native Linux commands. This allows for programs made for Windows to
be run in Linux! In order to run Office 2007, Wine 1.1.9 (or newer)
is **required.&lt;/strong&gt; It is currently in a development release. If you
dont have it installed already (this is very likely), go ahead and
type the following commands, which will set it up for you: wget -q
&lt;a class="reference external" href="http://wine.budgetdedicated.com/apt/387EE263.gpg"&gt;http://wine.budgetdedicated.com/apt/387EE263.gpg&lt;/a&gt; -O- | sudo
apt-key add -&lt;/p&gt;
&lt;pre class="literal-block"&gt;
sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/intrepid.list -O /etc/apt/sources.list.d/winehq.list
sudo apt-get update
sudo apt-get install wine cabextract
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;:
&lt;em&gt;On non-Debian based systems, this will not work. Please refer to&lt;/em&gt;
&lt;a class="reference external" href="http://www.winehq.org/site/download-deb"&gt;*this site*&lt;/a&gt;
&lt;em&gt;for installation instructions.&lt;/em&gt; You should now have an
installation of Wine 1.1.9 installed on your system. To confirm the
version of Wine installed, type the following: wine --version&lt;/p&gt;
&lt;div class="section" id="install-winetricks"&gt;
&lt;h2&gt;Install winetricks:&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.kegel.com/wine/winetricks"&gt;Winetricks&lt;/a&gt; is a small SH
script which will go on the internet and automatically fetch and
install Microsoft DLLs and Libraries into Wine with almost no
hassle at all! To download it directly, type the following
commands: wget &lt;a class="reference external" href="http://www.kegel.com/wine/winetricks"&gt;http://www.kegel.com/wine/winetricks&lt;/a&gt;&lt;/p&gt;
&lt;pre class="literal-block"&gt;
chmod +x ./winetricks
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="utilize-winetricks"&gt;
&lt;h2&gt;Utilize winetricks:&lt;/h2&gt;
&lt;p&gt;This will setup all necessary libraries and DLLs that Office 2007
will need to run properly: ./winetricks gdiplus riched20 riched30
msxml3 msxml4 msxml6 corefonts tahoma vb6run vcrun6 msi2&lt;/p&gt;
&lt;p&gt;Please be patient while the downloads complete. This script is
working hard and is saving hours of your time. ### Insert Office
2007 Disk and Run Setup!&lt;/p&gt;
&lt;p&gt;Now that we have all of the DLLs necessary to run the Installer,
let us do so! wine pathToCD/setup.exe&lt;/p&gt;
&lt;p&gt;From here on out, you should be good to go! The installer should
run and install everything just as if it was a Windows system! If
you have any problems, ask, and we'll try to help you out as much
as possible! UPDATE: Lost your CD?
&lt;a class="reference external" href="http://www.programmerfish.com/free-direct-download-microsoft-office-2007"&gt;Download the installer&lt;/a&gt;
for free!&lt;/p&gt;
&lt;/div&gt;
</summary></entry><entry><title>Mint.com: Money Management 2.0</title><link href="http://kennethreitz.com/blog//mintcom-money-management-20.html" rel="alternate"></link><updated>2009-01-30T12:42:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2009-01-30:/blog//mintcom-money-management-20.html/</id><summary type="html">&lt;p&gt;There are a few things in life that I am naturally not good at.
Some people fail at communication skills, while others
&lt;a class="reference external" href="http://jwhsband.tripod.com/"&gt;get angry and lash out at others for no reason&lt;/a&gt;.
I, however, like to spend all of my money. ALL of it. Every
paycheck.&lt;/p&gt;
&lt;p&gt;But thanks to this lovely website, that is going to stop now:
&lt;a class="reference external" href="http://www.mint.com"&gt;mint.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mint is an online budgeting and expense tracking system, which
links to your bank account, credit cards, investments, and loan
agencies. It's truly amazing what a little web 2.0 site like that
can do to change things around for you. I'm now saving my money and
actually following a budget! Whenever I go over budget in a certain
category, Mint notifies me immediately (via text message or email)
of the indescrepency. And best of all, It shows me a pretty
flow-chart of what I spend all my money on! Data presentation is
such a powerful tool.&lt;/p&gt;
&lt;p&gt;I spend $53 a month on McDonalds? I had no idea!&lt;/p&gt;
&lt;p&gt;So, come on! Go to &lt;a class="reference external" href="http://www.mint.com"&gt;Mint.com&lt;/a&gt;! Give it a
try! You might save a few bucks (or, like me, a few pounds!).&lt;/p&gt;
</summary></entry><entry><title>Twitter Authority? Number of Followers vs. ReTweets</title><link href="http://kennethreitz.com/blog//twitter-authority-number-of-followers-vs-retweets.html" rel="alternate"></link><updated>2008-12-30T00:51:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2008-12-30:/blog//twitter-authority-number-of-followers-vs-retweets.html/</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://twitter.com"&gt;Twitter&lt;/a&gt; is by far the market leader of the
so-called &amp;quot;micro-blogging&amp;quot; scene. Is this a bad thing? A number
people think that
&lt;a class="reference external" href="http://www.neuro-vision.us/ad/Article/How-Twitter-is-Destroying-Your-Mind/4970"&gt;Twitter is destroying us&lt;/a&gt;.
Others seem to find it to be a wonderful
&lt;a class="reference external" href="http://www.ehow.com/how_2263342_market-business-twitter.html"&gt;marketplace&lt;/a&gt;
and even a source for
&lt;a class="reference external" href="http://www.whatsyourtweetworth.com/"&gt;revenue&lt;/a&gt;, if allowed. In
order for any of these things to come to realization though,
Twitter must make some serious decisions. And fast. The initial
idea is to value a twitterer's rank based upon the number of
followers a user has. This seems like a good, strong idea for a
while, but when you look a little deeper under the skin, it's
apparent that this is not a good system. Most users send an update
every so often about themselves, their lives, and their homes. What
worth is that? Yes, a message would be delivered to a larger number
of people, but the relevancy of the people being reached would be
very low. However, if one was to write a quality tweet that is
&lt;a class="reference external" href="http://www.techcrunch.com/2008/12/29/its-not-how-many-followers-you-have-that-counts-its-how-many-times-you-get-retweeted/"&gt;re-tweeted over and over again&lt;/a&gt;,
that user will reach an even larger group of people, either
directly or in-directly, and the relevancy of the users reached
would be much, much greater. The more people who reTweet what you
have to say not only reach more users than meaningless-tweeters,
but the people who would take the time to listen to what you have
to say would be immensely more common. More relevant readers mean
more clicks, which mean more visits to linked sites, which means
more revenue for a company and even more potential customers. What
do you think?&lt;/p&gt;
</summary></entry><entry><title>Pownce: Shut Down December 15!</title><link href="http://kennethreitz.com/blog//pownce-shut-down-december-15.html" rel="alternate"></link><updated>2008-11-30T06:14:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2008-11-30:/blog//pownce-shut-down-december-15.html/</id><summary type="html">&lt;p&gt;Chances are, this news will either have you screaming at the top of
your lungs or making you shake your head saying &amp;quot;Wah&amp;quot;? And to the
Web 2.0 world/micro-blogosphere, shame on you. #Shame! This is a
wonderful internet startup that was built on a framework framework
and has more features than you can shake a stick at, yet still you
use Twitter.&lt;/p&gt;
</summary></entry><entry><title>A New Spin to Software Platform Design</title><link href="http://kennethreitz.com/blog//a-new-spin-to-software-platform-design.html" rel="alternate"></link><updated>2008-11-11T19:31:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2008-11-11:/blog//a-new-spin-to-software-platform-design.html/</id><summary type="html">&lt;p&gt;*I wrote this article two years ago, before I found OS X. I wish I
would have known then.* As I've said before, I find many reasons
to believe that modern commercialized software platforms are
severely lacking in many, many areas. This should not come as a
surprise to anyone. Perhaps basic utility-inclusion is not the only
solution though. Perhaps the basic priority structure and ethics
that development and marketing teams utilize should be forced into
question.&lt;/p&gt;
&lt;p&gt;Essentially, most major computer software corporations, are, all in
all, trying to make money. No matter how hard you try to find a way
around this, or justify why these companies try to do the things
that they do, the only answer is money. These companies are simply
trying to make a quick buck. This concept has worked incredibly
well for years, but we seem to have a bit of a problem with
foresight. After a while, people get rather bored with the same old
concepts being presented to them in new and exciting ways. This is
why Microsoft needs to release a new operating system every once in
a while. Microsoft's current problem is that the masses are
beginning to realize their other options.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So here's my proposal for the long-term design and marketing strategy 2.0:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An operating system should first be a place of power, consistency,
stability, scalability, and flexibility. Included would be a robust
and fully scriptable toolset which can be manipulated and presented
both graphically and statistically.&lt;/p&gt;
&lt;p&gt;Second, the user interface should be very well thought out and
planned, with ample room for improvement down the road. Its purpose
should first be a place of usability, workflow, and creativity.
Task-related workflow and presentation customization, accessible to
all types of users, is crucial to the success of the UI. Second,
the User Interface should be a mode of personal expression and
aesthetic preference. This should never take precedence over the
overall stability, usability, or general usefulness of a desktop
system, for any given reason.&lt;/p&gt;
&lt;p&gt;Lastly, the user application platform system needs to be designed.
A centralized repository of applications is an incredibly efficient
method for application distribution. This repository would be a
dynamic, centralized database of application software and packages
that are intended for different groups of people. Most major Linux
distributions use this heavily, as well as Apple for it's iPod and
iPhone applications, and it has been proven to work well.&lt;/p&gt;
&lt;p&gt;Any of these rules should have the ability to be broken easily by
advanced power users for technical reasons/needs. This should be in
no way advertised or demonstrated.&lt;/p&gt;
&lt;p&gt;Anyone up for the challenge?&lt;/p&gt;
</summary></entry><entry><title>The FBI Releases Code Challenge to Hackers</title><link href="http://kennethreitz.com/blog//the-fbi-releases-code-challenge-to-hackers.html" rel="alternate"></link><updated>2008-11-11T06:13:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,2008-11-11:/blog//the-fbi-releases-code-challenge-to-hackers.html/</id><summary type="html">&lt;p&gt;The Federal Bureau of Investigation, that's right, the FBI, has
just released a
&lt;a class="reference external" href="%20http://www.networkworld.com/community/node/36704"&gt;Code Challenge&lt;/a&gt;
for hackers around the world! Here are the details:&lt;/p&gt;
&lt;blockquote&gt;
A relatively basic form of substitution cipher is the Caesar
Cipher, named for its Roman origins. The Caesar Cipher involves
writing two alphabets, one above the other. The lower alphabet is
shifted by one or more characters to the right or left and is used
as the cipher text to represent the plain text letter in the
alphabet above it.&lt;/blockquote&gt;
&lt;p&gt;Plain Text&lt;/p&gt;
&lt;blockquote&gt;
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z&lt;/blockquote&gt;
&lt;p&gt;Cipher Text&lt;/p&gt;
&lt;blockquote&gt;
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A&lt;/blockquote&gt;
&lt;p&gt;In this example, the plain text K is enciphered with the cipher
text L. The phrase 'Lucky Dog' would be enciphered as follows:&lt;/p&gt;
&lt;p&gt;Plain Text: L U C K Y D O G&lt;/p&gt;
&lt;p&gt;Cipher Text: M V D L Z E P H&lt;/p&gt;
&lt;p&gt;Ciphers can be made more secure by using a keyword to scramble one
of the alphabets. Keywords can be placed in the plain text, the
cipher text, or both, and any word can be used as a key if repeated
letters are dropped. Here the word SECRETLY (minus the second E) is
used as the plain text keyword.&lt;/p&gt;
&lt;p&gt;Plain Text&lt;/p&gt;
&lt;p&gt;S E C R T L Y A B D F G H I J K M N O P Q U V W X Z&lt;/p&gt;
&lt;p&gt;Cipher Text&lt;/p&gt;
&lt;p&gt;A B C D E F G H I J K L M N O P Q R S T U V W X Y Z&lt;/p&gt;
&lt;p&gt;The FBI of course doesn't always invite folks to break code on its
site. In fact last spring a consultant managed to access the
bureau's National Crime Information Center database.&lt;/p&gt;
&lt;p&gt;Is this a ploy to get the hacker community back to its roots? Most
certainly we seem to loose touch to what this is all about. Or
perhaps just an elaborate way to recruit future employees due to
the inability to advertise for positions?&lt;/p&gt;
&lt;p&gt;What do you think?&lt;/p&gt;
</summary></entry><entry><title>Auto Draft</title><link href="http://kennethreitz.com/blog//auto-draft.html" rel="alternate"></link><updated>1970-01-01T00:00:00Z</updated><author><name>Kenneth Reitz</name></author><id>tag:kennethreitz.com,1970-01-01:/blog//auto-draft.html/</id><summary type="html"></summary></entry></feed>