<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.1530technologies.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Strange Loops</title>
    
    <link rel="alternate" type="text/html" href="http://blog.1530technologies.com/" />
    <link rel="service.post" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339" title="Strange Loops" /> 
    <id>tag:typepad.com,2003:weblog-491339</id>
    <updated>2009-07-08T07:00:00+00:00</updated>
    
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <geo:lat>41.860019</geo:lat><geo:long>-87.618702</geo:long><link rel="self" href="http://feeds.1530technologies.com/MemoirsOfABystander" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><title type="text">Links for 2009-07-07 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/_t9QECINioE/gcaprio" /><updated>2009-07-08T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-07-07</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.mrrsoftware.com/MRRSoftware/NameChanger.html"&gt;MRR Software&lt;/a&gt;&lt;br/&gt;
Batch Name chancing app.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/_t9QECINioE" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-07-07</feedburner:origLink></entry><entry><title type="text">Links for 2009-07-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/ksl5HhFMVk8/gcaprio" /><updated>2009-07-06T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-07-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/07/02/power-tips-for-wordpress-template-developers/"&gt;Power Tips For WordPress Template Developers | Developer's Toolbox | Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.everyblock.com/code/"&gt;The EveryBlock source code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.flipflopflyin.com/flipflopflyball/"&gt;Flip Flop Fly Ball&lt;/a&gt;&lt;br/&gt;
Outstanding visualizations for mlb&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lightheadsw.com/caffeine/"&gt;Lighthead - Caffeine&lt;/a&gt;&lt;br/&gt;
Stop your mac from going to sleep or starting screen savers.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/ksl5HhFMVk8" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-07-05</feedburner:origLink></entry><entry>
        <title>Python Database Migrations</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/eMJ7s2BGwo8/db-migration.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=6a00d8341c09c053ef011570bfadb8970c" title="Python Database Migrations" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/07/db-migration.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c09c053ef011570bfadb8970c</id>
        <published>2009-07-04T00:19:27-05:00</published>
        <updated>2009-07-04T18:48:22Z</updated>
        <summary>In the past week, I've be working on a small, lightweight database migration tool using Python. I chose this path instead of using existing tools such as South or PyMigrate because I thought it would be a good learning experience...</summary>
        <author>
            <name>Michael</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;In the past week, I've be working on a small, lightweight database migration tool using Python.  I chose this path instead of using existing tools such as &lt;a href="http://south.aeracode.org/" alt="South"&gt;South&lt;/a&gt; or &lt;a href="http://code.google.com/p/pymigrate/" alt="PyMigrate"&gt;PyMigrate&lt;/a&gt; because I thought it would be a good learning experience and we would be able to customize the tool to our liking later if need be.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Our tool currently takes in raw .sql files and works with &lt;a href="http://www.postgresql.org/" alt="PostgreSQL"&gt;PostgreSQL&lt;/a&gt;.  Many of the alternatives use [up] and [down] tags to designate forward and background migrations.   I originally started out wanting to support &lt;a href="http://www.postgresql.org/" alt="PostgreSQL"&gt;PostgreSQL&lt;/a&gt;, &lt;a href="http://www.mysql.com/" alt="MySQL"&gt;MySQL&lt;/a&gt;, and &lt;a href="http://www.sqlite.org/" alt="sqlite"&gt;sqlite&lt;/a&gt;, but the problem with this approach was that using the the &lt;a href="http://code.google.com/p/pyodbc/" alt="pyodbc"&gt;pyodbc&lt;/a&gt; and &lt;a href="http://docs.python.org/library/sqlite3.html" alt="sqlite3"&gt;sqlite3&lt;/a&gt; wrappers do not support transactions. Thus, I can't rollback in the middle of a transaction.  I learned that &lt;a href="http://www.mysql.com/" alt="MySQL"&gt;MySQL&lt;/a&gt; doesn't support transactional &lt;a href="http://en.wikipedia.org/wiki/Data_Definition_Language" alt="DDL"&gt;Data Definition Language&lt;/a&gt; and that the sqlite3 wrapper doesn't support turning on transactions for DDL (only DML).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Anybody have experience working with these modules that could help? &lt;/p&gt;&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oaw0jlF_qcd46gJqts1JiOxp30E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oaw0jlF_qcd46gJqts1JiOxp30E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oaw0jlF_qcd46gJqts1JiOxp30E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oaw0jlF_qcd46gJqts1JiOxp30E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/eMJ7s2BGwo8" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/07/db-migration.html</feedburner:origLink></entry>
    <entry>
        <title>Semantic Mashups</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/tmaOfc9UiQQ/semantic-mashups.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=6a00d8341c09c053ef011570929ed6970c" title="Semantic Mashups" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/semantic-mashups.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8341c09c053ef011570929ed6970c</id>
        <published>2009-06-29T11:57:39-05:00</published>
        <updated>2009-07-06T15:42:37Z</updated>
        <summary>Updated: Just wanted to update everyone that the meeting has been changed to the 29th. Same venue and times. Just wanted to drop a note that I'll be giving a presentation on Semantic Mashups at the next Chicago Semantic Web...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;strong&gt;Updated&lt;/strong&gt;: Just wanted to update everyone that the meeting has been changed to the 29th.  Same venue and times.
&lt;br/&gt;

Just wanted to drop a note that I'll be giving a presentation on Semantic Mashups at the next &lt;a href="http://semweb.meetup.com/30/"&gt;Chicago Semantic Web User Group&lt;/a&gt; meeting in &lt;a href="http://semweb.meetup.com/30/calendar/10679172//"&gt;July&lt;/a&gt;.  Here is the description of the talk:

