<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3402802525195793148</id><updated>2011-07-28T10:16:04.553-07:00</updated><category term='google-app-engine'/><category term='Economy'/><category term='Games'/><category term='Microsoft'/><category term='Software Engineering'/><category term='Internet'/><category term='Technology'/><category term='python'/><category term='easy_install'/><category term='development'/><category term='editorial'/><category term='pip'/><category term='EDA'/><category term='Photography'/><category term='django'/><category term='Apple'/><category term='virtualenv'/><category term='gae'/><category term='Gas Prices'/><title type='text'>My Life</title><subtitle type='html'>This is my life - the things that interest me and the things I follow..</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5816318576258388341</id><published>2010-02-27T19:36:00.000-08:00</published><updated>2010-02-28T16:32:44.723-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='pip'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google-app-engine'/><category scheme='http://www.blogger.com/atom/ns#' term='gae'/><title type='text'>Development strategy for google-app-engine</title><content type='html'>&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;In developing my site for the cloud I found it a bit of a challenge.  There is very little documentation in terms of infrastructure strategy and a lot of sites assume you have a clear methodology.  I always strive for a clean infrastructure — having developed code for the quite awhile I have come to know that if you have a solid scalable strategy up front it makes things just work easier later on.  That is why I was really turned onto google-app-engine.  It gives you a clear way of building and testing your code and then pushing it to the web.  It is a great place to start but it isn’t the “everything” I’m looking for.  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Because some of the limitations/restrictions with using google-app-engine (GAE) you need to understand that if you want to use it (i.e. python package) you need to include it in your application.  That is where the benefits of a virtualenv come into play.  virtualenv (when combined with pip) let you know exactly what packages you have because throughout the application development process if you need it you ‘pip-it’. Then pip gives you a clean manifest on what you have so you always know.  But.. (you knew this was coming) GAE doesn’t like a virtual env.  In fact if you try it you almost surely run into problems.  For me it was a error along this line...&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;ImportError: No module named unittest&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;So what can I do?  For me the reasons to use a virtualenv/pip combination is too compelling to simply not use it.  &lt;em&gt;I really like knowing what packages I willbe deploying up to the cloud and since I need to package them with my application why not?&lt;/em&gt;  Furthermore if you are used to running in a virtualenv/pip environment or you have a somewhat stock python environment this is just a good way to keep things straight.  Understanding the obvious limitation that you can’t run in a virtualenv we are going to take advantage of everything else this environment has to offer.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;General Development Strategy&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;Use Django. While I understand that GAE now support 1.1 I want that control left to me.&lt;/li&gt;&lt;li&gt;Keep the development tree streamlined for the entire site.  Guido recommends (as I understand him in this video ~11:45) to use a single app-engine application per independent application.  This doesn’t make much sense to me as the ability to share information between different models is really extending the multi-dimensionality of the site.  So my preference is to keep it all under one hood.&lt;/li&gt;&lt;li&gt;Use revision control (for me it’s perforce - I don’t have anything against the others (hg/git/svn) it’s just what I like)&lt;/li&gt;&lt;li&gt;Use eclipse/pydev as my development environment&lt;/li&gt;&lt;/ul&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;General Directory Structure&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am developing for $SITE ( i.e export SITE=“foobar.com”)&lt;br /&gt;&lt;br /&gt;/dev&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/&amp;lt;$SITE&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/bin&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/lib&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/include&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/src&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/django&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/www&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;app.yaml&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/appengine_django&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;manage.py&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;main.py&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/apps&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/app_1&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/app_2&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/app_3&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/app_n&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/settings&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;__init__.py&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;urls.py&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;django symlink to ../src/django/django&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Getting started&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Setup your virtualenv&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; cd dev&lt;/pre&gt;&lt;br /&gt;Build up a baseline virtualenv&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; virtualenv --python=python2.5 --no-site-packages ${SITE}&lt;/pre&gt;&lt;br /&gt;Install some needed apps.. (&lt;em&gt;make sure you are in your dev directory..&lt;/em&gt;)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# pip install -E ${SITE} -e svn+http://code.djangoproject.com/svn/django/trunk#egg=Django&lt;br /&gt;# pip install -E ${SITE} -e svn+http://code.djangoproject.com/svn/django/tags/releases/1.1.1/#egg=Django&lt;br /&gt; pip install -E ${SITE} -e svn+http://code.djangoproject.com/svn/django/tags/releases/1.1/#egg=Django&lt;br /&gt; pip install -E ${SITE} yolk&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;*Notes:  1.1.1 failed 2 tests and trunk failed more.. 1.1 passes all tests&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Activate your virtualenv&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; source ${SITE}/bin/activate&lt;/pre&gt;&lt;br /&gt;Create your www tree (this is where we house our app).  Use the google-app-engine-django helper stuff.  It’s well worth it!!&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; cd ${SITE}&lt;br /&gt; svn export http://google-app-engine-django.googlecode.com/svn/trunk/ www&lt;/pre&gt;&lt;br /&gt;Link in your django tree&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; cd www&lt;br /&gt; ln -s ../src/django/django&lt;/pre&gt;&lt;br /&gt;At this point you should be able to deactivate yourself and simply verify everything works.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; deactivate&lt;br /&gt; python2.5 manage.py test&lt;br /&gt;  #Ran 61 tests in 8.058s&lt;br /&gt; python2.5 manage.py runserver&lt;/pre&gt;&lt;br /&gt;Now open up a web browser to &lt;a href="http://127.0.0.1:8000/"&gt;http://127.0.0.1:8000/&lt;/a&gt; and you should get the famous “It works!!”.  At this point you should also configure the Google App Engine Launcher to point to your site directory and “www” will be your application.  &lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Build up a quick index and push it to the web.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is not for the faint.  I am going to quickly build up a basic django index page.  I want to show it works and we con complete the process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Shuffle around my tree (personal preference)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Like I indicated above I like to have my apps all under a single apps tree (keep it clean).  I also like to put settings.py under a settings tree - this allows me to mess with the __init__.py&lt;br /&gt;&lt;br /&gt;So with that hang on..&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; cd ${SITE}/www&lt;br /&gt; mkdir settings&lt;br /&gt; mv settings.py settings/__init__.py&lt;br /&gt; rm settings.pyc&lt;br /&gt;&lt;br /&gt; mkdir apps&lt;br /&gt; python2.5 manage.py startapp core&lt;br /&gt; mv core apps/&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Build your simple app&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Edit your ${SITE}/www/urls.py&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt; urlpatterns = patterns('',&lt;br /&gt;      url(r'^', include('apps.core.urls')), &lt;br /&gt; )&lt;/pre&gt;&lt;br /&gt;Add in your app to the ${SITE}/settings/__init__.py&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt; INSTALLED_APPS = (&lt;br /&gt;       'appengine_django',&lt;br /&gt;       'apps.core',&lt;br /&gt; )&lt;/pre&gt;&lt;br /&gt;Create your apps/core/views.py&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt; from django.http import HttpResponse &lt;br /&gt; def index(request):&lt;br /&gt;    return HttpResponse('Hello World -- Django rocks!!')&lt;/pre&gt;&lt;br /&gt;Get your apps/core/urls.py ready to accept the index view&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt; from django.conf.urls.defaults import *&lt;br /&gt; import views&lt;br /&gt; urlpatterns = patterns('',&lt;br /&gt;    url(r'^$', views.index),&lt;br /&gt; )&lt;/pre&gt;&lt;br /&gt;Verify it works.. Voila - pretty simple eh??&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Next up publish it..&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Guido's screencast - it was awesome..&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;a href="http://sites.google.com/site/io/rapid-development-with-python-django-and-google-app-engine"&gt;Rapid Development with Python, Django, and Google App Engine (2008 Google I/O Session Videos and Slides)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5816318576258388341?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5816318576258388341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5816318576258388341' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5816318576258388341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5816318576258388341'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2010/02/development-strategy-for-google-app.html' title='Development strategy for google-app-engine'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3901210422642519069</id><published>2010-01-04T11:05:00.000-08:00</published><updated>2010-01-04T11:28:02.767-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Building Python on 2.6.4 Snow Leopard</title><content type='html'>&lt;strong&gt;Goal:&lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;•&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Fully functioning Python with MySQL, Ldap, P4Python, installed&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;•&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Use pip&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Limitations:&lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;•&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;None so far — P4Python was not x86_64/i386 compatible but that now is fixed..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Notes:&lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;•&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Stock python on Snow Leopard ships as a 32-bit only application (file /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5)&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Building readline-6.0&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Normally you won’t have to set these variables up but since we want a 32 bit with a 64 bit readline we need to ensure these are set up..&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;export MACOSX_DEPLOYMENT_TARGET=10.6&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;export CFLAGS=“-arch i386 -arch x86_64”&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;export LDFLAGS=“-Wall -arch i386 -arch x86_64”&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;./configure&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;make&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sudo make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Building Python 2.6.4&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you use a custom ~/.pydistuti“s move it out of the way!  This will build an intel only version of Python.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 --with-universal-archs=intel --enable-universalsdk=/&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;make&lt;br /&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sudo make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After the make you should see errors like this..&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Failed to find the necessary bits to build these modules:&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;_bsddb             dl                 gdbm            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;imageop            linuxaudiodev      ossaudiodev     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;spwd               sunaudiodev                        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;To find the necessary bits, look in setup.py in detect_modules() for the module’s name.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;MySQL (Not Python)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Get the latest MySQL 64-bit (of course).  Pull the file from &lt;a href="http://MySQL.com"&gt;MySQL.com&lt;/a&gt;&lt;br /&gt;Get the Snow Leopard Preference Panel for 64-bit from &lt;a href="http://www.swoon.net/site/software.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Getting rolling with pip.&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;If y’u use a custom ~/.pydistutils put it back..&lt;br /&gt;&lt;br /&gt;Get setuptools (0.6c11) from pypi.&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py build&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py test&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Get pip from pypi&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py build&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Start getting your apps..&lt;br /&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;pip install --install-option=“--prefix=/Users/sklass/perforce/dev/tools/python/Mac”  nose&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Now build up MySQLdb&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;pre class="brush: bash"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py build&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py test&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;python2.6 setup.py install&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3901210422642519069?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3901210422642519069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3901210422642519069' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3901210422642519069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3901210422642519069'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2010/01/building-python-on-264-snow-leopard.html' title='Building Python on 2.6.4 Snow Leopard'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-409494359021333204</id><published>2010-01-02T05:07:00.000-08:00</published><updated>2010-01-02T05:23:25.661-08:00</updated><title type='text'>Setting up MacJournal for Code Blocks</title><content type='html'>So I wanted to get some good syntax highlighting..&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;1.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Install &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter&lt;/a&gt; on Blog&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;2.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Configure SyntaxHighlighter in MacJournal Blog by turning off Escape &amp;amp;lt; and &amp;amp;gt under the edit server list!&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;3.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Create a &lt;a href="http://www.smileonmymac.com/TextExpander/"&gt;http://www.smileonmymac.com/TextExpander/&lt;/a&gt; snippet (pyp) to wrap plain text in &amp;amp;lt;pre class=“brush: python” &amp;amp;gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;4.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Test it out&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;This is a basic python code block&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;&lt;br /&gt;        urldata = urllib.urlopen(settings.PEOPLE_NOTES_BASE_URL).read()&lt;br /&gt;        nsoup = BeautifulSoup(urldata)&lt;br /&gt;        total = 0&lt;br /&gt;        links = nsoup.fetch(‘a’, {‘href’:re.compile(‘\/hr\/.*OpenDocument’)})&lt;br /&gt;        for element in links:&lt;br /&gt;            if maxNum and total &gt;= maxNum: break&lt;br /&gt;            queue.put({u”name”: u”%s” % element.find(text = True),&lt;br /&gt;                       u’url’: “https://intranet.mycompany.com%s” % element[‘href’]})&lt;br /&gt;            total += 1&lt;br /&gt;&lt;br /&gt;        for index in range(50):&lt;br /&gt;            if maxNum and index &gt;= maxNum: break&lt;br /&gt;            thrd = self.ParseUserPage(out_queue, final)&lt;br /&gt;            thrd.setDaemon(True)&lt;br /&gt;            thrd.start()&lt;br /&gt;        #wait on the queue until everything has been processed&lt;br /&gt;        queue.join()&lt;br /&gt;        out_queue.join()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;And the important thing is grace..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Continuing this should be fine..&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;Saturday, January 02, 2010 6:13 AM&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-409494359021333204?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/409494359021333204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=409494359021333204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/409494359021333204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/409494359021333204'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2010/01/setting-up-macjournal-for-code-blocks.html' title='Setting up MacJournal for Code Blocks'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-2685680433994194236</id><published>2010-01-01T04:47:00.000-08:00</published><updated>2010-01-01T14:41:55.553-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pip'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='easy_install'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='editorial'/><title type='text'>Thoughts on pip - whats the big deal?</title><content type='html'>I have been a python user since python &lt;a href="http://www.python.org/download/releases/2.0/"&gt;2.0&lt;/a&gt;.  Since then I’ve stayed fairly current with the python and the newer methodologies (currently running &lt;a href="http://www.python.org/download/releases/2.6.4/"&gt;2.6.4&lt;/a&gt;).  I am always striving to make myself a more proficient developer seeking out more efficient ways of doing things and not afraid to give them a try.&lt;br /&gt;        I currently am responsible for a cross platform python environment for our engineering teams (&amp;gt;150 ppl) which has spanned various unix’s, macs and the occasional windows machine.  I’ve been doing this for the past several years and have managed python transitions from 2.2 - 2.6 with relative ease. &lt;br /&gt;        The methodology we employ to maintain this has been around since I started using python and I would expect will remain so in the future.  We extend the default python path &lt;a href="http://docs.python.org/install/index.html#modifying-python-s-search-path"&gt;using a pth file methodology&lt;/a&gt;.  The pth file is coupled to an environment variable which gives developers the ability to shift an environment variable and quickly be testing their code in their respective sandbox.  This coupled with &lt;a href="http://www.perforce.com/"&gt;Perforce&lt;/a&gt; gives us a nice branched virtualenv without using &lt;a href="http://pypi.python.org/pypi/virtualenv"&gt;virtualenv&lt;/a&gt;.  We use this methodology for both external modules ( &lt;a href="http://www.djangoproject.com/"&gt;django&lt;/a&gt;/&lt;a href="http://www.crummy.com/software/BeautifulSoup/"&gt;beautifulSoup&lt;/a&gt;/&lt;a href="http://www.lag.net/paramiko/"&gt;paramiko&lt;/a&gt; etc) and internally developed modules.  Currently our single pth file looks like this.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;import os, site; tech = os.environ.get("TECHROOT", "/"); tech = tech if os.path.isdir(os.path.join(tech, "tools/python/Mac/lib/python2.6/site-packages")) else "/"; site.addsitedir(os.path.join(tech, "tools/python/Mac/lib/python2.6/site-packages"))&lt;br /&gt;import os, site; tech = os.environ.get("TECHROOT", ""); tech = tech if os.path.isdir(os.path.join(tech, "tools/python/modules")) else "/";site.addsitedir(os.path.join(tech, "tools/python/modules"))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Admittedly this  may be a bit overkill.  However limitations on pth files (paths must be on a single line) force the need.  FWIW all this file does is get the environment variable TECHROOT if defined or establish a default path.  The first line is used for external modules and the second line is for internally developed modules.  Module installation is a then breeze when using a ~/.pydistutils.cfg file which looks like this.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;[install]&lt;br /&gt;install_lib = $TECHROOT/tools/python/Mac/lib/python$py_version_short/site-packages&lt;br /&gt;install_scripts = $TECHROOT/tools/python/Mac/bin&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Again this is all tied to our revision control system (perforce) which allows any developer to easily add external modules or build modules for other to use.  By shifting around the environment variable we can thoroughly test our code prior to release.  Simple enough.&lt;br /&gt;&lt;br /&gt;        Over the past couple years I have really come to enjoy &lt;a href="http://pypi.python.org/pypi/setuptools"&gt;easy_install&lt;/a&gt;.  It certainly worked for everything I needed.  It has some limitations which I didn’t like but for the most part it worked. Some of the notable limitations I usually do are as follows.&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;Dependency Tracking must be thought out and tested ahead of time.&lt;/li&gt;&lt;li&gt;easy_install should be named easy_install&amp;lt;ver&amp;gt; (easy_install2.6)&lt;/li&gt;&lt;li&gt;Any bin files should have its header nailed down (/usr/bin/env python2.6) or be named file&amp;lt;ver&amp;gt; (django-admin2.5.py)&lt;/li&gt;&lt;li&gt;Un-Installing is a manual process - but simple cause it’s a single file and tweak of on file.&lt;/li&gt;&lt;/ul&gt;Barring the above limitations, I like easy_install.  I like the packaging of egg archives; it’s a simple 1 file.  True this forced me to be very conscience of the platforms and make sure that everyone was on the same page with respect to upgrades but that’s simple planning.  Not every package builds with easy_install but then again neither does pip.&lt;br /&gt;&lt;br /&gt;        So I decided that I would use my shift to Snow Leopard and 2.6.4 as the basepoint for using &lt;a href="http://pypi.python.org/pypi/pip"&gt;pip&lt;/a&gt;.  After reading comments like &lt;a href="http://www.b-list.org/weblog/2008/dec/14/packaging/"&gt;this&lt;/a&gt; I figured surely I must be missing something.  After playing with pip now for a week I can honestly say - Nope I don’t think so. &lt;br /&gt;       &lt;br /&gt;        To be fair pip is still at release 0.61.  It appears pip is really geared towards those which use a virtualenv environment.  As detailed above we don’t need virtualenv we effectively have an automated one with perforce, and an environment variable.  That being said I found several things I didn’t like with pip and other things which are broken altogether.&lt;br /&gt;&lt;ul style="list-style-type: disc"&gt;&lt;li&gt;Dependency Tracking still must be thought out and tested ahead of time.&lt;/li&gt;&lt;li&gt;Un-Installing packages doesn’t always work&lt;/li&gt;&lt;li&gt;Pip Doesn’t understand the test constructs if provided.&lt;/li&gt;&lt;li&gt;Pip Doesn’t always respect ~/pydistutils.cfg install_scripts directive.  Most of the time I just needed to  &lt;span style="color: rgb(128,0,128);"&gt;pip install --install-option="--prefix=$TECHROOT/tools/python/Mac”&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;So what’s the big deal?  Is it me or am I missing something larger.  I thought pip would track dependancies allowing you to have say two versions of a module installed simultaneously.  But no.  It’s a nice and clean installer (I’ll give you that).  The freeze is pretty slick if you are distributing your own system without a real SCM system in place.  Overall I’m not overly impressed and I feel pip is overrated or easy_install misleadingly accused.  Maybe it’s me?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-2685680433994194236?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/2685680433994194236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=2685680433994194236' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2685680433994194236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2685680433994194236'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2010/01/thoughts-on-pip-whats-big-deal.html' title='Thoughts on pip - whats the big deal?'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-2667964532399890362</id><published>2009-12-13T19:29:00.000-08:00</published><updated>2009-12-13T19:49:10.175-08:00</updated><title type='text'>Eclipse</title><content type='html'>So I am playing with &lt;a href="http://pydev.org"&gt;pydev&lt;/a&gt; and so far I think it’s pretty cool.  Here is a sample with a picture..&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_KUap9DBPt6U/SyW1tDC7WhI/AAAAAAAACSk/bum4vX5ldG0/Fullscreen.CJ2mQCrnmlig.jpg" alt="Fullscreen.CJ2mQCrnmlig.jpg" width="426" height="266" /&gt;​&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the second post.  So far it’s pretty amazing.  I love the new stuff in 1.5!!&lt;br /&gt;&lt;br /&gt;And then I edited it some more..  Pictures..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-2667964532399890362?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/2667964532399890362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=2667964532399890362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2667964532399890362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2667964532399890362'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2009/12/eclipse.html' title='Eclipse'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_KUap9DBPt6U/SyW1tDC7WhI/AAAAAAAACSk/bum4vX5ldG0/s72-c/Fullscreen.CJ2mQCrnmlig.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-871705645885433867</id><published>2009-12-13T19:17:00.000-08:00</published><updated>2010-01-01T14:40:44.472-08:00</updated><title type='text'></title><content type='html'>This is just a sample test from MacJournal.&lt;br /&gt;&lt;br /&gt;I was sitting here wondering what to do then I thought “Hey why not code”&lt;br /&gt;&lt;br /&gt;OK here goes&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: python"&gt;from Tkinter import *&lt;br /&gt;&lt;br /&gt;root = Tk()&lt;br /&gt;w = Label(root, text="Hello, world!")&lt;br /&gt;w.pack()&lt;br /&gt;root.mainloop()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So what about daily templates..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-871705645885433867?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/871705645885433867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=871705645885433867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/871705645885433867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/871705645885433867'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2009/12/this-is-just-sample-test-from.html' title=''/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5509159559346260606</id><published>2009-01-14T07:08:00.001-08:00</published><updated>2009-01-14T07:08:33.229-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Economy'/><title type='text'>Surpise! Nortel files for bankruptcy</title><content type='html'>&lt;p&gt;Coming from the not-so-surpised category.. I don't care for companies that use proprietary systems witch antiquated methodologies. Unfortunately at both my current and my former company we use(d) Nortel hardware. It doesn't play well with everything - and frankly sucks. Am I sad this one's going south - NOPE!&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://www.techmeme.com/090114/p18#a090114p18"&gt;&lt;br /&gt;  &lt;p&gt;&lt;span style="font-size:1.3em;"&gt;&lt;b&gt;&lt;a href="http://business.theglobeandmail.com/servlet/story/RTGAM.20090114.wnortel14/BNStory/Business/home"&gt;Nortel to file for bankruptcy protection&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; — Facing $107-million interest on debts, former telecom giant will likely be broken up and sold to foreign rivals — Former technology titan Nortel Networks Corp. is expected to file for bankruptcy protection as early as today, sources say …&lt;/p&gt;[From &lt;a href="http://www.techmeme.com/090114/p18#a090114p18"&gt;&lt;cite&gt;Nortel to file for bankruptcy protection (Globe and Mail)&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5509159559346260606?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5509159559346260606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5509159559346260606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5509159559346260606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5509159559346260606'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2009/01/surpise-nortel-files-for-bankruptcy.html' title='Surpise! Nortel files for bankruptcy'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-7123592744432805001</id><published>2008-12-30T11:05:00.001-08:00</published><updated>2008-12-30T11:14:27.756-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Aperture Workflow for Scanned Pics</title><content type='html'>&lt;p style="font: 14px Futura;"&gt;This will go over my workflow for Scanned Images.&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;em&gt;&lt;span style="  font-style: normal;font-family:Helvetica;font-size:12px;"&gt;&lt;img src="http://farm4.static.flickr.com/3132/3151508204_8617cb2c79.jpg" width="480" height="313" alt="Valletta Malta - 1995" /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;em&gt;This is my aperture workflow for scanned pics.&lt;/em&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;First things first - we need to get the images scanned in. Fortunately the folks over at&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://scancafe.com/"&gt;Scancafe.com&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;figured this out pretty easily. I simply packaged up my photos and negatives and shipped them off. Now a couple words of wisdom on this - as I have several thousand that I have now started working through. First - Organization is the key. Using baggies bag and tag the relevant “projects” - Make sure you Identify both the negatives and the pics. In general negatives definitely come out better. I opted for both - often times the negatives come out better but sometimes the pic is all you have. Once I have them in digital form then I do the following:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;1.) Get the negatives and pictures back in sync. This is a huge time consuming process but pays off because then the timeline can be preserved. I named the pic xyz_.jpg and the negative xyz_s.jpg. The tool a&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.publicspace.net/ABetterFinderRename/"&gt;A Better Finder Rename&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;comes in real handy here.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;2.) Figure out when / where the pic was taken. This is another very time consuming piece.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;3.) Using &lt;a href="http://www.publicspace.net/ABetterFinderAttributes/index.html"&gt;A Better Finder Attributes &lt;/a&gt;- “Change the date the original photo was taken” to the correct date.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;4.) Import into&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.apple.com/aperture/"&gt;Aperture&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;into a new project.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;5.) If you are bringing both the negatives and the photos in use stacks to stack them. Bring the negative to the first one in line..&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;6.) Grade them. I use &lt;a href="http://speirs.org/2008/01/06/my-photo-editing-workflow/"&gt;this&lt;/a&gt; as my reference thanks &lt;a href="http://markjaquith.com/"&gt;Mark Jaquith&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;  &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; line-height: 18px; font: 13px 'Lucida Grande';"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;-1 Unusable&lt;br /&gt;★ Keep&lt;br /&gt;★★ Show&lt;br /&gt;★★★ Share&lt;br /&gt;★★★★ Boast&lt;br /&gt;★★★★★ Flaunt&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; line-height: 18px; font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;7.) Keyword them.  Make sure you identify the scans (35mm/35mm negative)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; line-height: 18px; font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;8.) Geotag them using&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.ubermind.com/products/maperture.php"&gt;mapture&lt;/a&gt;&lt;a href="http://www.ubermind.com/products/maperture.php"&gt;.&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura;"&gt;&lt;span style="letter-spacing: 0.0px"&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;9.) Push them to picassa using&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.ubermind.com/products/aperturetopicasawebalbums.php"&gt;Aperture to Picassa&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;span&gt;plugin.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font: 14px Futura; min-height: 19px;"&gt;10.) Push them to &lt;a href="http://www.smugmug.com/"&gt;smugmug&lt;/a&gt; for archiving using &lt;a href="http://davidholmes.org/aperture-to-smugmug.html"&gt;ApertureToSmugMug&lt;/a&gt;.&lt;/p&gt;&lt;p style="font: 14px Futura; min-height: 19px;"&gt;That's it!! Simple eh...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-7123592744432805001?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/7123592744432805001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=7123592744432805001' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7123592744432805001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7123592744432805001'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/12/aperture-workflow-for-scanned-pics.html' title='Aperture Workflow for Scanned Pics'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3132/3151508204_8617cb2c79_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-4995442305170777073</id><published>2008-10-02T07:33:00.000-07:00</published><updated>2008-10-02T07:34:08.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Python 2.6 final released</title><content type='html'>&lt;p&gt;Whoot!&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://www.python.org/news/index.html#Wed1Oct20082112-0400"&gt;&lt;br /&gt;  &lt;!--utf-8--&gt;&lt;!--0.4.1--&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;a class="reference" href="http://www.python.org/download/releases/2.6/"&gt;Python 2.6 final&lt;/a&gt; is now available.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-4995442305170777073?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/4995442305170777073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=4995442305170777073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4995442305170777073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4995442305170777073'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/10/python-26-final-released.html' title='Python 2.6 final released'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5840121929782989777</id><published>2008-08-15T16:10:00.001-07:00</published><updated>2008-08-15T16:10:45.902-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>12 Unit Testing Tips for Software Engineers</title><content type='html'>&lt;blockquote cite="http://feedproxy.google.com/~r/readwriteweb/~3/iAZMDf28wVU/12_unit_testing_tips_for_software_engineers.php"&gt;&lt;br /&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/Unit-Testing-Java-Engineering-Programming/dp/1558608680?tag=httpwwwreadwr-20"&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p1_0809.JPG" /&gt;&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Unit_testing"&gt;Unit Testing&lt;/a&gt; is one of the pillars of &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile Software Development&lt;/a&gt;. First introduced by &lt;a href="http://en.wikipedia.org/wiki/Kent_Beck"&gt;Kent Beck&lt;/a&gt;, unit testing has found its way into the hearts and systems of many organizations. Unit tests help engineers reduce the number of bugs, hours spent on debugging, and contribute to healthier, more stable software.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;In this post we look at a dozen unit testing tips that software engineers can apply, regardless of their programming language or environment.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;1. Unit Test to Manage Your Risk&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;font style="float: right; margin-left: 10px;"&gt;&lt;iframe src="http://digg.com/tools/diggthis.php?u=http%3A//digg.com/software/12_Unit_Testing_Tips_for_Software_Engineers&amp;amp;k=%23ffffff&amp;amp;s=normal" height="80" width="52" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/font&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p2_0809.JPG" align="left" /&gt;A newbie might ask &lt;em&gt;Why should I write tests?&lt;/em&gt; Indeed, aren't tests boring stuff that software engineers want to &lt;em&gt;outsource&lt;/em&gt; to those QA guys? That's a mentality that no longer has a place in modern software engineering. The goal of software teams is to produce software of the highest quality. Consumers and business users were rightly intolerant of buggy software of the 80s and 90s. But with the abundance of libraries, web services and integrated development environments that support refactoring and unit testing, there's now no excuse for software with bugs.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;The idea behind unit testing is to create a set of tests for each software component. Unit tests facilitate &lt;strong&gt;continuous software testing&lt;/strong&gt;; unlike manual tests, it's cheap to perform them repeatedly.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;As your system expands, so does the body of unit tests. Each test is an insurance that the system works. Having a bug in the code means carrying a risk. Utilising a set of unit tests, engineers can dramatically reduce number of bugs and the risk with untested code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;2. Write a Test Case Per Major Component&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p3_0809.jpg" align="right" /&gt;When you start unit testing, always ask &lt;em&gt;What Tests Should I Write&lt;/em&gt;?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;The initial impulse is to write a bunch of functional tests; i.e., tests that probe different functions of the system. This is not correct. The right thing is to create a test case (a set of tests) for each major component.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;The focus of the test is one component at a time. Within each component, look for an interface - a set of publicly exposed behaviour that component offers. You then should write at least one test per public method.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;3. Create Abstract Test Case and Test Utilities&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p4_0809.JPG" align="left" /&gt;As with any code, there will be common things all your tests need to do. Start with finding a unit testing for your language. For example, in Java, engineers use &lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; - a simple yet powerful framework for writing tests in Java. The framework comes with TestCase class, the base class for all tests. Add convenient methods and utilities applicable to your environment. This way, all your tests cases can share this common infrastructure.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;4. Write Smart Tests&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p5_0809.JPG" align="right" /&gt;Testing is time-consuming, so ensure your tests are effective. Good tests probe the core behaviour of each component, but do it with the least code possible. For example, there is very little reason in writing tests for Java Bean setter and getter methods, for these will be tested anyway.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Instead, write a test that focuses on the behaviour of the system. You don't need to be comprehensive; create the tests that come to mind now, then be ready to come back to add more.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;5. Set up Clean Environment for Each Test&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p6_0809.JPG" align="left" /&gt;Software engineers are always concerned with efficiency, so when they hear that each test needs to be set up separately they worry about performance. Yet setting up each test correctly and from scratch is important. The last thing you want is for the test to fail because it used some old piece of data from another test. Ensure each test is set up properly and don't worry about efficiency.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;In cases when you have a common environment for all tests - which doesn't change as tests run - you can add a static set up block to your base test class.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;6. Use Mock Objects To Test Effectively&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p7_0809.jpg" align="right" /&gt;Setting up tests is not that simple; and at first glance sometimes seems impossible. For example, if using Amazon Web Services in your code, how can you simulate it in the test without impacting the real system?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;There are a couple of ways. You can create fake data and use that in tests. In the system that has users, a special set of accounts can be utilised exclusively for testing.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Running tests against a production system is risky: what if something goes wrong and you delete actual user data? An alternative is fake data, called stubs or mock objects.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;A mock object implements a particular interface, but returns predetermined results. For example, you can create a mock object for Amazon S3 which always reads files from your local disk. Mock objects are helpful when testing complex systems with lots of components. In Java, several frameworks help create mock objects, most notably &lt;a href="http://www.jmock.org/"&gt;JMock&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;7. Refactor Tests When You Refactor the Code&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p8_0809.png" align="left" /&gt;Testing only pays if you really invest in it. Not only do you need to write tests, you also need to ensure they're up to date. When adding a new method to a component, you need to add one or more corresponding tests. Just like you should clean out unused code, also remove tests that are no longer applicable.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Unit tests are particularly helpful when doing large refactorings. &lt;a href="http://www.refactoring.com/"&gt;Refactoring&lt;/a&gt; focuses on continuous sculpting of the code to help it stay correct. After you move code around and fix the tests, rerunning all the related tests ensures you didn't break anything while changing the system.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;8. Write Tests Before Fixing a Bug&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p9_0809.png" align="right" /&gt;Unit tests are effective weapons in the fight against bugs. When you uncover a problem in your code, write a test that exposes this problem before fixing the code. This way, if the problem reappears, it will be caught with the test.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;It is important to do this since you can't always write comprehensive tests right away. When you add a test for a bug, you're filling in the gap in your original tests in a disciplined way.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;9. Use Unit Tests to Ensure Performance&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p10_0809.png" align="left" /&gt;In addition to guarding correctness of the code, unit tests can help ensure the performance of your code doesn't degrade over time. In many systems slowness creeps in as the system grows.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;To write performance tests, you need to implement start and stop functions in your base test class. When appropriate you can use a time-particular method or code and assert that the elapsed time is within the limits of the desired performance.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;10. Create Tests for Concurrent Code&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p11_0809.jpg" align="right" /&gt;Concurrent code is notoriously tricky and typically a source of many bugs. This is why it's important to unit test concurrent code. The way to do this is by using a system of sleeps and locks. You can write in sleep calls in your tests if you need to wait for a particular system state. While this is not a 100% correct solution, in many cases it's sufficient. To simulate concurrency in a more sophisticated scenario, you need to pass locks around to the objects you're testing. In doing so, you will be able to simulate concurrent system, but sequentially.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;11. Run Tests Continuously&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p12_0809.png" align="left" /&gt; The whole point of tests is to run them a lot. Particularly in larger teams where dozens of developers are working on a common code base, continuous unit testing is important. You can set up tests to run every few hours or you can run them on each check-in of the code or just once a day (typically overnight). Decide which method is the most appropriate for your project and make the tests run automatically and continuously.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;h2&gt;12. Have Fun Testing!&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;img src="http://www.readwriteweb.com/images/unit_testing_tips_p13_0809.png" align="right" /&gt;Probably the most important tip is to have fun. When I first encountered unit testing, I was sceptical and thought it was just extra work. But I gave it a chance, because smart people who I trusted told me that it's very useful.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Unit testing puts your brain into a state which is very different from coding state. It is challenging to think about what is a simple and correct set of tests for this given component.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Once you start writing tests, you'd wonder how you ever got by without them. To make tests even more fun, you can incorporate &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;pair programming&lt;/a&gt;. Whether you get together with fellow engineers to write tests or write tests for each other's code, fun is guaranteed. At the end of the day, you will be comfortable knowing your system really works because your tests pass.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;i&gt;And now please join the conversation! Share unit testing lessons from your projects with all of us.&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;img src="http://feedproxy.google.com/~r/readwriteweb/~4/iAZMDf28wVU" height="1" width="1" /&gt; [From &lt;a href="http://feedproxy.google.com/~r/readwriteweb/~3/iAZMDf28wVU/12_unit_testing_tips_for_software_engineers.php"&gt;&lt;cite&gt;12 Unit Testing Tips for Software Engineers&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5840121929782989777?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5840121929782989777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5840121929782989777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5840121929782989777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5840121929782989777'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/08/12-unit-testing-tips-for-software.html' title='12 Unit Testing Tips for Software Engineers'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5954291188873611833</id><published>2008-07-21T08:03:00.001-07:00</published><updated>2008-07-21T14:12:59.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Analog Rails - Thoughts from a Cad Manager</title><content type='html'>&lt;p style="font: 12.0px Helvetica"&gt;&lt;img src="http://analograils.com/images/logo.png" alt="Analog Rails" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Last week myself and a senior member of my staff were invited to a hands-on look of &lt;a href="http://www.analograils.com/"&gt;Analog Rails&lt;/a&gt;. Analog Rails is company whose focus is to "create the best analog and RF environment for the IC circuit designer". The system is built upon &lt;a href="http://www.si2.org/?page=621"&gt;Open Access&lt;/a&gt; and gives an analog design engineer the complete ability to do both schematic capture, simulation and layout. It nicely automates the more tedious aspects of analog layout while giving the design engineer the complete flexibilty. For example the process of both matching (&lt;a href="http://www.ece.utah.edu/~harrison/ece5720/Common_Centroid.pdf"&gt;common-centroid&lt;/a&gt; anyone) and wire-widening (based on via size) is done in very automated push button method.&lt;/p&gt;&lt;object width="425" height="344"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;param name="movie" value="http://www.youtube.com/v/o1iN_wWOSB0&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;embed src="http://www.youtube.com/v/o1iN_wWOSB0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the last several months Analog Rails have really stepped up the development by starting to integrate with outside tools. For example they now integrated in &lt;a href="http://www.veritools.com/"&gt;Veritools&lt;/a&gt; into the design framework. This is a big step because it implies that they designed a flexible subsystem which is critical - there is no single solution in IC Design. I would like to see &lt;a href="http://www.cadence.com/products/cic/pages/default.aspx"&gt;spectre&lt;/a&gt; ( -&lt;a href="http://edageek.com/2008/04/29/spectre-turbo-spice/"&gt;turbo&lt;/a&gt; of course ) and &lt;a href="http://www.mentor.com/products/ic_nanometer_design/bl_phy_design/calibre_drc/index.cfm"&gt;calibre&lt;/a&gt; integrated but it's not there yet.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Throughout the discussion / demo I began to understand the impact of this. Of course it's built on OA and will nicely integrate with Cadence and &lt;a href="http://www.springsoft.com/Message/news_more.aspx?id=250DB9A3C686EC7A"&gt;many&lt;/a&gt; &lt;a href="http://www.magma-da.com/products-solutions/customdesign/index.aspx"&gt;many&lt;/a&gt; others, but something more interesting is afoot. This tool represents a clear methodology shift.. ..&lt;em&gt;The demise of the block level analog layout engineer&lt;/em&gt;. Why? First as I said earlier, the layout automation piece is very intuitive and friendly. Plus the smaller technology geometries that analog design is pushing into (&amp;lt;90nm) is forcing simulation earlier (using Cadence) to account for device parasitics (&lt;a href="http://www.ieee-cicc.org/06-8-6.pdf"&gt;LOD&lt;/a&gt;). So the analog engineer is already doing a fair amount of the placement and letting the layout guy clean up the work. But this tool is correct by construction and so the layout is clean from the get-go. So involving a layout person to "clean it up" isn't necessary. There will still need to be layout for macro / chip level integration but block level layout could (will) be going the way of hand-LVS.&lt;/p&gt;&lt;p&gt;There are areas which need to be better defined. From a cad managers perspective - I look at flexibility and integration. The flexibility to align the tool to corporate goals and strategy, and the hooks necessary to integrate it into my existing flow, and (perhaps) migration to this tool.&lt;/p&gt;&lt;p&gt;The flexibility of the tool is fundamentally there but needs better definition. For example: If the company has it's own fab, and the strategy is to use its own fab, how will this tool which claims to not need a PDK get the design constraints from my foundry into their system? The converse is also true - I am a fabless company with a strategy to tape-out to the lowest cost foundry - how do I ensure that the constraints from &lt;a href="http://www.dongbuhitek.co.kr/semi/index.asp"&gt;Dongbu&lt;/a&gt; will work with my design. The point is while Analog Rails clearly has the framework so support this, they need to have a clear methodology for how to implement design constraints which the customer may use or opt to use the defaults from Analog Rails.&lt;/p&gt;&lt;p&gt;&lt;em&gt;[UPDATE]: I did receive a bunch of documentation on the methodology for creating these techfiles. It is pretty straight forward and not as difficult as I had imagined.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;From the integration side it was better defined but still lacks the clarity for migration. Because the tool can work on OA it should "just work". But how does this system work when an existing layout done in Virtuoso or Laker which doesn't or isn't correct by construction adapt itself? We spoke of the "dummy mode" but I think a bit more clarity on this would be helpful. I not sure this is show stopper - because it would depend on the use model. If you define your flow/methodology such that this is the sole block level tool for a project it could work. If you want to do a mix - well that would have to be tested.&lt;/p&gt;&lt;p&gt;Overall I was very impressed. The tool has certainly matured over the last year. It's flexible sub-system and the ability to tie into other tools gives me reason to want to look further at the tool. It will be a real test to see this tool integrate with the work horses of the IC Design tools, and how easy it is to define a methodology around the tool. Again this tool has some really cool technology under the hood and should make for a fun evaluation. My concern (as any cad manager has) is that our designers are going to eat this up and really want it. That's a good problem to have.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5954291188873611833?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5954291188873611833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5954291188873611833' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5954291188873611833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5954291188873611833'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/07/analog-rails-thoughts-from-cad-manager.html' title='Analog Rails - Thoughts from a Cad Manager'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5435521061423703733</id><published>2008-07-19T05:43:00.001-07:00</published><updated>2008-07-19T05:43:21.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>iPhone Platform: What We Can Learn From Tap Tap Revenge</title><content type='html'>&lt;p&gt;In reading this - it makes you consider what happens when having a marketing group becomes less important.... Get your fanatical customers to market your product for you and reward them by giving it to them for free.&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://feeds.feedburner.com/~r/AVc/~3/339739403/iphone-platform.html"&gt;&lt;br /&gt;  &lt;p&gt;&lt;a href="http://avc.blogs.com/.shared/image.html?/photos/uncategorized/2008/07/19/top_free_apps.jpg" onclick="window.open(this.href, '_blank', 'width=232,height=416,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img width="200" height="358" border="0" alt="Top_free_apps" title="Top_free_apps" src="http://avc.blogs.com/a_vc/images/2008/07/19/top_free_apps.jpg" style="margin: 0px 0px 5px 5px; float: right;" /&gt;&lt;/a&gt;...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;But I think there is something even more important to notice about Tap Tap's success. When &lt;a href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt; released his first marketing book, &lt;a href="http://www.amazon.com/Permission-Marketing-Turning-Strangers-Customers/dp/0684856360/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1216457591&amp;amp;sr=8-1"&gt;Permission Marketing&lt;/a&gt;, he gave away the first four chapters for free via pdf to over 150,000 people. It generated a lot of buzz about the book and was a big factor in the book's success when it eventually became available in hardback. So when he followed up with &lt;a href="http://www.amazon.com/UNLEASHING-IDEAVIRUS-Seth-Godin/dp/B0014JOL1U/ref=sr_1_11?ie=UTF8&amp;amp;s=books&amp;amp;qid=1216457715&amp;amp;sr=1-11"&gt;Unleashing The Ideavirus&lt;/a&gt;, he went one step further. He gave away &lt;a href="http://www.ideavirus.com/"&gt;the entire book for free&lt;/a&gt; in pdf (it still is available free). Seth says that over 2mm copies were given away. And yet when the book was published in hardback it went to #5 on Amazon. It was a demonstration of the very tactics Seth was evangelizing in the Ideavirus book. Seth asserted that by giving away your product early to your greatest fans who will do more work and put up with a less than optimal experience, you prime the pump for the mass market. That's because your early fans will spread the ideavirus and market the book for you.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;Tapulous did the same thing with Tap Tap Revenge. The game was first made available for the iPhone at the start of this year. But the only people who could play it were people with phones that were jailbroken. So it's audience was small, but fanatical. These were the early iPhone app adopters, the ones who would work harder and put up with a less than optimal experience. But now that everyone can play Tap Tap, the early adopters are telling everyone else how great it is.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;[From &lt;a href="http://feeds.feedburner.com/~r/AVc/~3/339739403/iphone-platform.html"&gt;&lt;cite&gt;iPhone Platform: What We Can Learn From Tap Tap Revenge&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5435521061423703733?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5435521061423703733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5435521061423703733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5435521061423703733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5435521061423703733'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/07/iphone-platform-what-we-can-learn-from.html' title='iPhone Platform: What We Can Learn From Tap Tap Revenge'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-6804503536505671072</id><published>2008-07-01T07:21:00.001-07:00</published><updated>2008-07-01T07:24:30.365-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Verizon CEO grasping at straws .. we will not become just a network pipe!</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://www.ft.com/cms/s/0/607f36b0-43df-11dd-842e-0000779fd2ac.html?nclick_check=1"&gt;&lt;img vspace="4" hspace="4" border="1" alt="" src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/07/7-1-08-ivan-seidenberg.jpg" width="325" height="242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Apparently &lt;a href="http://www.engadget.com/2005/04/17/verizon-ceo-thinks-its-unreasonable-to-expect-your-cellphone/"&gt;Ivan Seidenberg&lt;/a&gt; just doesn't get it. My suggestion: Focus on one thing and do it really well. Apple develops very end-point good hardware/software. Verizon (and all mobile operators) should focus on a stable "all access" network. Having a company which primary focus ought to be "connectivity - anywhere, anytime" (Hey I like that..) focus part on their attention on the actual end-point device is silly.&lt;/p&gt;&lt;p&gt;What's even more bothersome is the comments he makes regarding Steve Jobs.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;As handsets become banking tools and games controllers, he argues, mobile operators can up-end other companies' business models. "It's very cool. And Steve Jobs eventually will get old . . . I like our chances."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Yeah good luck with that..&lt;/p&gt;&lt;p&gt;Read the original article &lt;a href="http://www.ft.com/cms/s/0/607f36b0-43df-11dd-842e-0000779fd2ac.html?nclick_check=1"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-6804503536505671072?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/6804503536505671072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=6804503536505671072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/6804503536505671072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/6804503536505671072'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/07/verizon-ceo-grasping-at-straws.html' title='Verizon CEO grasping at straws .. we will not become just a network pipe!'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-2192484565363208457</id><published>2008-06-30T07:48:00.001-07:00</published><updated>2008-07-01T07:47:43.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><title type='text'>Progressive MyRate drive-monitoring device goes national - Confession</title><content type='html'>&lt;p&gt;Confession.&lt;/p&gt;&lt;p&gt;I speed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;There I've said it. I don't know why I speed, I understand the illogic of speeding in that I'm not saving much time. I understand the consequences of speeding that being tickets and potential road rage from someone who doesn't share my view. Further I get I'm wasting gas. I understand all of that. But I still speed. I can't help it - it's wired into me. But if I'm now going to be monitored... Um no thanks.&lt;/p&gt;&lt;p&gt;All I can say is - Here's $10 for the guy that cracks this.. Good luck and godSPEED ;)&lt;/p&gt;&lt;blockquote cite="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/322002945/"&gt;&lt;div align="center"&gt;    &lt;a href="http://newsroom.progressive.com/2008/June/myrate-launch.aspx"&gt;&lt;img vspace="4" hspace="4" border="1" alt="" src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/06/6-27-08-myrate.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;blockquote cite="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/322002945/"&gt;Progressive insurance has been testing out the MyRate driving monitoring system for a few years now (it used to be called TripSense), but it's finally taking the system national, bringing pay-as-you-drive insurance into the mainstream. The little blue box plugs into your car's ODB II diagnostic port (all cars made after 1996 have one), and studiously records your driving habits, wirelessly sending the data back to Progressive HQ (it's not clear exactly how). Every six months, Progressive will crunch the numbers and issue a new rate for you based on how you drive -- savings of up to 40 percent are possible. That's pretty tempting, depending on your current rates and driving habits, but we're not so sure we're willing to share that much data for an unspecified discount -- especially since we're confident the MyRate box will get cracked almost immediately.&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt; &lt;a href="http://newsroom.progressive.com/2008/June/myrate-launch.aspx"&gt;Read&lt;/a&gt; - MyRate press release&lt;br /&gt;&lt;br /&gt; &lt;a href="http://auto.progressive.com/progressive-car-insurance/myrate-device.aspx"&gt;Read&lt;/a&gt; - MyRate video&lt;br /&gt;&lt;br /&gt; &lt;a href="http://auto.progressive.com/progressive-car-insurance/how-myrate-program-works.aspx"&gt;Read&lt;/a&gt; - How MyRate works&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-2192484565363208457?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/2192484565363208457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=2192484565363208457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2192484565363208457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2192484565363208457'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/progressive-myrate-drive-monitoring.html' title='Progressive MyRate drive-monitoring device goes national - Confession'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3437427227058565865</id><published>2008-06-30T07:32:00.001-07:00</published><updated>2008-07-01T07:48:18.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Thinking Like a Cocoa Programmer</title><content type='html'>&lt;p&gt;Reading this should be the mantra of ANY software engineer.&lt;/p&gt;&lt;blockquote cite="http://theocacao.com/document.page/580"&gt;&lt;p&gt;&lt;a href="http://theocacao.com/document.page/580"&gt;Theocacao&lt;/a&gt;: “First and most importantly, the Cocoa programmer’s focus is always the end result for the user, not the academic sophistication of the code.”&lt;/p&gt;&lt;p&gt;[From &lt;a href="http://theocacao.com/document.page/580"&gt;&lt;cite&gt;Thinking Like a Cocoa Programmer&lt;/cite&gt;&lt;/a&gt;]&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3437427227058565865?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3437427227058565865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3437427227058565865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3437427227058565865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3437427227058565865'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/thinking-like-cocoa-programmer.html' title='Thinking Like a Cocoa Programmer'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-1327132009506838628</id><published>2008-06-27T06:32:00.001-07:00</published><updated>2008-07-01T07:49:31.706-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>If you can't beat em - join em!! Dell wants to be like Apple</title><content type='html'>&lt;blockquote cite="http://feeds.feedburner.com/~r/cultofmac/bFow/~3/320767739/2170"&gt;&lt;br /&gt; You just can't make this stuff up.&lt;br /&gt;&lt;p&gt;&lt;a href="http://cultofmac.com/wp-content/uploads/dell_dock_sm.jpg" rel="lightbox[pics-1214508593]" title="dell_dock_sm.jpg"&gt;&lt;img src="http://cultofmac.com/wp-content/uploads/dell_dock_sm.jpg" width="590" height="118" alt="dell_dock_sm.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Dell is &lt;a href="http://www.pcworld.com/businesscenter/article/147581/dell_launches_studio_laptop_line_for_consumers.html"&gt;launching&lt;/a&gt; a new mid-range line of portable computers called Studio Laptops with a Mac-like “Dock” designed to give Vista users an illusion of the OS X experience.&lt;/p&gt;&lt;p&gt;Studio Laptops’ desktop GUI takes Windows’ traditional application icon layout and organizes it into a “Dock” similar to the one familiar to Mac users, though questions remain as to whether users will be able to customize the Dock layout and place it on either side or at the bottom of the desktop.&lt;/p&gt;&lt;p&gt;In an additional concession to the proposition that Apple may be winning the OS war, Dell will offer cases in seven colors, a significant change to the company’s predominantly industrial look.&lt;/p&gt;[From &lt;a href="http://feeds.feedburner.com/~r/cultofmac/bFow/~3/320767739/2170"&gt;&lt;cite&gt;Dell Brings Dock, Color to New Laptops&lt;/cite&gt;&lt;/a&gt;]&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-1327132009506838628?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/1327132009506838628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=1327132009506838628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1327132009506838628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1327132009506838628'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/if-you-can-beat-em-join-em-dell-wants.html' title='If you can&amp;#39;t beat em - join em!! Dell wants to be like Apple'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-1869656954635521477</id><published>2008-06-24T09:01:00.001-07:00</published><updated>2008-06-24T09:01:40.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>Man's Wii Fit experiment comes to an end, 15 pounds shed</title><content type='html'>&lt;p style="text-align: left;"&gt;Go Wii!!&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;span style="color: #333333; font-family: 'Lucida Grande'; line-height: 18px;"&gt;&lt;a href="http://wiinintendo.net/2008/06/23/the-official-wii-fit-experment-results/" style="text-decoration: none; font-weight: bold; color: #336699;"&gt;&lt;img hspace="4" vspace="4" border="1" alt="" src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/06/wii-fit-06-23-08.jpg" style="margin-left: 5px; margin-right: 5px; margin-top: 5px; margin-bottom: 5px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/318227530/"&gt;&lt;br /&gt;  As you may recall, Mickey DeLorenzo rose to some degree of internet stardom a little over a year ago by dropping a whopping nine pounds using Wii Sports as his sole exercise routine and, after packing on a few pounds, he decided to give it another go using Nintendo's latest weight-shedding wonder: Wii Fit. Unlike a certain other would-be success story, DeLorenzo actually managed to complete his experiment, and the results are fairly impressive. After 45 days, he managed to shed a full 15 pounds, or about 2.56 pounds a week, and he dropped his body fat % from 20.8% to 18.4%. Of course, DeLorenzo admits that doing anything involving movment an extra 60 minutes a day will result in some weight loss, but he seems pretty sold on the benefits of Wii Fit, saying that it made it "especially easy" to work the training into his daily life. [From &lt;a href="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/318227530/"&gt;&lt;cite&gt;Man's Wii Fit experiment comes to an end, 15 pounds shed&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-1869656954635521477?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/1869656954635521477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=1869656954635521477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1869656954635521477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1869656954635521477'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/man-wii-fit-experiment-comes-to-end-15.html' title='Man&amp;#39;s Wii Fit experiment comes to an end, 15 pounds shed'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3383083477254561074</id><published>2008-06-24T08:58:00.001-07:00</published><updated>2008-06-24T08:58:51.818-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Making AppleCare Worthwhile: MacBook Pro Battery Replacement</title><content type='html'>&lt;p&gt;This is a really interesting article on battery replacement..&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://db.tidbits.com/article/9663?rss"&gt;&lt;br /&gt;  Every time I buy a new Mac laptop, I question whether I should purchase AppleCare to extend the warranty from one year to three years. My MacBook Pro cost $2,800 (with tax and shipping) in November 2006, so laying out another $300 for AppleCare - well, frankly, it hurt. (For more on the purchase, and how it stacked up to previous PowerBooks I've owned, see "More Bang, Less Bucks for my MacBook Pro" 2006-11-20.) However, I've found that almost every laptop I've owned has needed some sort of after-warranty work done, so I've ordered AppleCare for every one. [From &lt;a href="http://db.tidbits.com/article/9663?rss"&gt;&lt;cite&gt;Making AppleCare Worthwhile: MacBook Pro Battery Replacement&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3383083477254561074?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3383083477254561074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3383083477254561074' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3383083477254561074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3383083477254561074'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/making-applecare-worthwhile-macbook-pro.html' title='Making AppleCare Worthwhile: MacBook Pro Battery Replacement'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-7375845015071714196</id><published>2008-06-23T08:45:00.001-07:00</published><updated>2008-06-23T08:45:51.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>Semi IP market grew 8% in 2007</title><content type='html'>&lt;p&gt;Not exactly a stellar year..&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://www.pheedo.com/click.phdo?i=3ff3497ddc6ecf46d82871093854752a"&gt;&lt;br /&gt;  The growth of the worldwide market for semiconductor intellectual property slipped back to a single-digit percentage in 2007, reflecting signs of maturity, less organic growth and more growth by acquisition, according to market research company Gartner.&lt;br style="clear: both;" /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote cite="http://www.pheedo.com/click.phdo?i=3ff3497ddc6ecf46d82871093854752a"&gt;&lt;br /&gt;  &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=3ff3497ddc6ecf46d82871093854752a" style="display: none;" border="0" height="1" width="1" alt="" /&gt;[From &lt;a href="http://www.pheedo.com/click.phdo?i=3ff3497ddc6ecf46d82871093854752a"&gt;&lt;cite&gt;Semi IP market grew 8% in 2007&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-7375845015071714196?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/7375845015071714196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=7375845015071714196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7375845015071714196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7375845015071714196'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/semi-ip-market-grew-8-in-2007.html' title='Semi IP market grew 8% in 2007'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-4785166971480113323</id><published>2008-06-22T07:24:00.001-07:00</published><updated>2008-06-22T07:24:21.065-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Dell pushes back desktop XP cutoff date to June 26</title><content type='html'>&lt;p&gt;First glancing at the below story I laughed. I went to post this but that's when the real shocker hit me... Windows XP was &lt;a href="http://en.wikipedia.org/wiki/Windows_XP"&gt;released&lt;/a&gt; in 2001 - Almost 7 years ago.. That turns the story from not funny but to sad (it's close to pathetic).&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/317085899/"&gt;&lt;br /&gt;  &lt;div align="center"&gt;&lt;br /&gt;    &lt;img vspace="4" hspace="4" border="1" src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/06/dell-xp-extend.jpg" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/div&gt;Sure, you'll be able to pay out the nose for a Vista machine with a XP Professional "downgrade" soon enough, but Dell just pushed back its &lt;a href="http://www.engadget.com/2008/06/19/dell-keeps-promise-invokes-fees-for-downgrading-to-windows-xp/"&gt;cutoff for straight-up XP machines&lt;/a&gt;. They'll be selling select Inspiron and XPS desktop with whatever flavor of XP you choose up until June 26th, at precisely 6:59AM EST. Naturally after June 26 you'll be able to buy a Vista Biz or Ultimate machine and downgrade to XP Pro, but we'll hope it doesn't have to come to that. We heard that one guy even &lt;a href="http://blog.seattlepi.nwsource.com/microsoft/archives/141343.asp?source=mypi"&gt;got a printer to work with Vista&lt;/a&gt;. Things are looking up, folks!&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  &lt;img src="http://feeds.engadget.com/~r/weblogsinc/engadget/~4/317085899" height="1" width="1" /&gt; [From &lt;a href="http://feeds.engadget.com/~r/weblogsinc/engadget/~3/317085899/"&gt;&lt;cite&gt;Dell pushes back desktop XP cutoff date to June 26&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-4785166971480113323?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/4785166971480113323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=4785166971480113323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4785166971480113323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4785166971480113323'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/dell-pushes-back-desktop-xp-cutoff-date.html' title='Dell pushes back desktop XP cutoff date to June 26'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-1298310263420951239</id><published>2008-06-17T07:59:00.001-07:00</published><updated>2008-06-17T07:59:41.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>Cadence bids to buy Mentor Graphics</title><content type='html'>&lt;p&gt;Now this is news!! I can't believe it - poor wally!&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://www.pheedo.com/click.phdo?i=c7699b947fc57d35deb16923a503dfc7"&gt;&lt;br /&gt;  Cadence Design Systems, Inc. announced it has submitted a proposal to the board of directors of Mentor Graphics Corp. to acquire Mentor Graphics for $16.00 per share in cash. The transaction is valued at $1.6 billion.&lt;br style="clear: both;" /&gt;&lt;br /&gt;  &lt;br style="clear: both;" /&gt;&lt;br /&gt;  &lt;img alt="" style="border: 0; height:1px; width:1px;" border="0" src="http://www.pheedo.com/img.phdo?i=c7699b947fc57d35deb16923a503dfc7" height="1" width="1" /&gt; &lt;img src="http://www.pheedo.com/feeds/tracker.php?i=c7699b947fc57d35deb16923a503dfc7" style="display: none;" border="0" height="1" width="1" alt="" /&gt; [From &lt;a href="http://www.pheedo.com/click.phdo?i=c7699b947fc57d35deb16923a503dfc7"&gt;&lt;cite&gt;Cadence bids to buy Mentor Graphics&lt;/cite&gt;&lt;/a&gt;]&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-1298310263420951239?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/1298310263420951239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=1298310263420951239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1298310263420951239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/1298310263420951239'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/cadence-bids-to-buy-mentor-graphics.html' title='Cadence bids to buy Mentor Graphics'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3178646669742237151</id><published>2008-06-17T07:50:00.000-07:00</published><updated>2008-06-17T07:51:15.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><title type='text'>Firefox 3 download day - how are you getting involved?</title><content type='html'>&lt;p&gt;In case you have been completely under a rock today is the official Firefox 3 release day. The folks over at Mozilla are trying to break a &lt;a href="http://www.spreadfirefox.com/en-US/worldrecord/"&gt;world record&lt;/a&gt; for the most number of downloads in a day.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So happy downloading! Of course you can follow this on &lt;a href="http://twitter.com/mozillafirefox"&gt;twitter&lt;/a&gt;!&lt;/p&gt;&lt;br /&gt;&lt;blockquote cite="http://feeds.feedburner.com/~r/9To5Mac-MacAllDay/~3/313796543/887"&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3178646669742237151?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3178646669742237151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3178646669742237151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3178646669742237151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3178646669742237151'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/firefox-3-download-day-how-are-you.html' title='Firefox 3 download day - how are you getting involved?'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-2638061465571444843</id><published>2008-06-16T08:12:00.001-07:00</published><updated>2008-06-16T08:12:40.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Economy'/><category scheme='http://www.blogger.com/atom/ns#' term='Gas Prices'/><title type='text'>Sign of the Times - Segway Glides as Gasoline Jumps</title><content type='html'>&lt;p&gt;This falls under the obvious - but apparently the &lt;a href="http://www.smartusa.com/smart-fortwo-passion.aspx"&gt;micro-car&lt;/a&gt; business is not the only ones making money in these $4.20/gal times.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Say hello to Segway. Once a techie toy - now seems to have sales jumping 50% this year. And it's no longer simply being used by universities and public offices - small business are also jumping into the mix..&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Read more &lt;a href="http://online.wsj.com/article/SB121357738002676071.html?mod=rss_whats_news_technology"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-2638061465571444843?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/2638061465571444843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=2638061465571444843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2638061465571444843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2638061465571444843'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/sign-of-times-segway-glides-as-gasoline.html' title='Sign of the Times - Segway Glides as Gasoline Jumps'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-8812732895062386838</id><published>2008-06-16T07:55:00.001-07:00</published><updated>2008-06-16T07:55:10.401-07:00</updated><title type='text'>Firefox 3 Launch Tomorrow!</title><content type='html'>&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~r/AVc/~3/312941158/firefox-3-launc.html"&gt;Firefox 3 Launch Tomorrow (and Party)&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;"I suspect everybody knows by now that tomorrow is the official launch of Firefox 3. &lt;br /&gt;&lt;br /&gt;A couple things to note about tomorrow. Firefox is trying to break a record for the most downloads in a 24 hour period. So if you plan to download FF3, you might as well do it tomorrow and contribute to a record being set."&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://avc.blogs.com/a_vc/"&gt;A VC&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-8812732895062386838?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/8812732895062386838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=8812732895062386838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/8812732895062386838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/8812732895062386838'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/firefox-3-launch-tomorrow.html' title='Firefox 3 Launch Tomorrow!'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5531161704571493272</id><published>2008-06-14T07:52:00.001-07:00</published><updated>2008-06-14T07:52:22.219-07:00</updated><title type='text'>TomTom for iPhone lives; Jobs' true health; green iPhone 3G?</title><content type='html'>&lt;p&gt;&lt;a href="http://www.appleinsider.com/article.php?id=4205"&gt;TomTom for iPhone lives; Jobs' true health; green iPhone 3G?&lt;/a&gt;: "Despite reports to the contrary, TomTom is still working on a GPS app for the iPhone.  Meanwhile, Steve Jobs' thin look may be permanent evidence of his cancer cure, Greenpeace is concerned about a toxic iPhone 3G. and a growing number of would-be iP...&lt;div style="clear: both;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.appleinsider.com/"&gt;AppleInsider&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5531161704571493272?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5531161704571493272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5531161704571493272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5531161704571493272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5531161704571493272'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/tomtom-for-iphone-lives-jobs-true.html' title='TomTom for iPhone lives; Jobs&amp;#39; true health; green iPhone 3G?'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-7472609557161807940</id><published>2008-06-14T07:50:00.000-07:00</published><updated>2008-06-14T07:50:48.233-07:00</updated><title type='text'>Sofeng's Blog: How to find the intersection and union of two lists in Python</title><content type='html'>&lt;a href="http://iwiwdsmi.blogspot.com/2008/01/how-to-find-intersection-and-union-of.html"&gt;Sofeng's Blog: How to find the intersection and union of two lists in Python&lt;/a&gt;: "How to find the intersection and union of two lists in Python&lt;br /&gt;My friend Bill had previously alerted me to the coolness of Python sets. However I hadn't found opportunity to use them until now"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-7472609557161807940?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://iwiwdsmi.blogspot.com/2008/01/how-to-find-intersection-and-union-of.html' title='Sofeng&apos;s Blog: How to find the intersection and union of two lists in Python'/><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/7472609557161807940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=7472609557161807940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7472609557161807940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/7472609557161807940'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/sofengs-blog-how-to-find-intersection.html' title='Sofeng&apos;s Blog: How to find the intersection and union of two lists in Python'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3176585595839041134</id><published>2008-06-13T13:01:00.001-07:00</published><updated>2008-06-13T13:01:07.151-07:00</updated><title type='text'>Digitmes speculates on Intel Nahalem Macs based on Snow Leopard features</title><content type='html'>&lt;p&gt;This is very exciting news for mulit-cpu aware computing.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.9to5mac.com/digitimes-apple-intel-roadmap#comments"&gt;Digitmes speculates on Intel Nahalem Macs based on Snow Leopard features&lt;/a&gt;: "&lt;p class="rteindent1"&gt;&lt;img alt="" align="right" src="http://www.digitimes.com/images/digitimes.gif" /&gt;Digitimes today &lt;a href="http://www.digitimes.com/systems/a20080612VL201.html"&gt;speculates&lt;/a&gt; on Apple's future Intel Chip roadmap.' Basically they are saying that Snow Leopard's Grand Central feature sounds a lot like what Intel's Nahalem processor will be able to offer with more cores and more threads/core/cycle.&lt;/p&gt;&lt;br /&gt;&lt;p class="rteindent1"&gt;The main optimization Apple describes as a target for Snow Leopard is Grand Central, a technology it says will make all of OS X multi-core aware and optimize it for allocating tasks across multiple cores and processors. Apple also says Grand Central will make it easier for OS X software developers to create programs that make the most of multi-core platforms.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.9to5mac.com"&gt;9 to 5 Mac - Apple Intelligence&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3176585595839041134?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3176585595839041134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3176585595839041134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3176585595839041134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3176585595839041134'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/digitmes-speculates-on-intel-nahalem.html' title='Digitmes speculates on Intel Nahalem Macs based on Snow Leopard features'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-584460482285448077</id><published>2008-06-13T07:17:00.001-07:00</published><updated>2008-06-13T07:17:28.052-07:00</updated><title type='text'>Screen Grab: Woz hacks Kathy Griffin's iPhone... on TV</title><content type='html'>&lt;br /&gt;A little friday lite humor...&lt;br /&gt;&lt;br /&gt;Steve Wozniak is much more than a throbbing brain with a tie. He knows that the quickest way to a girl's heart is to jailbreak her iPhone... on TV. As he tells Ms. Griffin, 'You know, some people would criticize you for not having hacked your iPhone.' &lt;a href="http://www.engadget.com/2007/10/29/woz-raps-on-apple-for-lower-ideals-locked-iphone-less-innovati/"&gt;Certainly not you&lt;/a&gt;, Mr. Apple Co-founder? Watch it all go down after the break.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.engadget.com/2008/06/13/video-woz-hacks-kathy-griffins-iphone/"&gt;&lt;img vspace="4" hspace="4" border="1" src="http://www.blogsmithmedia.com/www.engadget.com/media/2008/06/woz-griffin-iphone-jailbreak.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="float: right; margin-left: 4px; margin-bottom: 16px;"&gt; &lt;script&gt; var digg_url = 'http://digg.com/tech_news/Screen_Grab_Woz_hacks_Kathy_Griffin_s_iPhone_on_TV'; &lt;/script&gt; &lt;script src="http://digg.com/api/diggthis.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.engadget.com"&gt;Engadget&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-584460482285448077?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/584460482285448077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=584460482285448077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/584460482285448077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/584460482285448077'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/screen-grab-woz-hacks-kathy-griffin.html' title='Screen Grab: Woz hacks Kathy Griffin&amp;#39;s iPhone... on TV'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-4221320517601025394</id><published>2008-06-11T11:37:00.001-07:00</published><updated>2008-06-11T11:37:49.527-07:00</updated><title type='text'>Managing "Unproductive" Meetings</title><content type='html'>Great article.  I like limiting meeting to 30 minutes..&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~r/AVc/~3/309605511/managing-unprod.html"&gt;Managing "Unproductive" Meetings&lt;/a&gt;: "&lt;p&gt;I went on a bike ride this morning with my friend Jimmy and we got to talking about business (not the venture business because Jimmy's not in tech/venture/web/startups). I asked him if he takes a lot of meetings that he'd rather not take. And whether it would be better to stop taking them.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;We ended up concluding that taking meetings that are likely to be unproductive for you is a worthwhile thing to do, but you have to know how to manage these meetings.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here's some guidelines we came up with:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://avc.blogs.com/a_vc/"&gt;A VC&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-4221320517601025394?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/4221320517601025394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=4221320517601025394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4221320517601025394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4221320517601025394'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/managing-meetings.html' title='Managing &amp;quot;Unproductive&amp;quot; Meetings'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-619052321473755410</id><published>2008-06-11T10:23:00.001-07:00</published><updated>2008-06-17T15:29:32.423-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDA'/><title type='text'>DAC 2008 Trip Report</title><content type='html'>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dac.com/45th/index.aspx"&gt;DAC 2008&lt;/a&gt; was significantly less crowds – unofficially counts were down 46% over last year. However Monday (free day) seemed very crowed. &lt;a href="http://www.cadence.com/"&gt;Cadence&lt;/a&gt; was not present at this years &lt;span class="caps"&gt;DAC&lt;/span&gt; but they weren’t missed. While there is a lot of negative comments in terms of both the size and value of the conference, from my (Analog) perspective I was very pleasantly surprised. I am very glad I attended and I got a lot more out of it than I was expecting.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are two key areas I was interested in: Analog/Mixed Signal and IP Qualification/Validation. I saw other interesting things but they would be better addressed by my peers.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Analog Mixed Signal Space&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;Over the past several years&lt;/span&gt; &lt;a href="http://ieeexplore.ieee.org/iel5/10626/33561/01594722.pdf"&gt;&lt;span style="font-weight: normal;"&gt;Open Access&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;(OA) has been touted as the new open source database for Cadence.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;Background: This database is the replacement to the traditional cdb database and is the only supported database for the&lt;/span&gt; &lt;a href="http://www.cadence.com/products/custom_ic/index.aspx"&gt;&lt;span style="font-weight: normal;"&gt;Virtuoso&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;(i.e. Analog) and&lt;/span&gt; &lt;a href="http://www.cadence.com/products/digital_ic/index.aspx"&gt;&lt;span style="font-weight: normal;"&gt;Encounter&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;(i.e. Digital) moving forward in Virtuoso 6.1. The benefits to shifting to this database are numerous - you get to use the latest and greatest tools from Cadence. It works on the flow front to back - In other words both the Analog AND the Digital tools can talk to the same dataset. It's fast and highly scaleble. It also is open source and driven from the&lt;/span&gt; &lt;a href="http://www.si2.org/"&gt;&lt;span style="font-weight: normal;"&gt;Si2&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;organization. Lastly, and perhaps the biggest reason to shift to this is that because the database is open source other tools can talk to the database natively without any data loss. Using traditional tools/databases to work on data you must do a data transfer from one database to another. Cadence has used the cdb database, Synopsys has Milkyway, Magma has Volcano, each of which is proprietary to the parent company. So to translate from one database to another you must go through the traditional transfer mechanisms (LEF/DEF/GDS/EDIF). But doing this you loose all connectivity information between the designers intent (Schematic/Verilog) and the layout (GDS). By using a common database, OA retains that critical information and allows others to manipulate the data.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-weight: normal;"&gt;So why is that important?&lt;/span&gt;&lt;/em&gt; &lt;span style="font-weight: normal;"&gt;In short because other tools can now access the data, other tools which can do the same tasks that Virtuoso is doing (schematic capture/layout) can now compete natively using the same database. This gives Cadence some competition and I think we will see the start of the fragmentation of the Analog space. This will include both better tools and cheaper replacements. This is not new however and has been on the horizon for the past 3 years at DAC. This year however we saw real products both from the big players (Synopys-Orion, Magma-Titan) which offered up full replacements to the smaller startups which have very interesting point based technology (&lt;/span&gt;&lt;a href="http://www.anaglobe.com.tw/"&gt;&lt;span style="font-weight: normal;"&gt;AnaGlobe&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;-&lt;/span&gt; &lt;a href="http://www.anaglobe.com.tw/product/GlobeViewer.htm"&gt;&lt;span style="font-weight: normal;"&gt;zero refresh layout&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;,&lt;/span&gt; &lt;a href="http://www.analograils.com/"&gt;&lt;span style="font-weight: normal;"&gt;Analog Rails&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;- Connectivity Correct Layout,&lt;/span&gt; &lt;a href="http://www.ciranova.com/products/ciranova_helix.php"&gt;&lt;span style="font-weight: normal;"&gt;Helix&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;- Floorplanning).&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;All of this is being driven from the use of an Open Source Database OA. But we are also seeing significant work and adoption of PDK standardization efforts from the&lt;/span&gt; &lt;a href="http://www.iplnow.com/"&gt;&lt;span style="font-weight: normal;"&gt;IPL&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;(Interoperable PDK Libraries). The IPL is a coalition of companies (primarily EDA Vendors) which is working to standardize on Process Design Kit Data. This year they were able to&lt;/span&gt; &lt;a href="http://www.iplnow.com/iplpres/pdf08/Final_TSMC%20joins%20IPL.pdf"&gt;&lt;span style="font-weight: normal;"&gt;bring TSMC on&lt;/span&gt;&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;as a primary driver and because of this they were able to demonstrate a full Analog methodology using a TSMC PDK which was not Virtuoso based but behaved virtually identical to the Virtuoso PDK. Further they demonstrated the interoperability of this PDK between several competing solutions for front-end design and layout (Synopsys-Orion,&lt;/span&gt; &lt;a href="http://www.springsoft.com/Message/news_more.aspx?id=250DB9A3C686EC7A"&gt;&lt;span style="font-weight: normal;"&gt;Springsoft-Laker&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;) with tie-ins from other companies for Physical verification (Synopsys-Hercules, Mentor-Calibre).&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Again, why is all of this important?&lt;/strong&gt; Price Leveraging. Cadence is no longer the only analog EDA tool shop in town. By demonstrating that this flow is fundamentally possible using other tools and by adopting some of these components when SMSC is developing a new (90nm) PDK we could use that as a bargaining chip when re-doing licensing deals because we are no longer chained to Cadence. That being said there is an additional effort which would need to be incurred to adopt some of these components (&lt;a href="http://www.ciranova.com/products/pycell_studio.php"&gt;Pycells&lt;/a&gt;/IPL CDF's), but at least we saw it's possible.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;IP Qualification – Fenix-DA&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Over the past year &lt;a href="http://www.fenix-da.com/"&gt;Fenix-DA&lt;/a&gt; has really started to evolve into a generic IP Qualification and Validation tool. This year they introduced several new features into their Crossfire product which will drive us to re-look at Crossfire. Specifically they have added a generic IP Qualification Path for macros, Flow based prep work, and a rich API to allow you to bolt on components you may require for your IP Flow. All of these components are necessary when looking at generic macros.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the past Fenix was focused on Standard Cell Qualification and they provide a rich system for handling this data. Fundamentally Fexix-DA is both a &lt;a href="http://www.cadence.com/partners/connections/"&gt;Cadence Connection Parter&lt;/a&gt; and is part of the &lt;a href="http://www.synopsys.com/partners/strategicalliances.html"&gt;Synopsys Partner Program&lt;/a&gt; which gives them access to the underlying database API's. This is important for a number of reasons but fundamentally (which was stated above) we can extract much more information from the database than we can by simply looking at the results of a database operation (streamOut/Verilog out). But within a single tool they can talk to both databases - and they are doing this to ensure consistency between them - hence the validation/qualification piece. They initially focused on Standard Cells which were predicatable (an AND gate function is well understood) but this becomes much more challenging when you look at macros.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now that they are supporting the QA/Validation of macros the challenge is a bit more generic. True, Crossfire can't do the predictive validation that they do on standard cells but they don't need to. The needs for macros (at least initially) are more generic: pin name direction validation, .lib validation and lef/gds validation are all equally important and time consuming to do by hand. While automating pieces of this are straightforward, they are already are doing this which makes is very compelling.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This year they also have introduced a customizable flow based system which allows you to create custom flows depending on your needs. You would use this flow based approach to help generate the collateral needed prior to the release of IP. For example: I need to stream out of cadence a gds file. Crossfire has the Cadence API under the hood so stream outs are handled simply. A more complicated example would be LVS. Build a customized flow to support both the cdlOut and the StreamOut, run LVS and validate the results.. Pretty awesome indeed.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The last key benefit is that if the Graphical UI flow based approach will not meet your needs they have an open source API (written for Python) which you can directly access. This is the most promising feature because I think of it as an API to the API. Now through a single tool I can directly access all components of an IP block using both the Cadence API and the Synopsys API.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Overall I was very pleased with DAC2008. I was surprised by what I saw and in my opinion we will see a fragmentation followed by a subsequent re-energization of the analog tools market. This will be not only good for EDA and Analog design but should make this a much more interesting environment to work in.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-619052321473755410?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/619052321473755410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=619052321473755410' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/619052321473755410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/619052321473755410'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/dac-2008-trip-report.html' title='DAC 2008 Trip Report'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-6841055650485970295</id><published>2008-06-08T08:15:00.001-07:00</published><updated>2008-06-13T07:56:13.490-07:00</updated><title type='text'>With GPS Expected on the New iPhone, Portable Nav Suppliers Are "Scared %#*@-less"</title><content type='html'>&lt;p&gt;I would hate to be TomTom right about now...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://feeds.wired.com/~r/wired/index/~3/306982311/portable-nav-da.html"&gt;With GPS Expected on the New iPhone, Portable Nav Suppliers Are "Scared %#*@-less"&lt;/a&gt;: "The use of GPS-enabled mobile phones is expected to quadruple by 2011, and if GPS is introduced on the new iPhone on Monday as expected, it could accelerate the shift away from portable navigation systems.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.wired.com/rss/index.xml"&gt;Wired News&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-6841055650485970295?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/6841055650485970295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=6841055650485970295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/6841055650485970295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/6841055650485970295'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/with-gps-expected-on-new-iphone.html' title='With GPS Expected on the New iPhone, Portable Nav Suppliers Are &amp;quot;Scared %#*@-less&amp;quot;'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-332683136306645496</id><published>2008-06-07T16:14:00.001-07:00</published><updated>2008-06-13T07:55:53.065-07:00</updated><title type='text'>Google Gets Serious About Open Source Mac Projects</title><content type='html'>Whoa 20% - sheese!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://rss.slashdot.org/~r/Slashdot/slashdotApple/~3/306862213/article.pl"&gt;Google Gets Serious About Open Source Mac Projects&lt;/a&gt;: "mjasay sends us a link to a CNet story, which begins: 'In the '20 percent time' that Google employees have to work on projects of personal interest, it turns out that an increasing number are spending time writing open-source projects for their Macs. Google has long had a fondness for the Mac, with upwards of 6,000 of its 20,000 current employees opting to use the Mac over Windows. It is in the 20 percent employee development time, however, where this statistic becomes interesting. At Google, development time translates into products. The more Mac-friendly employees, the more Mac-related development. The more Mac-related development, the more Google-sponsored Mac-based open-source code. As Google's Mac Developer Playground demonstrates, some of this code is quite interesting.'&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://apple.slashdot.org/"&gt;Slashdot: Apple&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-332683136306645496?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/332683136306645496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=332683136306645496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/332683136306645496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/332683136306645496'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/google-gets-serious-about-open-source.html' title='Google Gets Serious About Open Source Mac Projects'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-208461701023943776</id><published>2008-06-06T07:49:00.001-07:00</published><updated>2008-06-13T07:55:18.674-07:00</updated><title type='text'>Ballmer: you can buy Vista and downgrade to XP for free</title><content type='html'>How can this help their business.  When the CEO is off explaining that downgrading is an viable option.  I think that has got to have R&amp;D scared shitless - what value is R&amp;D providing to the company.  Certainly not to the bottom line..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.appleinsider.com/article.php?id=4144"&gt;Ballmer: you can buy Vista and downgrade to XP for free&lt;/a&gt;: "While Apple is encouraging its install base to upgrade to the latest version of the Mac OS X operating system, a new sales pitch by its Redmond-based rival to the north recommends that customers unhappy with Vista take a step in the opposite directio...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.appleinsider.com/"&gt;AppleInsider&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-208461701023943776?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/208461701023943776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=208461701023943776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/208461701023943776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/208461701023943776'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/ballmer-you-can-buy-vista-and-downgrade.html' title='Ballmer: you can buy Vista and downgrade to XP for free'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-4486948776886745906</id><published>2008-06-04T08:38:00.001-07:00</published><updated>2008-06-13T07:54:49.306-07:00</updated><title type='text'>Intel Capital invests more than $60M in 8 deals</title><content type='html'>Very interesting to see who the big chip companies are investing in...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.edn.com/article/CA6566912.html?nid=2551"&gt;Intel Capital invests more than $60M in 8 deals&lt;/a&gt;: "Global chip leader Intel Corp announced this afternoon eight investments totaling more than $60 million, led by its investment organization Intel Capital.&lt;br style="clear: both;"/&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.edn.com"&gt;EDN Articles&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-4486948776886745906?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/4486948776886745906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=4486948776886745906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4486948776886745906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/4486948776886745906'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/intel-capital-invests-more-than-60m-in.html' title='Intel Capital invests more than $60M in 8 deals'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-2966701160491914975</id><published>2008-06-04T08:30:00.001-07:00</published><updated>2008-06-04T08:30:39.474-07:00</updated><title type='text'>RUMOR: Apple built fake store for WWDC Ad</title><content type='html'>&lt;h3&gt;It's less than a week away and the rumors are running rampant!&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.applegazette.com/apple-store/rumor-apple-built-fake-store-for-wwdc-ad/#comments"&gt;RUMOR: Apple built fake store for WWDC Ad&lt;/a&gt;: "&lt;p&gt;&lt;center&gt;&lt;a href='http://www.applegazette.com/wp-content/uploads/applestore_interior.jpg' title='applestore_interior.jpg'&gt;&lt;img src='http://www.applegazette.com/wp-content/uploads/applestore_interior.jpg' alt='applestore_interior.jpg' /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;blockquote&gt;&lt;p&gt;This one is pretty interesting, we heard last week that an Apple store set was built on a Hollywood soundstage, and it was presumed that the set would be used in an upcoming film of some kind, but according to &lt;a href="http://valleywag.com/5012369/apple-created-temporary-store-on-warner-bros-lot"&gt;Vallywag&lt;/a&gt; (thanks &lt;a href="http://arstechnica.com/journals/apple.ars/2008/06/03/apple-secrecy-to-new-levels-fake-store-built-just-for-ad"&gt;Ars Technica&lt;/a&gt;) that’s not exactly what it was used for.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/em&gt;I liked the last line..&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;blockquote&gt;&lt;p&gt;This has, of course, led people speculate the this couldn’t all just be for the 3G iPhone - so there MUST be something else that’s going to be announced.&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;p&gt;(Via &lt;a href="http://www.applegazette.com"&gt;Apple Gazette&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-2966701160491914975?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/2966701160491914975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=2966701160491914975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2966701160491914975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/2966701160491914975'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/rumor-apple-built-fake-store-for-wwdc.html' title='RUMOR: Apple built fake store for WWDC Ad'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3371606336877003782</id><published>2008-06-04T08:25:00.001-07:00</published><updated>2008-06-04T08:36:12.473-07:00</updated><title type='text'>The Weird Economics of Information</title><content type='html'>This is an insightful blog article on the information sharing with respect to VC.  Fundamentally I think Brad hit the nail on the head - and to me this almost seems obvious; The more you know the easier it is to share and not feel threatened by opposition.  To me it's about a comfort zone.&lt;br /&gt;&lt;br /&gt;His suggestion that:&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;an entrepreneur should be open with everyone, and that they will get the most value out of being open with the people who are most knowledgeable about the particular problem they are trying to solve. The people most knowledgeable about a problem are also the ones best positioned to compete with the entrepreneur, so the entrepreneur has more to gain and more to lose by being open with these people. From one perspective, the risks and rewards of being open are perfectly balanced. Every insight comes at the cost of another potential competitor, but that calculus leaves out the whole problem of execution. If an entrepreneur is incrementally more prepared to execute on an idea that the person they are sharing it with, they should still gain even if they engage in an open (and equal) exchange with a potential competitor.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Read more from Brad at Union Square..&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~r/UnionSquareVentures/~3/303763543/the_spooky_econ.html"&gt;The Weird Economics of Information&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3371606336877003782?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3371606336877003782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3371606336877003782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3371606336877003782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3371606336877003782'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/weird-economics-of-information.html' title='The Weird Economics of Information'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3316424640562743517</id><published>2008-06-02T11:18:00.001-07:00</published><updated>2008-06-02T11:18:03.678-07:00</updated><title type='text'>North Oaks Minn says no to google..</title><content type='html'>Interesting that the city streets are still privately owned..&lt;br /&gt;&lt;br /&gt;The city of North Oaks, Minnesota demanded that Google remove images of residents' homes used for the Google Maps Street View feature. Google agreed to the request and all North Oaks' Street Views have vanished. The Street View fight was resolved in January but the Star Tribune recently published a very interesting account on the subject.&lt;br /&gt;&lt;br /&gt;http://blogs.pcworld.com/staffblog/archives/007044.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3316424640562743517?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3316424640562743517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3316424640562743517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3316424640562743517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3316424640562743517'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/north-oaks-minn-says-no-to-google.html' title='North Oaks Minn says no to google..'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-5924289855493506706</id><published>2008-06-01T21:55:00.001-07:00</published><updated>2008-06-13T07:56:53.788-07:00</updated><title type='text'>Python 2.5.2 (release candidate 1)</title><content type='html'>Getting closer!!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.python.org/news/index.html#Thu14Feb20081930-0200"&gt;Python 2.5.2 (release candidate 1)&lt;/a&gt;: "&lt;!--utf-8--&gt;&lt;!--0.4.1--&gt;&lt;p&gt;&lt;a class="reference" href="http://www.python.org/download/releases/2.5.2/"&gt;Python 2.5.2 (release candidate 1)&lt;/a&gt; is now available. This is a bugfix release of Python 2.5.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.python.org/"&gt;Python News&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-5924289855493506706?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/5924289855493506706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=5924289855493506706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5924289855493506706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/5924289855493506706'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/python-252-release-candidate-1.html' title='Python 2.5.2 (release candidate 1)'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3402802525195793148.post-3353219531850556717</id><published>2008-06-01T21:44:00.001-07:00</published><updated>2008-06-01T21:44:52.654-07:00</updated><title type='text'>Notes/Domino 8.5 Public Beta - NOW AVAILABLE</title><content type='html'>Finally an update - let's see how long this will last before it breaks..&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www-10.lotus.com/ldd/notesmacforum.nsf/DateAllFlatWeb/31B60753AD55128085257459001A908F?OpenDocument&amp;ca=drs-fo"&gt;Notes/Domino 8.5 Public Beta - NOW AVAILABLE&lt;/a&gt;: "IBM is pleased to announce that the Notes/Domino 8.5 PUBLIC Beta 1 release is now available! ....AND it includes the latest"&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(Via &lt;a href="http://www.lotus.com/ldd/notesmacforum.nsf"&gt;developerWorks Lotus: IBM Lotus Notes 8.5 for Mac Beta Forum&lt;/a&gt;.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3402802525195793148-3353219531850556717?l=rh0dium.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rh0dium.blogspot.com/feeds/3353219531850556717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3402802525195793148&amp;postID=3353219531850556717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3353219531850556717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3402802525195793148/posts/default/3353219531850556717'/><link rel='alternate' type='text/html' href='http://rh0dium.blogspot.com/2008/06/notesdomino-85-public-beta-now.html' title='Notes/Domino 8.5 Public Beta - NOW AVAILABLE'/><author><name>Steven Klass</name><uri>http://www.blogger.com/profile/00681756689019735665</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_KUap9DBPt6U/SwYTSuT3mlI/AAAAAAAACQ4/208qOYllqTo/S220/Sklass+Headshot+640x640.jpg'/></author><thr:total>0</thr:total></entry></feed>