&lt;blockquote&gt;
This month the talk will be given by one of our organizers, Griffin Caprio, on Semantic Mashups.
&lt;br/&gt;
&lt;br/&gt;
&lt;strong&gt;Description&lt;/strong&gt;
&lt;br/&gt;
A mashup is a web page or application that combines data or functionality from two or more external sources to create a new service. Semantic mashups take this a step further by utilizing semantic web technologies to create a richer experience. Using RDF, SPARQL and URIs, mashups can evolve past the simple reuse of data and into the discovery of new knowledge.
&lt;br/&gt;
In this talk, we'll be presenting sports statistic semantic mashup examples and explaining the underlying techniques and technologies that make them possible.
&lt;br/&gt;
&lt;br/&gt;
&lt;strong&gt;Speaker Bio&lt;/strong&gt;
&lt;br/&gt;
Griffin is a startup oriented entrepreneur with substantial experience in all phases of IT governance, product development and software engineering. Focusing on using technology to solve real problems and reducing friction of how technology affects everyday life, his company, 1530 Technologies, builds well engineered products for real world problems.
&lt;br/&gt;
We are also scheduling some time for people to meet and talk.
&lt;br/&gt;
Food and drinks will be provided, however it would be appreciated if you can chip in $5 to help cover our costs.
&lt;/blockquote&gt;
If you want to come, please RSVP using the links above.  That will help us get a idea about food &amp; drinks as well as take care of the building security.
&lt;!-- Technorati Tags Start --&gt;
&lt;p&gt;Technorati Tags:
&lt;a href="http://technorati.com/tag/semantics" rel="tag"&gt;semantics&lt;/a&gt;, &lt;a href="http://technorati.com/tag/mashup" rel="tag"&gt;mashup&lt;/a&gt;, &lt;a href="http://technorati.com/tag/sports%20statistics" rel="tag"&gt;sports statistics&lt;/a&gt;
&lt;/p&gt;
&lt;!-- Technorati Tags End --&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2-1hLoVjRBEKdKQ_WF5Nf3n2Wfc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-1hLoVjRBEKdKQ_WF5Nf3n2Wfc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2-1hLoVjRBEKdKQ_WF5Nf3n2Wfc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-1hLoVjRBEKdKQ_WF5Nf3n2Wfc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/tmaOfc9UiQQ" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/semantic-mashups.html</feedburner:origLink></entry>
    <entry><title type="text">Links for 2009-07-02 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/QRYNksA4cc0/gcaprio" /><updated>2009-07-03T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-07-02</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.noupe.com/css/50-free-high-quality-and-new-xhtmlcss-templates.html"&gt;50 Free High-Quality and &amp;ldquo;New&amp;rdquo; (X)HTML/CSS Templates | Noupe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/QRYNksA4cc0" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-07-02</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-30 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/1XIyWW3-0U4/gcaprio" /><updated>2009-07-01T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-06-30</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://forum.webfaction.com/viewtopic.php?id=1981"&gt;WebFaction Forum / Setting up Django with nginx/FastCGI.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thenationalchampionshipissue.blogspot.com/2009/06/did-you-know.html"&gt;The National Championship Issue: Did You Know...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://delicioussafari.com/"&gt;DeliciousSafari&lt;/a&gt;&lt;br/&gt;
delicious bookmarks in safari&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thewpresser.com/css-cheat-sheet-wallpaper-in-helvetica/"&gt;CSS Cheat Sheet Wallpaper in Helvetica | theWPresser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.smashingmagazine.com/2009/05/05/optimizing-improvig-conversion-rates-less-effort-more-customers/"&gt;Optimizing Conversion Rates: Less Effort, More Customers | How-To | Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/1XIyWW3-0U4" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-06-30</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-29 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/0CideI6q8ik/gcaprio" /><updated>2009-06-30T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-06-29</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gosatchmo.com/how-to-skin-a-satchmo-store-overriding-templates"&gt;GoSatchmo : How to skin a Satchmo Store - Overriding Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gosatchmo.com/adding-an-accept-terms-requirement-to-satchmo-checkout"&gt;GoSatchmo : Adding an &amp;quot;Accept Terms&amp;quot; requirement to Satchmo Checkout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rivals.yahoo.com/ncaa/football/blog/dr_saturday/post/The-Pac-10-undercuts-its-brand-by-the-numbers?urn=ncaaf,172884"&gt;The Pac-10 undercuts its brand, by the numbers - Dr. Saturday - NCAA Football - Rivals.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.nodewave.com/cms/content/view/css-coding-style-conventions--standards-guidelines-rules/coding-style-convention--standard-guideline-rule/"&gt;nodewave: Soci&amp;eacute;t&amp;eacute; d'Ing&amp;eacute;nierie, de Conseil et Service informatique (Gen&amp;egrave;ve, Vaud, Neuch&amp;acirc;tel) - CSS Coding Style Convention&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://getfirebug.com/lite.html"&gt;Firebug Lite&lt;/a&gt;&lt;br/&gt;
Non-FF Version of Firebug&lt;/li&gt;
&lt;li&gt;&lt;a href="http://david.dojotoolkit.org/recss.html"&gt;ReCSS: Reload your CSS&lt;/a&gt;&lt;br/&gt;
Reloads your CSS file&lt;/li&gt;
&lt;li&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2009/06/traffic-drops-and-site-architecture_29.html"&gt;Official Google Webmaster Central Blog: Traffic drops and site architecture issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=139394"&gt;About rel=&amp;quot;canonical&amp;quot; - Webmasters/Site owners Help&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ms-studio.com/FontSales/anonymouspro.html"&gt;Anonymous Pro&lt;/a&gt;&lt;br/&gt;
New font&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.djangosnippets.org/snippets/766/"&gt;Django snippets: DebugFooter middleware&lt;/a&gt;&lt;br/&gt;
Invaluable middleware&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/0CideI6q8ik" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-06-29</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-28 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/f86ZRxNfCxk/gcaprio" /><updated>2009-06-29T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-06-28</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bitbucket.org/gregnewman/django-loupe/wiki/Home"&gt;gregnewman / django-loupe / wiki / Home &amp;mdash; bitbucket.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/f86ZRxNfCxk" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-06-28</feedburner:origLink></entry><entry><title type="text">Links for 2009-06-27 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/A55ZP0yXdr8/gcaprio" /><updated>2009-06-28T00:00:00-07:00</updated><id>http://del.icio.us/gcaprio#2009-06-27</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.noupe.com/php/how-to-create-your-own-stats.html"&gt;How To Create Your Own Stats Program (JavaScript, AJAX, PHP) | Noupe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.trendingtopics.org/"&gt;Trending Topics: Search for Topics &amp;amp; News Trending Now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oscaralexander.com/tutorials/how-to-make-sexy-buttons-with-css.html"&gt;How to make sexy buttons with CSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/A55ZP0yXdr8" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/gcaprio#2009-06-27</feedburner:origLink></entry><entry>
        <title>Usability With Web Apps</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/2bcn7B8nyvc/usability-with-web-apps.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=68376197" title="Usability With Web Apps" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/usability-with-web-apps.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68376197</id>
        <published>2009-06-22T14:17:09-05:00</published>
        <updated>2009-06-22T21:25:46Z</updated>
        <summary>As I start working here at 1530 Technologies, I'm starting to see just how important it is to keep usability in mind. For example, the registration process can make or break any web application. If there are too many steps...</summary>
        <author>
            <name>Michael</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;As I start working here at &lt;a href="blog.1530technologies.com"&gt;1530 Technologies&lt;/a&gt;, I'm starting to see just how &lt;strong&gt;important&lt;/strong&gt; it is to keep &lt;strong&gt;usability&lt;/strong&gt; in mind.  &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;For example, the registration process can make or break any web application.  If there are too many steps involved in getting registered and if the user is not dead-set on the product, they may lose interest.  I implemented two such usability improvements on one of the apps we're working on:&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;If a user has already registered to use our service and they are not logged in, he'll see the initial information/sign-up page.  If the user inputs his name into the email sign-up form, he will be redirected to the login form &lt;strong&gt;with the login already filled in&lt;/strong&gt;.  This helps to reduce the amount of clicking and typing that a registered user has to go through to access the web application.&lt;/li&gt;&#xD;
&lt;li&gt;When a user signs up, they receive an email with a link to activate their account.  Clicking on the activation link in an email will activate their account, but it will also log them in immediately (instead of having to log in manually).  If a user has just activated via that unique activation url, it makes sense to automatically log him in.  This also reduces &lt;strong&gt;mouse-clicks&lt;/strong&gt;, typing, and time (that the user needs to look for the login form.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;Given my limited knowledge, I think these are simple usability tweaks that anybody could integrate into their page.  Good Luck!&lt;/p&gt;&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-3Jg6SqeEzW0n0pEXSL_2pkE7kk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-3Jg6SqeEzW0n0pEXSL_2pkE7kk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-3Jg6SqeEzW0n0pEXSL_2pkE7kk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-3Jg6SqeEzW0n0pEXSL_2pkE7kk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/2bcn7B8nyvc" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/usability-with-web-apps.html</feedburner:origLink></entry>
    <entry>
        <title>Analyzing Apple's Announcements</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/w7bg1xJoO10/analyzing-apples-announcements.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=67868521" title="Analyzing Apple's Announcements" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/analyzing-apples-announcements.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67868521</id>
        <published>2009-06-16T11:56:21-05:00</published>
        <updated>2009-06-16T16:56:21Z</updated>
        <summary>There were some exciting announcements from Apple at WWDCtoday! Being a Mac OS X user (though still chugging along with a mid-2007 Whitebook with cracks on the edges and a not-bright-enough screen) and having an iPhone (with dust creeping under...</summary>
        <author>
            <name>Michael</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;There were some exciting announcements from &lt;a href="http://www.apple.com"&gt;Apple&lt;/a&gt; at &lt;a href="http://developer.apple.com/WWDC/"&gt;WWDC&lt;/a&gt;today!  Being a Mac OS X user (though still chugging along with a mid-2007 Whitebook with cracks on the edges and a not-bright-enough screen) and having an iPhone (with dust creeping under the screen), I'm pretty excited about all the new announcements.  Here are my initial reactions:&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;New Laptops&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;I really like the idea of built-in batteries.  Being a student in college, I'm around power outlets most of the time, but even in class, having this increased power efficiency really helps.  I'm not too worried about having to buy extra batteries because I won't ever be that far away from an outlet.  If Apple is going to charge me for $129 for a new battery anyway, I don't mind getting a longer-lasting (both one-charge-wise and life-time-wise).  Though, I have heard good things about &lt;a href="http://www.fastmac.com"&gt;Fastmac &lt;/a&gt;batteries, which are only $99. &lt;/li&gt;&#xD;
  &lt;li&gt;The old unibody macbook branded as a MacBook Pro now just makes sense.  The lower prices and the (re)addition of a firewire port help to sweeten the deal for potential switchers to the OS X platform.&lt;/li&gt;&#xD;
  &lt;li&gt;I at first was extremely excited about the price drop of the lowest end MacBook Pro to $1700, but I'm not stoked about the fact that it doesn't have &lt;a href="http://www.engadget.com/2009/06/08/apple-announces-new-macbook-pro-at-wwdc-2009/"&gt;discrete graphics&lt;/a&gt;.  Though I don't do much gaming, having discrete graphics (after going through this horrible experience with integrated graphics &lt;em&gt;&lt;strong&gt;only&lt;/strong&gt;&lt;/em&gt; on my Macbook) is important to me.  Guess I'd have to go one step up...&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;New iPhone&#xD;
&lt;ul&gt;&#xD;
   &lt;li&gt;The upgraded camera seems like it would be the one killer feature for me.  Having focus opens up many creative possibilities (without resorting to cases and such to provide macro capability).&lt;/li&gt;&#xD;
   &lt;li&gt;Find My iPhone, in which you can track down a missing iPhone through MobileMe, sounds incredibly awesome (whenever I can fork out the money for MobileMe...)&lt;/li&gt;&#xD;
   &lt;li&gt;The addition of hardware peripherals to the iPhone platform adds amazing possibilities.  Turn-by-Turn GPS at last!&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;Snow Leopard&#xD;
&lt;ul&gt;&#xD;
   &lt;li&gt;The updates to the Finder seem pretty cool.  The Quicklook tweaks look pretty useful (though I admit I don't use Quicklook much as it is now).  I actually don't hate the Finder as much as a lot of other people do.  The one thing I'm looking for is a way to have a 2-pane view in which I could easily copy and paste things (such as dragging to Applications from a disk image)&lt;/li&gt;&#xD;
   &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenCL"&gt;OpenCL&lt;/a&gt;, which as I understand it is offloading normally CPU-bound tasks to the graphics processor, sounds like it could be amazing (all the more reason to get a computer with discrete graphics)&lt;/li&gt;&#xD;
   &lt;li&gt;&lt;a href="http://www.smileonmymac.com/TextExpander/"&gt;Text-Expander&lt;/a&gt;-like capabilities (predictive text-filling in based on snippets) integrated into the system seems like it could be be very useful.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;All-in-all, a pretty eventful WWDC.  Going to &lt;a href="http://code.google.com/events/io/"&gt;Google I/O&lt;/a&gt; a week ago and experiencing the conference thing (and getting a free &lt;a href="http://www.engadgetmobile.com/2009/05/27/google-ion-hands-on-and-unboxing/"&gt;Google Ion&lt;/a&gt; phone in the process), I would love to go to WWDC next year and see what (Steve Jobs, hopefully) has in store for us.&lt;/p&gt;&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7gLVp7IpxuWVHAF_vsqfwUzTqs0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7gLVp7IpxuWVHAF_vsqfwUzTqs0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7gLVp7IpxuWVHAF_vsqfwUzTqs0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7gLVp7IpxuWVHAF_vsqfwUzTqs0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/w7bg1xJoO10" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/analyzing-apples-announcements.html</feedburner:origLink></entry>
    <entry>
        <title>Unions and Capitalism</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/4lOXiYfgdvE/unions-and-capitalism.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=68163613" title="Unions and Capitalism" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/unions-and-capitalism.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68163613</id>
        <published>2009-06-16T10:29:09-05:00</published>
        <updated>2009-06-16T15:29:09Z</updated>
        <summary>Labor unions have been around for decades. They formed as a way to prevent management from treating labor unfairly and to guarantee certain rights for their members. Labor unions subsequently rose in power and began to handicap companies ability to...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Labor unions have been around for decades.  They formed as a way to prevent management from treating labor unfairly and to guarantee certain rights for their members.  Labor unions subsequently rose in power and began to handicap companies ability to cut costs and maximize shareholder value.  In this way, they are counter capitalism, since capitalism is meant to maximize profits for it's shareholders.  Now, this isn't to say that labor unions are evil or a bad idea, just that the two ideas have fundamentally opposite goals.&lt;/p&gt;&lt;p&gt;Unfortunately, where labor unions once were the champions of honest hard working people, they became the poster child for corruption and greed.  It's no coincidence that the labor unions rose in power at the same time the Italian mafia rose in power.  Now, the nefarious element has been largely removed from the unions, but the greed still exists.  Ultimately, union leaders and members could not see the correlation between their increasingly skyrocketing salary, retirement and health demands and managements increased use of outsourcing.  After all, nothing about capitalism requires the use of domestic labor.  This has contributed to the down fall of not only companies, but entire industries and sections of the country.  Nowhere is this more evident than Detroit and the auto industry.  It's a shame that management and labor couldn't see the end coming and agree to make individual sacrifices for the good of everyone.  This doesn't mean that the American auto industry would have been saved, but it would have made it easier to compete if people weren't making $35+ an hour for assembly line jobs.  My father ran a manufacturing company for almost 20 years and in the end he was a victim of the same fate.  People sweeping the floor at his company were earning $20/hr.  In the end he just couldn't compete with foreign labor prices.&lt;/p&gt;&lt;p&gt;Chicago is going through its own labor union negotiations right now.  In an effort to save 1,500 city jobs, union leaders are meeting with the mayor and his administration to come to some sort of agreement.  This includes concessions on both sides, which is welcome news.  It seems as though people are starting to understand that the economy is constantly changing and shifting.  That is until I read this quote from the union chief:&lt;/p&gt;&lt;p&gt;"There's got to be assurances that, 10 years from now, these jobs that&#xD;
our members have are still gonna be there for them," he said.&lt;/p&gt;&lt;p&gt;It's amazing to think that people are still looking for 10+ year job security in such a changing environment. If you have a guaranteed job for 10 years, what incentive is there for you to change?  Instead of figuring out how we can take what we have and freeze it in time to preserve it, we should be figuring out how we can better equipment the people whose jobs are going to be obsolete to tackle new jobs.  One of the strange facts about the current economy is that there are thousands of jobs that are still vacant and with no supply of people filling the positions.  Unfortunately, these jobs  are in emerging and sometimes complex industries like IT and health care.   We should be retraining people in these industries rather than trying to maintain and blue collar / assembly line economy.&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gIMqkIDOP8T3cjuSxxSrchfREOI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gIMqkIDOP8T3cjuSxxSrchfREOI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gIMqkIDOP8T3cjuSxxSrchfREOI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gIMqkIDOP8T3cjuSxxSrchfREOI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/4lOXiYfgdvE" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/unions-and-capitalism.html</feedburner:origLink></entry>
    <entry>
        <title>Hello, 1530 Technologies</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/BJWz_ve9rEI/hello-1530-technologies.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=67700633" title="Hello, 1530 Technologies" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/hello-1530-technologies.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67700633</id>
        <published>2009-06-07T18:22:55-05:00</published>
        <updated>2009-06-29T17:04:52Z</updated>
        <summary>Hi, I'm Michael Chang, the intern that Griffin was talking about. I'm excited to work at 1530 Technologies this summer and get my feet wet in web development. Throughout the summer I will update the blog with what I'm working...</summary>
        <author>
            <name>Michael</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Hi, I'm Michael Chang, the intern that Griffin was talking about.  I'm excited to work at 1530 Technologies this summer and get my feet wet in web development.  Throughout the summer I will update the blog with what I'm working on as well as any musings I may have about the web or technology in general.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;On one last note, Go &lt;a href="http://sports.yahoo.com/nba/blog/ball_dont_lie/post/Behind-the-Box-Score-where-the-Lakers-were-domi;_ylt=AmZlkQCknXO6sxY_ObxPsty8vLYF?urn=nba,168290"&gt;Lakers&lt;/a&gt;!&lt;/p&gt;&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Ue7DJOHsWw3iybl56U-1d8KLFI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Ue7DJOHsWw3iybl56U-1d8KLFI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Ue7DJOHsWw3iybl56U-1d8KLFI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Ue7DJOHsWw3iybl56U-1d8KLFI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/BJWz_ve9rEI" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/hello-1530-technologies.html</feedburner:origLink></entry>
    <entry>
        <title>No Chicago Semantic Web Meeting This Month</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/K7-IWnN-sXw/no-chicago-semantic-web-meeting-this-month.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=67565853" title="No Chicago Semantic Web Meeting This Month" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/06/no-chicago-semantic-web-meeting-this-month.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67565853</id>
        <published>2009-06-02T18:19:53-05:00</published>
        <updated>2009-06-02T23:19:53Z</updated>
        <summary>The usual meeting this month conflicts with the Semantic Web Technology Conference being held in San Jose. Since a number of organizers and attendees will be going to the conference, we've decided to give everyone a break this month. We...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;The usual meeting this month conflicts with the Semantic Web Technology Conference being held in San Jose.&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
Since a number of organizers and attendees will be going to the conference, we've decided to give everyone a break this month. We will be picking it up again in July, when I'm is planning on presenting a talk on Semantic Mashups.&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
I hope everyone enjoys the start of Summer!&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YwGqKj5pEUrO-gYWRzjYxaRxBzA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YwGqKj5pEUrO-gYWRzjYxaRxBzA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YwGqKj5pEUrO-gYWRzjYxaRxBzA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YwGqKj5pEUrO-gYWRzjYxaRxBzA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/K7-IWnN-sXw" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/06/no-chicago-semantic-web-meeting-this-month.html</feedburner:origLink></entry>
    <entry>
        <title>Growing the 1530 family</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/eG1qR6OqnPE/growing-the-1530-family.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=67460687" title="Growing the 1530 family" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/05/growing-the-1530-family.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67460687</id>
        <published>2009-05-30T15:41:42-05:00</published>
        <updated>2009-05-30T20:42:54Z</updated>
        <summary>A few weeks ago, we put out a call for summer interns. We posted to this blog as well as the 37signals job board. We got a lot of great candidates over the next few weeks. It was a tough...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;A few weeks ago, we put out a &lt;a href="http://blog.1530technologies.com/2009/04/django-intern-wanted.html"&gt;call&lt;/a&gt; for summer interns.  We posted to this blog as well as the &lt;a href="http://37signals.com/"&gt;37signals&lt;/a&gt; &lt;a href="http://jobs.37signals.com/jobs"&gt;job board&lt;/a&gt;.  We got a lot of great candidates over the next few weeks.  It was a tough choice, but we narrowed the field down to one exceptional candidate.  I'll let him introduce himself:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My name is Michael Chang and I have just finished my sophomore year as an EECS major at UC Berkeley.  I'm interested in web development, Mac OS X programming, and cloud computing.  I am big fan of Macs and all sorts of electronic gadgets.  In my free time, I enjoy video games, playing and following sports, and photography.   &lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Why Michael?&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;We were looking for someone who is hungry and wants to learn and grow their skill set.  We weren't looking for experience in certain technologies or tools.  After all, this isn't a job role we're trying to fill. We're simply trying to give back to the software development community.  When I was just starting out, I had the fortune of landing an internship in Chicago and it accelerated my career.  Hopefully we can do the same for Michael.&lt;/p&gt;

&lt;p&gt;We're all excited here for Michael to come on board.  He will be working on a as-of-yet unannounced product for us for at least the summer.  He'll be working with HTML/CSS &amp; Django and also be blogging here on his internship and technology in general.&lt;/p&gt;

&lt;p&gt;So everyone please welcome Michael to the team!&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fEH9En9WWiZzVQoVpOUh1n7phfo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fEH9En9WWiZzVQoVpOUh1n7phfo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fEH9En9WWiZzVQoVpOUh1n7phfo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fEH9En9WWiZzVQoVpOUh1n7phfo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/eG1qR6OqnPE" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/05/growing-the-1530-family.html</feedburner:origLink></entry>
    <entry>
        <title>Chicago Semantic Web Group - May</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/IFQPPank4PU/chicago-semantic-web-group---may.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=66991625" title="Chicago Semantic Web Group - May" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/05/chicago-semantic-web-group---may.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-66991625</id>
        <published>2009-05-19T11:07:43-05:00</published>
        <updated>2009-05-19T16:07:43Z</updated>
        <summary>Tomorrow night, the Chicago Semantic Web Group will be meeting at the ITA ( map ) in downtown Chicago. The speaker will be Paul Gearon who runs the Mulgara Open Source project and is an employee of Fedora Commons. Paul...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="http://semweb.meetup.com/30/calendar/10247313/"&gt;Tomorrow night&lt;/a&gt;, the &lt;a href="http://semweb.meetup.com/30/"&gt;Chicago Semantic Web Group&lt;/a&gt; will be meeting at the ITA ( &lt;a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=200+S.+Wacker+Chicago+IL&amp;sll=37.0625,-95.677068&amp;sspn=44.60973,76.992187&amp;ie=UTF8&amp;z=16&amp;iwloc=A"&gt;map&lt;/a&gt; ) in downtown Chicago.  The speaker will be Paul Gearon who runs the &lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt; Open Source project and is an employee of &lt;a href="http://www.fedora-commons.org/"&gt;Fedora Commons&lt;/a&gt;.  

Paul will be giving a talk about &lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt; the RDF data store he has been working on for several years.  Below is the talk synopsis:

&lt;blockquote&gt;&lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt; is an open sourced RDF data store that can run in any Java environment. It has a mature codebase, starting in 2001 as a commercial system, before being open sourced in 2004.

&lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt; offers a scalable data store, with a flexible mechanism for integrating RDF from multiple sources. It supports many standards, providing a flexible and consistent means for developers to work with their data. The system supports all the major semantic web standards, REST interfaces, and provides a rule engine for logic programming. &lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt; is widely deployed in both industry and government, and provides storage the storage layer for several other systems which integrate Semantic Web data, including the Public Library of Science and Fedora Commons.

This talk will discuss some of the architecture and interfaces for &lt;a href="http://mulgara.org/"&gt;Mulgara&lt;/a&gt;, and demonstrate the ease with which it can be deployed and accessed.&lt;/blockquote&gt;

If you think you can make it, please RSVP &lt;a href="http://semweb.meetup.com/30/calendar/10247313/"&gt;here&lt;/a&gt; or drop me a &lt;a href="mailto:gcaprio@1530technologies.com" style="text-decoration: underline; color: #003366;"&gt;email&lt;/a&gt;.&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DTP6_PF4AsSHCFboMTJHb5bosXc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTP6_PF4AsSHCFboMTJHb5bosXc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DTP6_PF4AsSHCFboMTJHb5bosXc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DTP6_PF4AsSHCFboMTJHb5bosXc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/IFQPPank4PU" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/05/chicago-semantic-web-group---may.html</feedburner:origLink></entry>
    <entry>
        <title>Entourage Signature Placement</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/t_zHfwvoxQA/entourage-signature-placement.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=66126825" title="Entourage Signature Placement" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/04/entourage-signature-placement.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-66126825</id>
        <published>2009-04-28T16:03:30-05:00</published>
        <updated>2009-04-28T21:05:46Z</updated>
        <summary>I've had to start using Entourage from MS Office '08 for my email needs. One thing that took me a while to figure out is why, by default, Entourage puts your signature at the very, very bottom when you're replying...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I've had to start using &lt;a href="http://www.microsoft.com/mac/products/entourage2008/default.mspx#/interacting_entourage/"&gt;Entourage&lt;/a&gt; from &lt;a href="http://www.microsoft.com/mac/products/Office2008/default.mspx"&gt;MS Office '08&lt;/a&gt; for my email needs.  &#xD;
&#xD;
One thing that took me a while to figure out is why, by default, &lt;a href="http://www.microsoft.com/mac/products/entourage2008/default.mspx"&gt;Entourage&lt;/a&gt; puts your signature at the very, very bottom when you're replying to an emil message.  Apparently, you have to change the message attribution settings &lt;a href="http://www.microsoft.com/mac/products/entourage2008/default.mspx"&gt;Entourage&lt;/a&gt; from the default of:&#xD;
&#xD;
&lt;img src="http://bystander.typepad.com/.a/6a00d8341c09c053ef01156f64a348970c-pi" alt="Preferences-1.png" border="0" width="610" height="375"&gt;&lt;/img&gt;&#xD;
&#xD;
To:&#xD;
&#xD;
&lt;img src="http://bystander.typepad.com/.a/6a00d8341c09c053ef01156f6490cc970c-pi" alt="Preferences.png" border="0" width="610" height="375"&gt;&lt;/img&gt;&#xD;
&#xD;
And voila, your signature will now be above any quoted text in your replies &lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KWdZvoVhxypWuMPWzC7XHulixUY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KWdZvoVhxypWuMPWzC7XHulixUY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KWdZvoVhxypWuMPWzC7XHulixUY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KWdZvoVhxypWuMPWzC7XHulixUY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/t_zHfwvoxQA" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/04/entourage-signature-placement.html</feedburner:origLink></entry>
    <entry>
        <title>Don't Belittle People Or Your Users</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/COzB8zThFbo/dont-belittle-people.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=65788501" title="Don't Belittle People Or Your Users" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/04/dont-belittle-people.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-65788501</id>
        <published>2009-04-20T21:29:40-05:00</published>
        <updated>2009-04-21T02:30:55Z</updated>
        <summary>Ever since starting 1530 Technologies back in October of 2008, I've been working closely with the startup community here in Chicago. Not only as a source of potential clients, but also potential partners. I've been fortunate to meet some amazing...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Ever since starting 1530 Technologies back in October of 2008, I've been working closely with the startup community here in Chicago.  Not only as a source of potential clients, but also potential partners.  I've been fortunate to meet some amazing people and startups.  However, one of the running themes I've encountered among startups and their employees is something I would call a disdain for people.  &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
For example, I'm constantly surprised at the number of startups that describe their potential customers as, basically, idiots.  They start by telling me that "they'll show them how [insert business here] should be done" or "[potential customer] is currently doing X [laughs]".  Now, they can tell themselves that they're only talking to me and not their customers, but that's not that easy.  It's difficult, if not impossible, to get someone to believe in you or your company when you're not being 100% honest with them.  Maybe you're a spectacular liar, but chance are, they'll know that you're just full of shit.  You can't truly care about solving a persons problem if you hold them or their problem in such low regard.&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
I also see other entrepreneurs ridicule and make fun of non-entrepreneurs for no real reason.  I was in the offices of the Illinois Technology Association ( ITA ) recently and overheard some employees of a startup making some not so nice remarks about the receptionist that was currently working.  They didn't even know her name even though they see her everyday.  They were treating her like she didn't matter and, what's worse, their CEO was joining in on the fun.  I couldn't believe that a CEO would set such an example for the other employees.  Since I am a member of the ITA, I use their offices frequently.  I not only know all of the receptionists names, but quite a bit about them.  I don't do it to curry favor with them, I do it because they're people too and I like being nice to people.  Just because they're not doing the same job I am or working in the same industry as me, doesn't make them any less of a person or not worth my time.&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
Being nice to people doesn't cost you anything and it doesn't take much of an effort to care a bit about people.  If you simply listen to people, you'll be quite surprised at how much more you will understand.  You'll become better at interacting with people and you'll also become better at understanding them and their issues, which is a huge first step to actually solving their issues.  It's one of the best traits you can nurture in yourself and it never goes out of style, no matter what you're doing.  So the next time you're talking with someone, ask yourself if you're really listening to them and what they're saying &#xD;
&#xD;
&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IneaFRAhii3E-MhGqWgGYnRDEfY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IneaFRAhii3E-MhGqWgGYnRDEfY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IneaFRAhii3E-MhGqWgGYnRDEfY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IneaFRAhii3E-MhGqWgGYnRDEfY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/COzB8zThFbo" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/04/dont-belittle-people.html</feedburner:origLink></entry>
    <entry>
        <title>Django Intern Wanted</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/KkJWn5nwnsI/django-intern-wanted.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=65787085" title="Django Intern Wanted" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/04/django-intern-wanted.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-65787085</id>
        <published>2009-04-20T20:38:00-05:00</published>
        <updated>2009-04-21T01:45:51Z</updated>
        <summary>We’re looking for an intern who’s looking to get their foot in the door. We have a dynamic environment with lots of opportunity to spread your wings and get a feel for what you like to do. You’ll be working...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Business" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;We’re looking for an intern who’s looking to get their foot in the door.

We have a dynamic environment with lots of opportunity to spread your wings and get a feel
for what you like to do. You’ll be working with very experienced people and given the opportunity to grow as
the company grows. We’re in Chicago, IL, but you can be anywhere really. We’re flexible like that.

You have to:&lt;br/&gt;
- Be passionate about technology&lt;br/&gt;
- Available at least 15 hrs a week&lt;br/&gt;
- Have some HTML, CSS &amp; Django skills&lt;br/&gt;
- Know the value of automated builds &amp; unit tests&lt;br/&gt;
- Have good communication skills&lt;br/&gt;

We are:&lt;br/&gt;
- Small, bootstrapped startup based in Chicago&lt;br/&gt;
- Building products covering different areas, including sports &amp; analytics&lt;br/&gt;
- Focused on building products for real people &amp; solving real problems.&lt;br/&gt;
- Dedicated to building products with simplicity &amp; usability&lt;br/&gt;

If you’re a budding developer looking for a taste of the industry or an experienced hack looking to use 
some new technologies, drop us a line and we’ll talk.&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RKh-elp9YTW7_MZrVDIoy5LKu0g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RKh-elp9YTW7_MZrVDIoy5LKu0g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RKh-elp9YTW7_MZrVDIoy5LKu0g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RKh-elp9YTW7_MZrVDIoy5LKu0g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/KkJWn5nwnsI" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/04/django-intern-wanted.html</feedburner:origLink></entry>
    <entry>
        <title>iPhone Programming: Max Length Text Field</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/tmOllBm1nSU/iphone-programing-max-length-text-field.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=65019373" title="iPhone Programming: Max Length Text Field" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/04/iphone-programing-max-length-text-field.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-65019373</id>
        <published>2009-04-02T22:43:51-05:00</published>
        <updated>2009-04-13T19:34:06Z</updated>
        <summary>So one of the first things I needed to do in an iPhone application was limit the amount of characters that a user can enter into a UITextField. At first glance, this seems easy, but it's actually a little less...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;So one of the first things I needed to do in an iPhone application was limit the amount of characters that a user can enter into a &lt;a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html"&gt;UITextField&lt;/a&gt;.  At first glance, this seems easy, but it's actually a little less than straight forward.

First, your containing class needs to implement the &lt;a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html"&gt;UITextFieldDelegate&lt;/a&gt; protocol.  See my &lt;a href="http://blog.1530technologies.com/2009/03/iphone-programming-protocols.html"&gt;previous post&lt;/a&gt; about what protocols and delegates are.  In particular, you need to implement the shouldChangeCharactersInRange method:

&lt;pre&gt;
- (BOOL)textField:(UITextField *)inputTextField 
		shouldChangeCharactersInRange:(NSRange)range 
		replacementString:(NSString *)string
{
}
&lt;/pre&gt;

This method gets called when the user enters new text but before the text is actually saved to the field.  You return a YES or NO, depending on if you want the new text to be allowed into the field.  Basically, you're checking to see if the next text would be bigger than a given length.  If it is, you reject the change.  If not, you're good to go.

Next, you need to check the text field length to see if it's ok:

&lt;pre&gt;
if (textField.text.length &gt;= 5 &amp;&amp; range.length == 0) {
	return NO;
} else {
	return YES;	
}
&lt;/pre&gt;

Above I'm simply checking to see if the textfields text is bigger than 5.  The second part of the expression, the range length checking, is for little more complex scenarios when the range of text you're changing is more than one character.  For now, just check that the range length is 0.

Now, if you have one text field on your screen, you're done.  But what if you have multiple text fields on your form and they all have different max length requirements?  Well, the answer turns out to be pretty easy.  Simply create a new subclass of the UITextField:

&lt;pre&gt;
// MaxLengthTextField.h
@interface MaxLengthTextField : UITextField {
	int maxLength;
}
@property (nonatomic) int maxLength;
@end

//MaxLengthTextField.m
#import "MaxLengthTextField.h"
@implementation MaxLengthTextField
@synthesize maxLength;
@end
&lt;/pre&gt;

Then, instead of creating instances of &lt;a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html"&gt;UITextField&lt;/a&gt;, create instances of MaxLengthTextField.  Set the max length of the text field like so:

&lt;pre&gt;
maxLengthTextFieldInstance.maxLength = 5;
&lt;/pre&gt;

Then in your shouldChangeCharactersInRange method, cast the textField parameter to a MaxLengthTextField type and then check the length using the maxLength property.  You're next method implementation will look like this:

&lt;pre&gt;
- (BOOL)textField:(UITextField *)inputTextField 
	shouldChangeCharactersInRange:(NSRange)range 
	replacementString:(NSString *)string
{
	MaxLengthTextField *maxLengthTextField = nil;
	if([inputTextField isMemberOfClass:[MaxLengthTextField class]]) {
		maxLengthTextField = (MaxLengthTextField *)inputTextField;
	}
	if ( maxLengthTextField ) {
		if (maxLengthTextField.maxLength &gt; 0 &amp;&amp; 
			maxLengthTextField.text.length &gt;= maxLengthTextField.maxLength &amp;&amp; 
			range.length == 0) 
		{
			return NO;
		} else {
			return YES;	
		}
	} else {
		return YES;
	}
}
&lt;/pre&gt;

And that's it.  You're done.  Well, you could pull the maxLength comparison into the MaxLengthTextField for better encapsulation.  That's left as an exercise to the reader. Enjoy.&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IPt6wFrC7zmxuwtam31mjSAkWgE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPt6wFrC7zmxuwtam31mjSAkWgE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IPt6wFrC7zmxuwtam31mjSAkWgE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPt6wFrC7zmxuwtam31mjSAkWgE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/tmOllBm1nSU" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/04/iphone-programing-max-length-text-field.html</feedburner:origLink></entry>
    <entry>
        <title>iPhone Programming: Protocols</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/haGPU228mG0/iphone-programming-protocols.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=64860933" title="iPhone Programming: Protocols" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/03/iphone-programming-protocols.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-64860933</id>
        <published>2009-03-30T18:56:40-05:00</published>
        <updated>2009-03-30T23:57:59Z</updated>
        <summary>One of the first topics that gave me pause during my iPhone development stint was the concept of protocols. Protocols are a strange &amp; interesting cross between interfaces and event definitions. In many other languages ( Java, C#, VB.NET, etc......</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;One of the first topics that gave me pause during my iPhone development stint was the concept of protocols.  Protocols are a strange &amp; interesting cross between interfaces and event definitions.  In many other languages ( Java, C#, VB.NET, etc... ) when you define an interface, you're defining a common set of methods that objects must implement if they want to be considered to "implement" a given interface.  One of the requirements of implementing an interface is that you must implement every method in the interface, either directly or via a subclass by marking the method as abstract.

Interfaces are use frequently for implementing "event callbacks".  Class A would accept an object, instance of a class implementing Interface B.  Class A would then call methods defined by the interface, notifying the passed in object of certain events.  Below is a simple example:

&lt;pre&gt;
public interface MyEventInterface {
	EventHappened();
}
public class EventHandler : MyEventInteface {
	public void EventHandler() {
		// Take some action
	}
}
public class EventCaller {
	private MyEventInterface _eventInterfaceObject;
	public EventCaller( MyEventInterface object ) {
		_eventInterfaceObject = object;
	}
	public void SomeCoolMethod() {
		_eventInterfaceObject.EventHappened();
	}
}
&lt;/pre&gt;

.NET languages aside, this was a pretty standard way to implement a poor mans event-handling mechanism in your code.
&lt;blockquote&gt;Note: .NET CLR languages like C# &amp; VB.NET support a more formal definition of an event and delegates.  These are not the delegates we're taking about in this post.&lt;/blockquote&gt;

Well, in Objective-C, protocols provide a similar function to the above.  You basically define a standard set of methods/events, called a protocol, that your class will call.  Then, when instances of your class are created, a class implementing your protocol, called a 'delegate', can register itself as a handler.  Take the following protocol definition below:

&lt;pre&gt;
@protocol MyProtocolDefinition
@required
- (void) Save:(NSString*) stringToSave;
@optional
- (void) OptionalMethod:(NSString*) parameter;
@end
&lt;/pre&gt;

The above code indicates that the Save() method is a required method to implement in classes implementing this protocol.  However, the OptionalMethod is optional, meaning classes wanting to use this protocol only need to implement the Save() method, but they could also implement the OptionalMethod.  It's a pretty interesting concept and very powerful.

The iPhone SDK is built on protocols and delegates, which makes this concept critical to understanding how to hook into various parts of the iPhone SDK.  In fact, when you create a blank Cocoa Touch project in XCode, the first class you'll see is a AppDelegate.m file.  Make sure to check out the &lt;a href="http://developer.apple.com/documentation/cocoa/conceptual/objectiveC/objc.pdf"&gt;Apple Objective-C Tutorial PDF&lt;/a&gt; for more information.&lt;/div&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SW83Y7SEiCg0FPFQEITVeM2bIO0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SW83Y7SEiCg0FPFQEITVeM2bIO0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SW83Y7SEiCg0FPFQEITVeM2bIO0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SW83Y7SEiCg0FPFQEITVeM2bIO0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/haGPU228mG0" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/03/iphone-programming-protocols.html</feedburner:origLink></entry>
    <entry>
        <title>Getting Started w/ iPhone Development</title>
        <link rel="alternate" type="text/html" href="http://feeds.1530technologies.com/~r/MemoirsOfABystander/~3/xCuHw3VQthI/getting-started-w-iphone-development.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=491339/entry_id=64747591" title="Getting Started w/ iPhone Development" />
        <link rel="replies" type="text/html" href="http://blog.1530technologies.com/2009/03/getting-started-w-iphone-development.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-64747591</id>
        <published>2009-03-27T17:11:50-05:00</published>
        <updated>2009-03-27T22:11:50Z</updated>
        <summary>Having spent the last few weeks doing iPhone development, it's been quite a culture shock. I expected to have a learning curve with regards to Objective-C. My last experience with C/C++ was back in college and I never did any...</summary>
        <author>
            <name>Griffin</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="html" xml:lang="en-US" xml:base="http://blog.1530technologies.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Having spent the last few weeks doing iPhone development, it's been quite a culture shock. I expected to have a learning curve with regards to Objective-C. My last experience with C/C++ was back in college and I never did any GUI programming in it. I knew that &lt;a href="http://developer.apple.com/TOOLS/xcode/"&gt;XCode&lt;/a&gt; was pretty powerful and Apple had made Interface Builder to aid developers in building UIs. So I thought I would be able to flounder around and pick things up quickly. After all, I wasn't doing some sort of cool game, I was just doing plain old data entry apps. So lay out the UI, wire it up behind the scenes and boom, you're done. Right?&lt;/p&gt;&#xD;
&lt;p&gt;Not so much.&lt;/p&gt;&#xD;
&lt;p&gt;While it's true that Apple provides a GUI building tool, it's pretty bare bones and is really meant for extremely basic applications. For example, take the follow screenshot from the awesome app &lt;a href="http://www.trapster.com/iphone.php"&gt;Trapster&lt;/a&gt;:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br&gt;&#xD;
&lt;img src="http://bystander.typepad.com/.a/6a00d8341c09c053ef01156e778e01970c-pi" width="320" height="480" alt="photo.jpg"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The UI above is actually non-trivial. The entire screen is a subclass of something called a &lt;a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewController_Class/Reference/Reference.html"&gt;UITableViewController&lt;/a&gt;. The grouping of sections with headings is officially supported out of the box, but the rows that contain a label and a textbox actually require a custom sub class of &lt;a href="http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html"&gt;UITableViewCell&lt;/a&gt;. You need to specify geometry coordinates, spacing, etc... Not that it's a HUGE task, but non-trivial and certainly unexpected, perhaps naively, by me. You end up having to write a ton of boilerplate code and making it reusable should be a high on any iPhone developers priority list to avoid cut-&amp;amp;-paste coding.&lt;/p&gt;&#xD;
&lt;p&gt;So, in order to give back to the iPhone SDK community that's helped me so much over the past few weeks, I'm going to be posting some generic pieces of code that show how to do common things that you see in many apps, but that are not necessarily straight forward.&lt;/p&gt;&#xD;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ig8W09bMvoPstF9pmYQfiOJfAdc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ig8W09bMvoPstF9pmYQfiOJfAdc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ig8W09bMvoPstF9pmYQfiOJfAdc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ig8W09bMvoPstF9pmYQfiOJfAdc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MemoirsOfABystander/~4/xCuHw3VQthI" height="1" width="1"/&gt;</content>


    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nd/2.0/" /><feedburner:origLink>http://blog.1530technologies.com/2009/03/getting-started-w-iphone-development.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:from_kauri -->
