<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"><id>tag:blogger.com,1999:blog-8196699014965996395</id><updated>2009-01-05T20:14:28.231-07:00</updated><title type="text">one</title><subtitle type="html">"Whenever you find yourself on the side of the majority, it is time to pause and reflect." - Mark Twain</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://one.valeski.org/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://one.valeski.org/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>139</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/valeski/one" type="application/atom+xml" /><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-5474757193464025037</id><published>2009-01-04T06:00:00.000-07:00</published><updated>2009-01-04T06:00:00.986-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2009-01-04T06:00:00.986-07:00</app:edited><title type="text">I can't believe I have to say this...</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iPi569bVVoc/SWArsmfoH2I/AAAAAAAAACU/p53jB-bGL_A/s1600-h/eagle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 261px; height: 320px;" src="http://1.bp.blogspot.com/_iPi569bVVoc/SWArsmfoH2I/AAAAAAAAACU/p53jB-bGL_A/s320/eagle.jpg" alt="" id="BLOGGER_PHOTO_ID_5287274007780400994" border="0" /&gt;&lt;/a&gt;I assume everyone around me has the same thoughts, background, and experiences as myself, buzzing around in their heads. I'm always amazed when I discover this isn't true. &lt;span style="font-style: italic;"&gt;Note, the sarcasm&lt;/span&gt;. I just noticed something disturbing in a demographic I wouldn't have expected to see it in; &lt;a href="http://twitter.com/"&gt;twitter&lt;/a&gt;. Twitter is a niche marketplace with tech savvy users (or at least it used to be). However, evidence of Twitter going mainstream just hit me in the face. Twitter just blasted a front-page service warning to users about a phishing scam some of their users have seen, and fallen victim to. I was taken back to my days at AOL when corporate communications felt it prudent to internally educate employees about phishing scams. I knew I was in trouble when I saw one of the Internet's supposed powerhouses having to educate its employees about such a topic.&lt;br /&gt;&lt;br /&gt;I can't believe I have to say this, but... dear latest-web-generation, understand the risks around you, as well as how to avoid falling victim to scams, while reading email and web browsing.&lt;br /&gt;&lt;br /&gt;Here are my general safety/scurity rules of thumb that apply to surfing &lt;span style="font-weight: bold;"&gt;anything&lt;/span&gt; running in a browser (webmail, shopping, browsing, whatever). I should disclose that my world view is confined to Mozilla based derivative technologies such as Firefox and Thunderbird, though there are generally equivalents to these tips/techniques for IE.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pay attention. There's no super secret amazing technology that lets a wrongdoer steel your information magically. Computers, the Internet, and email are surprisingly secure. 99 times out of 100, if someone lost information, it was because they weren't paying attention. They either clicked a link they weren't supposed to, and exposed themselves to some form of phishing, a bug exploit, or downloaded software they shouldn't have.&lt;/li&gt;&lt;li&gt;Use a decent password. Something like 2/3's of all MySpace account passwords are the word "password." You can guess the quality of the remaining 1/3rd.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Clicking on links, even "evil" ones, is ok; it's what you do once you've arrived at the final destination where you can get into trouble. Every now and then someone exploits a browser security hole and gets you to go to the webpage that does the exploiting, but these are very rare. Related to #1, pay attention on every page you're on.&lt;/li&gt;&lt;li&gt;Never give a web page information if something (e.g. an email from your "bank") directed you to the page to do so. The old-world equivalent of this rule is "never give your social security number to someone &lt;span style="font-weight: bold;"&gt;who calls you&lt;/span&gt; on the phone." There is never a legitimate email, or web-page that asks you for personal information of any kind, if it initiated the exchange; 99 times out of 100 it's a scam. Giving web-pages your information is perfectly secure, as long as you initiated the exchange. For example, if you get an email suggesting your account information is out of date, guess what, it's not, someone's trying to scam you. If your account information is out of date, you'll find out on your own terms; only update account information under those circumstances. Legitimate services' privacy policies and terms of service clarify that they will never ask for your personal information, under any circumstances; that's all you need to know.&lt;/li&gt;&lt;li&gt;Always notice the fully-qualified-domain-name of a web-page you're about to enter information into. If it's not where you think you should be entering information; don't. Just pay attention to the domain name; 99 times out of 100, that's enough. For example, http://paypal.services.com is bogus. http://services.paypal.com is valid.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Always ignore graphics and text in a web-page that say things like "this page is secure." The only thing that guarantees encrypted security of data transmission is an https URL (e.g. https://your-bank.com). Be aware of your browser's encryption/security UI elements and features, and look out for those. I have never seen a browser exploit that fooled the base-level ssl certificate UI; trust your browser.&lt;/li&gt;&lt;li&gt;Hover over a link to determine where clicking it will take you. If the hovered link isn't where you want to go, don't bother clicking on it. I suspect there are some cute DOM tricks to obfuscate where clicking a link will take you, so to be really sure about where clicking a link will take you, select the link text (note, that's different than a click), right-click it, then select "view selection source" from the context menu. From there, you'll see the actual href that will be navigated to upon click.&lt;/li&gt;&lt;li&gt;If you're generally suspicious/interested, install Live HTTP Headers for Firefox based browsers, or HTTP Watch for IE, and watch/block the traffic you don't want. Firefox 3.1 (finally!) supports native HTTP header interrogation as well. Just view the page info (Tools-&gt;Page Info) and click the "Headers" tab.&lt;/li&gt;&lt;/ol&gt;Good luck.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5474757193464025037/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5474757193464025037" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5474757193464025037?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5474757193464025037?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/01/i-cant-believe-i-have-to-say-this.html" title="I can't believe I have to say this..." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_iPi569bVVoc/SWArsmfoH2I/AAAAAAAAACU/p53jB-bGL_A/s72-c/eagle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2951526781050105514</id><published>2009-01-03T11:58:00.002-07:00</published><updated>2009-01-03T12:15:38.110-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2009-01-03T12:15:38.110-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="addons" /><title type="text">HOW-TO: Force incompatible Firefox Add-ons to Install</title><content type="html">If you ride Firefox versions harder and faster than add-on developers upgrade their add-ons for compatibility, this post is for you.&lt;br /&gt;&lt;br /&gt;Firefox add-ons include their Firefox version compatibility within their .xpi install file. Often developers will put a "maxVersion" field in their add-on to mitigate potential compatibility issues between their add-on and future version of Firefox. 99% of the time however, there aren't any compatibility issues when there are minor (or even major) version upgrades of Firefox, yet you're prevented from installing your favorite add-on because of the add-on thinks it's incompatible. Here's how you can force the add-on to install. NOTE: your mileage may vary; you may indeed be installing an add-on that is not compatible with your up-version of Firefox; use at your own risk.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the .xpi for the add-on you want, directly to your hard-drive, bypassing the default installation behavior of Firefox. To do this, find the .xpi file for the add-on, generally through a Google search. addons.mozilla.org tries to be smart and prevent you from even downloading add-ons that aren't compatible with your browser, so you have to work around this and find the direct link to the .xpi. Once you find a link to the .xpi, right-click it and select "Save link as..."&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crack open the .xpi file. .xpi files are simple zip compressed archives, so you can unzip them like any other .zip file. "&lt;span style="font-family: courier new;"&gt;unzip your-file.xpi&lt;/span&gt;". That will un-archive/un-compress the contents of the .xpi file. You might want to do this in a dedicated directory for cleanliness' sake.&lt;/li&gt;&lt;li&gt;Open "install.rdf" (that was extracted in the previous step) in a text editor, modify the "maxVersion" field and save the file. Make sure this field is at least at the level of your version of Firefox. Use '*' accordingly to indicate any version number.&lt;/li&gt;&lt;li&gt;Re-generate the .xpi file with the updated install.rdf file. You do this by running the "zip" command like so "&lt;span style="font-family:courier new;"&gt;zip -f your-file.xpi&lt;/span&gt;".&lt;/li&gt;&lt;li&gt;Install your-file.xpi by opening it in the browser via File-&gt;Open. Follow the install steps Firefox presents.&lt;/li&gt;&lt;/ol&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2951526781050105514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2951526781050105514" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2951526781050105514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2951526781050105514?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/01/how-to-force-incompatible-firefox-add.html" title="HOW-TO: Force incompatible Firefox Add-ons to Install" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3636302355792862251</id><published>2008-12-30T07:08:00.002-07:00</published><updated>2008-12-30T07:22:10.949-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-12-30T07:22:10.949-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nutrition" /><category scheme="http://www.blogger.com/atom/ns#" term="food" /><title type="text">Food Portion Sizes</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_-sFohRgxOBI/Rv4w9vhE2KI/AAAAAAAABCc/FcgeeWPtWfE/s320/Pigging+Out2+MAD%233.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 290px; height: 320px;" src="http://bp2.blogger.com/_-sFohRgxOBI/Rv4w9vhE2KI/AAAAAAAABCc/FcgeeWPtWfE/s320/Pigging+Out2+MAD%233.jpg" alt="" border="0" /&gt;&lt;/a&gt;If you've ever had a meal out-to-eat with me you've heard me complain about the portion size of food served at restaurants; it's disgusting!&lt;br /&gt;&lt;br /&gt;Please join me in a campaign to halve serving sizes at restaurants. We, as a society, need to end this gluttonous reign of Fat Ugly Americans (myself included) pigging out on 1lb+ entree sizes, for under $0.10. Guess what people, "more for your money" is exactly what you do &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt; want when dining out.&lt;br /&gt;&lt;br /&gt;The next time you dine out, ask for half of what you want to order. If the restaurant can accommodate, you'll feel much better after the meal; I guarantee it. If the restaurant cannot accommodate, at least you've made the point that you'd prefer a portion more fit for human consumption. When a restaurant tells me "we can't do half portions of that" I make some comment about how I'd appreciate it if they'd simply cut the portion down altogether and just charge me the full-plate price; again, trying to make the point.&lt;br /&gt;&lt;br /&gt;Of course there are exceptions to this rule. There are restaurants that serve too little for the price, but like I said, they're exceptions; let's leave them alone for now and solve that problem another time.&lt;br /&gt;&lt;br /&gt;One of the only ways I see restaurants cutting back is if we, consumers, demand it.&lt;br /&gt;&lt;br /&gt;A quick plug for a newsletter I've been receiving for over a decade now. A nice, balanced, view into diet and nutrition in the U.S.; &lt;a href="http://www.cspinet.org/nah/index.htm"&gt;Nutrition Action&lt;/a&gt; published by the Center for Science in the Public Interest.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3636302355792862251/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3636302355792862251" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3636302355792862251?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3636302355792862251?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/12/food-portion-sizes.html" title="Food Portion Sizes" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_-sFohRgxOBI/Rv4w9vhE2KI/AAAAAAAABCc/FcgeeWPtWfE/s72-c/Pigging+Out2+MAD%233.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-7033811906097157256</id><published>2008-12-27T08:32:00.007-07:00</published><updated>2008-12-27T08:59:31.374-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-12-27T08:59:31.374-07:00</app:edited><title type="text">Holiday's and Communication</title><content type="html">A holiday party conversation with relatives last night kicked up the "why would someone use Twitter" and "why do the kids text message so much" questions again. There's nothing like getting four generations in a room to illustrate severe communication differences. The older generations are downright angry at the concept of publicly broadcasting your thoughts. The younger one's don't know any other way; it just &lt;span style="font-style: italic;"&gt;is&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The conversation brought up some work I did with a friend little over a year ago. It came out of a day-long, two-man, off-site brainstorming session. We were trying to understand social network and communication dynamics. What motivates people to contribute? What motivates people to look at others' contributions? Why bother with all this stuff? We jammed our summarized thoughts into a yin-yang diagram like so...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_iPi569bVVoc/SVZMn4n1A2I/AAAAAAAAACM/nUXJ8p_mcyk/s1600-h/social-yin-yang.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 275px; height: 291px;" src="http://1.bp.blogspot.com/_iPi569bVVoc/SVZMn4n1A2I/AAAAAAAAACM/nUXJ8p_mcyk/s400/social-yin-yang.gif" alt="" id="BLOGGER_PHOTO_ID_5284495460863902562" border="0" /&gt;&lt;/a&gt;It goes something like this... we contribute to social networks/products in order to fulfill our need for self expression... we consume the information within social networks/products in order to discover new things... and the social networks/products themselves provide an innate human need to feel connected. Wrap all this stuff together and you have the nut that comprises the psychology and sociology behind social applications. One's contributions to a social product generally reflect their "real-life" personality facets. If someone's an ego-maniac in "real-life," they're likely to be one "online." If someone's passive in "real-life," they're likely to be "online" as well (if they choose to participate "online" at all). You can often draw connections between one's desire/ability/style to blog, and their contributions to various social networks/products.&lt;br /&gt;&lt;br /&gt;Most of this is obvious, but some of it is intensely subtle.&lt;br /&gt;&lt;br /&gt;Some examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I check my Facebook feed to learn about what my "friends" have been up to. Discovery.&lt;/li&gt;&lt;li&gt;I tweet about ice skating with my family so my "friends" (or geographically distant relatives) can know what I've been up to recently. Expression.&lt;/li&gt;&lt;li&gt;I blog about an exotic experience I had in so anyone reading my stuff knows I had the exotic experience (bragging). Expression.&lt;/li&gt;&lt;li&gt;I read the blog post from a friend who just went to a concert to learn about a new band I might be interested in. Discovery.&lt;/li&gt;&lt;li&gt;Again, wrap it all together and you have satisfied our human need for "connectedness."&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The only real differences between today's communication and yesterday's is that today's is permanently "recorded"/stored and doesn't fade with time, and that today's cannot be controlled once the cat is out of the bag. These are BIG differences and can be used for good, as well as evil.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/7033811906097157256/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=7033811906097157256" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7033811906097157256?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7033811906097157256?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/12/holidays-and-communication.html" title="Holiday's and Communication" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_iPi569bVVoc/SVZMn4n1A2I/AAAAAAAAACM/nUXJ8p_mcyk/s72-c/social-yin-yang.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2413816947400066399</id><published>2008-12-13T18:43:00.002-07:00</published><updated>2008-12-13T18:48:09.667-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-12-13T18:48:09.667-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cafes" /><title type="text">Update: American cafes, service, and tipping</title><content type="html">Last year I posted about how &lt;a href="http://one.valeski.org/2007/07/american-cafes-service-and-tipping.html"&gt;cafés in the US lack table service&lt;/a&gt;. I'm pleased to report that my favorite joint in Boulder, Laughing Goat, has started offering table service in the evening. Finally someone in town stepping it up. Thanks LG!</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2413816947400066399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2413816947400066399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2413816947400066399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2413816947400066399?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/12/update-american-cafes-service-and.html" title="Update: American cafes, service, and tipping" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-662651174945635228</id><published>2008-12-10T18:04:00.002-07:00</published><updated>2008-12-10T18:16:04.632-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-12-10T18:16:04.632-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="seo" /><title type="text">SEO?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://thevoiceforschoolchoice.files.wordpress.com/2008/07/snake-oil-cables.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 300px;" src="http://thevoiceforschoolchoice.files.wordpress.com/2008/07/snake-oil-cables.jpg" alt="" border="0" /&gt;&lt;/a&gt;A sad artifact of search engines having become &lt;span style="font-weight: bold;"&gt;the&lt;/span&gt; navigation paradigm for the web, is that gaming the system came into vogue. Carpetbaggers in the form of SEO "experts" started manipulating content to get better search engine rankings, and selling their wares to unsuspecting websites wanting "better results page placement."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note that SEM is radically different from SEO, and I consider SEM a legitimate industry.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Guess what? 99.9999.....% of what these SEO "experts" do can be easily done by anyone, and unfortunately, the "experts" have built up such a layer of falsification and search algorithm manipulation that legitimate content has to fight tooth and nail to be properly represented. If you're interested in all the relevant tips/tricks on SEO, all you need to do is buy the &lt;a href="http://www.seobook.com/" target="_blank"&gt;seobook&lt;/a&gt;; it'll tell you everything you need to know, and it's updated regularly in order to keep close pace with algorithm changes. We'll leave it to Google/Yahoo/MSFT to sort through the math in order to keep the "right" stuff at the top of the page, but the rest of us simply need to focus on what matters; your product and content. If you deserve first-page placement, you will get it; you can't buy it. The few examples I've experienced in my life wherein someone manipulated the model to get first-page placement, the algorithms caught up to them, snuffed them out, and their SEO investment was lost. If you're reading this thinking "but, I've been on the front page b/c of SEO for months now", your days are numbered; figure out a different model quickly.&lt;br /&gt;&lt;br /&gt;The upside here is that the marketplace is evolving. Just like any opportunity that is taken advantage of, and over used, it becomes commoditized. SEO is no different. Some friends of mine have recognized this and are building a service that cuts out the noise, and allows folks that want their site to be SEO'd, to have it done by people that know what they're doing (self-regulated marketplace style), at costs that are in-line with the reality of the market; as opposed to glorified SEO gurus. You'll hear about this firm soon enough; I'm excited to see them set things straight.&lt;br /&gt;&lt;br /&gt;There is incredible money to be made by a site owner, as well as by people that know how to SEO, if you get "good" placement on a search result page. The industry needs a reset on the model here however, and I'm looking forward to it.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/662651174945635228/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=662651174945635228" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/662651174945635228?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/662651174945635228?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/12/seo.html" title="SEO?" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2301113666357141127</id><published>2008-12-04T08:48:00.002-07:00</published><updated>2008-12-04T08:59:24.117-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-12-04T08:59:24.117-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="addons" /><category scheme="http://www.blogger.com/atom/ns#" term="mozilla" /><title type="text">Browser Innovation</title><content type="html">Hark back to the early home computing days when the apps that came with a computer were built/owned by the operating system vendor. Now think about the product landscape and OS advancements that have taken place over the past 20 years. Those advancements and innovations were purely a function of the underlying operating system opening up it's APIs, and supporting the needs of application developers. The result has been better products for the end user, and billion dollar software industries.&lt;br /&gt;&lt;br /&gt;Now consider web browsers the new, modern, operating system. They only way to see the same kind of innovative explosion in the browser space is through extensibility. Netscape/Mozilla have supported cross-platform extensions since the beginning. Microsoft has wedged it's proprietary add-on models (leveraging highly proprietary technologies from COM/DCOM, to ActiveX) into IE. Apple, in a series of miscues with Safari, doesn't have an extensible model for their browser. It was a joy to see Mozilla finally take add-ons seriously once they sput out of AOL. While Netscape had a framework, they didn't provide a clearinghouse, so add-ons (plugins as they were called) had limited success as an industry early on. Mozilla finally seems to be getting it right with http://addons.mozilla.org; though there's room for improvement.&lt;br /&gt;&lt;br /&gt;I'm really excited to see some friends pulling together something we'd talked about years ago; addoncon (&lt;a href="http://addoncon.com/"&gt;http://addoncon.com/&lt;/a&gt;). The fact that industry hasn't been pulling together on the extensibility front to date, is beyond me. I'm planning on attending, and if you care about how the network evolves, I hope you do too.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2301113666357141127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2301113666357141127" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2301113666357141127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2301113666357141127?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/12/browser-innovation.html" title="Browser Innovation" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2480649650714440521</id><published>2008-11-30T12:50:00.002-07:00</published><updated>2008-11-30T14:22:43.313-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-30T14:22:43.313-07:00</app:edited><title type="text">_The_ bubble has burst.</title><content type="html">Do you think the "Internet bubble" pop was bad? Assuming so, you haven't seen anything yet. The recent investment banking collapse will change our lives for decades to come. I've been trying to coax out a blog post on this topic for a few months now, and &lt;a href="http://www.portfolio.com/news-markets/national-news/portfolio/2008/11/11/The-End-of-Wall-Streets-Boom"&gt;Condé Nast's Portfolio magazine, which recently ran "The End" by Michael Lewis,&lt;/a&gt; finally inspired me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The 1990's were so fun!&lt;/span&gt;&lt;br /&gt;The net bubble was a function of greedy analysts &amp;amp; company insiders pairing up with investment bankers to jack up IPO prices for newly minted securities in newly fashioned industries (online advertising, various Internet driven technologies, the PC business, etc). The result plowed large sums of money into the hands of many, and consumer spending took its queue, resulting in big ticket items flying off the shelves (jets, 2nd mansions, $100k watches, fast cars, etc). Many became "millionaires," and if you weren't one of them, you at least knew a few first hand.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;2nd Verse; the bubble bursts&lt;/span&gt;&lt;br /&gt;When the reality of the situation set in, and folks realized the Emperor had no clothes (you can only support massive P/E ratios for so long before you have to illustrate at least &lt;span style="font-weight: bold;"&gt;some&lt;/span&gt; value), the tech sector cratered, taking it's periphery with it. How quaint this mere $5 Trillion wipe out turns out to have been. Not one to go down with out a fight, the Fed dropped federal fund rates, to keep credit markets cranking and consumers spending. The masses, not wanting the memory of free wheeling spending to fade, saddled on more debt in order to keep spending. Money was cheap and this time 2nd mortgages flew off the shelves, along with home equity "secured" lines of credit. The mortgage industry was on a tear, and "regular" 1st morgtages weren't going to be enough to keep things raging; there are only so many homes you can build and buy. American minds were made up, and we were going to continue spending come hell or high water. If our bloated salaries and cash from equity stakes in "successful" investments during the Internet Boom, couldn't float our spending consciousness, mortgage backed debt would!&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;3rd Verse; popular leverage&lt;/span&gt;&lt;br /&gt;Wall Street has always led our financial, and cultural "success" measure, thinking. Big spending bankers, traders, and brokers have had their place in pop-culture for decades. The masses  watched in drooling amazement as finance industry employees were bonused beyond recognition, and spent lots of money on toys. We eat the stories of $10m dollar birthday parties up like turkey on Thanksgiving. For a time only the big kids on Wall Street had access to the real money; the kind that few could actually understand how it was created. Then, overnight, the perfect storm of greed (hungry Wall Street execs), derivative innovation (CDO creating quants), and deregulation entered the room; she was beautiful, single, and everyone wanted a piece. Derivatives have always been a neat trick on Wall Street. Leveraging one equity to create another, in a "side bet" manner, is a model that has been around forever. They've always been hard to explain, but until the mid-1990's, the common man could get their head around them with enough explanation and description. Too many abstractions away from the original asset however yields mysterious confusion, and wool can easily be pulled over another's eyes. It was the employee's turn now though; step aside CEO! Relative peons were creating new mortgage derived securities by the dozens, and selling them like hot-cakes to buyers with massive bank accounts (e.g. investment banks, state pensions, school districts, etc). The equity markets couldn't satiate the post Internet bubble appetite that bankers had worked up. They needed a bigger market with tighter focus. Mortgages and associated bonds were the new game in town.&lt;br /&gt;&lt;br /&gt;Before anyone knew it, hundreds of billions of dollars in securities were being repackaged (as new derivatives (e.g. CDOs)) and re-rated at ratings higher than the underlying securities' ratings. That was the real trick! Bankers, and corrupt/lame rating's agencies, were turning shit into gold, and selling it back to every industry you could imagine. One thing to note here, Moody's (the bond rating firm) is 20% owned by Warren Buffet. I've forever admired Mr. Buffet but this new awareness has caused me to take a second look at him on my "most admired" list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Pandemic&lt;/span&gt;&lt;br /&gt;Unlike the Internet Boom's relatively scoped collapse around the technology industry, Wall Street had infected one of the largest finance vehicles known to man; mortgages ($15 Trillion worth in 2008). Mortgages, particularly during a housing/interest rate boom, comprise the underpinnings of the private financial industry. They are hugely leveraged debt vehicles. Think about it, you pony up say 20% of a speculative value in a down payment, then pay the rest off over a few decades; crazy! Undermine mortgages, and bad things happen. Enter present day; here we stand, wondering what's next. The money the commoner has invested over the years has shrunk by a full third on average. Nest eggs have cracked. Banks aren't able to lend money for the foreseeable future, and Americans can't buy houses like they used to. Our personal wells of vast amounts of money for consumer spending have dried up.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Now What!?&lt;/span&gt;&lt;br /&gt;Obviously no-one knows, but I predict a rather harsh reality in the coming years. Jobs will be lost. Homes will continue to be foreclosed upon. Housing inventory will shoot through the roof, and their prices will fall. Stratification will find its way back into society; as the "haves" and the "have nots" will become more apparent, now that "having" will be more of a function of one's ability to raise capital/earn money, rather than one's ability to plow a hole into the ground with personal debt. The great normalizer, consumer debt, will be reeled in, and things will get weird.&lt;br /&gt;&lt;br /&gt;Our banking heroes have fallen, and I wonder who will take their place. One thing is for sure, free-market capitalism always finds a way.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2480649650714440521/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2480649650714440521" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2480649650714440521?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2480649650714440521?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/bubble-has-burst.html" title="_The_ bubble has burst." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-5726149967173450391</id><published>2008-11-22T14:31:00.003-07:00</published><updated>2008-11-22T15:08:40.966-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-22T15:08:40.966-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNIP" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Anatomy of a shared memory node failure.</title><content type="html">After my &lt;a href="http://one.valeski.org/2008/11/teams-rookies-vets.html"&gt;previous post about teams&lt;/a&gt;, I quickly received several requests to provide more details. Voici!&lt;br /&gt;&lt;br /&gt;Gnip's redundant; you can walk up to any of our cloud instances, vaporize it, and Gnip chugs along its merry way. We use shared memory (via TerraCotta) to replicate memory across nodes. As you can imagine, shared memory across network nodes isn't all that cheap. Just like anything else, when its over used, things can melt down.&lt;br /&gt;&lt;br /&gt;One of our customers started injecting hundreds of thousands more actors into their Filter rules than we'd tested for in a long time (or... ever, in the true production environment (there's a "you can never actually replicate production conditions in your staging/demo/review environment" blog post brewing in me). This caused one of the nodes to start working really hard to build the objects to support the additional actors. In turn, TerraCotta had to keep up its replication, going on its own merry way. The number, and size, of objects we were asking TC to manage (across clients, and three TC nodes as well (one primary, one secondary, and a third for good measure) caused too much lock contention across the system, and TC clients started dropping (heartbeats couldn't be kept up between clients and servers) because they were spending too much time processing locks. Once a TC client drops out of rotation, it has to be bounced in order to reconnect to the TC server. (in shared memory situations, you can't let your objects between client and server get "too" far away from eachother, otherwise you have bigger problems).&lt;br /&gt;&lt;br /&gt;So, a node was dropping out of the TC network, we'd bounce it, it would come back up, try to recreate all the objects again, and crater. We'd restart it, it'd come back up.... rinse repeat, rinse repeat. Viscous cycle.&lt;br /&gt;&lt;br /&gt;We resolved the issue by dramatically (several orders of magnitude) reducing the number of objects TC was managing in this code path. We optimized the object model to only keep the bare minimum in TC in order to keep our cherished clustered approach; the rest of the state stays put in local VM space, and is not shared.&lt;br /&gt;&lt;br /&gt;There were other side effects floating around which got cleaned up in the process which was nice. We reduced some function call times from 45 minutes at their worst, to 45 seconds. We reduced our TC data set size from 16G to a few hundred meg. In the process, we also upgraded to TerraCotta 2.7 which  further reduced in-memory, and on-disk, data set sizes.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5726149967173450391/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5726149967173450391" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5726149967173450391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5726149967173450391?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/anatomy-of-shared-memory-node-failure.html" title="Anatomy of a shared memory node failure." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3997552225855219813</id><published>2008-11-22T06:00:00.002-07:00</published><updated>2008-11-22T06:29:16.026-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-22T06:29:16.026-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNIP" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">Teams, Rookies &amp; Vets</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3023/3040524199_a511678945_m.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 180px;" src="http://farm4.static.flickr.com/3023/3040524199_a511678945_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;A week ago, almost to the minute, the following message was generated by an internal Gnip monitoring server, and sent to the person on-call.&lt;br /&gt;&lt;h1 class="YfMhcb"&gt;&lt;span style="font-size:100%;"&gt;&lt;span id=":270" class="VrHWId"&gt;** PROBLEM alert - production&lt;wbr&gt;-head2/pro&lt;wbr&gt;duction-he&lt;wbr&gt;ad2-gnip is CRITICAL **&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;It was the start to a very long, non-stop, few days at Gnip.&lt;br /&gt;&lt;br /&gt;Much of the rapport on your team gets defined in moments like this. Your team's ability to solve hard, live, problems is thrust into the foreground. About five hours into the ordeal, my appreciation for having focused very hard on bringing software veterans into Gnip was peaking. The problem was being sliced and diced, and the collective experience of everyone on the team was winnowing things down quickly. "It can't be that!" "It must be this!" "I think we should focus here."&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Step 1: we isolated the symptoms. exactly what was going on!?!&lt;/li&gt;&lt;li&gt;Step 2: we checked configurations/environments&lt;/li&gt;&lt;li&gt;Step 3: we identified potential code inefficiencies&lt;/li&gt;&lt;li&gt;Step 4: we verified probabilities&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Step 5: we placed a bet on what we thought the problem was, and wrote code to address it&lt;/li&gt;&lt;li&gt;Step 6: we watched our hard work pay off; production issue resolved; it was the right bet&lt;/li&gt;&lt;/ul&gt;Knowing which bet to place comes from experience. The only problem with experience at a startup is that it can be expensive. Like so much in life, you get what you pay for. Had Gnip been tilted toward relatively in-experienced, in-expensive, junior team members, what turned out to be a production blip, could have been a true nightmare for the company.&lt;br /&gt;&lt;br /&gt;Glad that problem is behind us, and we all have a nice new chunk of experience to put into the bag of tricks for future use.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3997552225855219813/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3997552225855219813" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3997552225855219813?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3997552225855219813?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/teams-rookies-vets.html" title="Teams, Rookies &amp; Vets" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-5061450031059007829</id><published>2008-11-07T11:03:00.002-07:00</published><updated>2008-11-07T11:24:05.685-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-07T11:24:05.685-07:00</app:edited><title type="text">Load me, tease me, please me.</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gopaultech.com/files/2008/03/bill-gates-mugshot.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 226px; height: 168px;" src="http://gopaultech.com/files/2008/03/bill-gates-mugshot.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Someone kicked computer start/restart/boot times into the media again. Last time I saw this much mainstream media coverage on this topic was a decade or so ago; before I had turned into a Mac user. To cut to the chase, if you're tired of booting/restarting your computer, just buy a Mac which doesn't need rebooting much.&lt;br /&gt;&lt;br /&gt;The conversation is akin to a problem we faced at Netscape many moons ago; software load times. When we were battling it out with Microsoft's IE browser, we kept adding features, and hence size, to the binaries that had to load for the app to run; it became a problem. It became a &lt;span style="font-weight: bold;"&gt;real&lt;/span&gt; problem considering more and more of IE code was being baked into core operating system libraries and components, which are loaded into memory at boot-time, not when you fire up IE. Because of the way Netscape was loading it's code, it was much slower to "start" than IE (orders of magnitude slower). Our response was to start loading base libs at OS start; in effect "pre-loading" all the code before the user fired up Netscape. It worked great; solved the problem.&lt;br /&gt;&lt;br /&gt;The same model applies to operating systems and their state. If you're having to un-load (shutdown) and load (startup/reboot) OS libraries and components, guess what, you're doomed to incredibly slow startup times. I see a few solutions to this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run/use an operating system that doesn't leak enough memory or lock-up often enough for a "long boot time" to be an issue. If you're restarting your computer once a week (or more), the start time really matters. If you're restarting your computer once a month, it doesn't matter so much. Switch to Mac. Why *nix based OSes don't crash/leak as much as Windows is a topic that's beaten to death; I won't beat it more here.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build OSes that don't need much code to start.&lt;/li&gt;&lt;li&gt;Dynamically load libs on demand (this is related to the previous idea). This one helps, but reality is lots of code needs to load to bring an OS up, so it often doesn't buy you much.&lt;/li&gt;&lt;li&gt;Build faster hardware; faster memory, faster solid-state drives, etc. This one's expensive and takes big science brains (rare).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Unless the computer industry tries to come up with new separations of church and state between hardware, operating system, and apps, some combination of above is really all you can do. I do see the need for such feature reach operating systems going away with time. We use probably 5% max of the code that actually comprises an operating system. Specialized devices will eventually win as computer use cases continue to winnow. Most consumers don't need computers that can run database applications, email clients, graphics intensive games, etc.&lt;br /&gt;&lt;br /&gt;Now that I wrote that, I think that's the path. 20 years from now, today's OS will be a relic. Hardware will be specialized, and hence its software will be too. Mobile phone OSes are a good example of this kind of evolution.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5061450031059007829/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5061450031059007829" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5061450031059007829?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5061450031059007829?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/load-me-tease-me-please-me.html" title="Load me, tease me, please me." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3479436083047853925</id><published>2008-11-05T09:17:00.004-07:00</published><updated>2008-11-05T09:35:10.591-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-05T09:35:10.591-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="conference" /><category scheme="http://www.blogger.com/atom/ns#" term="glue" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="defrag" /><title type="text">From Defrag to Glue; simplicity</title><content type="html">I was on the last &lt;a href="http://defragcon.com/2008/"&gt;Defrag '08&lt;/a&gt; panel yesterday and I had a blast! We were talking about "&lt;a href="http://www.foundrygroup.com/blog/archives/2008/03/theme-glue.php"&gt;glue&lt;/a&gt;" as a promotion of next year's &lt;a href="http://gluecon.com/"&gt;Glue conference&lt;/a&gt;. Geir Magnusson and Aaron Fulkerson were on the panel with me and we had a fun conversation, well stoked by moderator Seth Levine, around the new way to build apps and the various glue components that keep those apps together.&lt;br /&gt;&lt;br /&gt;It was a joy to hear Aaron talk about how they've built Mindtouch. It struck a cord with me as it's precisely how we've built Gnip; simply. Bare metal HTTP/REST (we've even built a custom, lightweight, REST layer) is where it's at! Be wary of heavy frameworks to scaffold all of your business logic. Write the code you need, and run it.&lt;br /&gt;&lt;br /&gt;The conversation evolved into some SOAP bashing, and how apps should/will be built going forward; always a fun conversation.&lt;br /&gt;&lt;br /&gt;The conversation got me excited for &lt;a href="http://gluecon.com/"&gt;GlueGon&lt;/a&gt;. I can't wait to dig in even more!&lt;br /&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:85%;color:#000000;"&gt;&lt;/span&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3479436083047853925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3479436083047853925" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3479436083047853925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3479436083047853925?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/from-defrag-to-glue-simplicity.html" title="From Defrag to Glue; simplicity" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3021930188200604865</id><published>2008-11-03T11:50:00.003-07:00</published><updated>2008-11-03T12:14:42.776-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-03T12:14:42.776-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title type="text">By default...</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.shiny.cz/achiles/images/scr_prefs.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer; width: 195px; height: 195px;" src="http://www.shiny.cz/achiles/images/scr_prefs.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Software is all about default behavior. From pure infrastructure plays (e.g. &lt;a href="http://gnipcentral.com"&gt;Gnip&lt;/a&gt;) to general population consumer facing applications (e.g. Apple products).&lt;br /&gt;&lt;br /&gt;Whether you want to call your software's configuration, "preferences," "settings," "configuration," or "config," they're all the same, and the choices you make about their default values define your product, and how your product will be used by the vast majority of your users.&lt;br /&gt;&lt;br /&gt;If you screw up a "default" setting, from whether or not a calendar entry should "remind" the user that it's there, to how XML is generated, you will find that out when your users engage with your product; or not, as the case may be.&lt;br /&gt;&lt;br /&gt;Coming from Netscape/Mozilla, one of the most configurable products known to man (just type "about:config" into your URL bar to see what I'm talking about), and now being a heavy Apple product user (where giving the user options is considered a design flaw), I'm trying to strike the right balance between default behavior decisions and giving end users control of Gnip.&lt;br /&gt;&lt;br /&gt;By default, do the right thing.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3021930188200604865/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3021930188200604865" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3021930188200604865?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3021930188200604865?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/11/by-default.html" title="By default..." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-5972314165040786409</id><published>2008-10-25T09:16:00.007-06:00</published><updated>2008-10-25T14:43:16.292-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-25T14:43:16.292-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="location" /><category scheme="http://www.blogger.com/atom/ns#" term="brightkite" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title type="text">BrightKite for iPhone.</title><content type="html">The fact it took &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BrightKite&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Loopt&lt;/span&gt; as long as it did to distribute their iPhone apps must be some indication as to how niche the market continues to be. That's a bummer because location is going to be the next axis upon which the web tilts. GPS devices in rental cars are the first sign of more of the general population being exposed to apps that do cool things with &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;latitude&lt;/span&gt;, longitude (and eventually altitude). However, we're still a long way away from "mainstream" &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;geocoding&lt;/span&gt; devices/applications.&lt;br /&gt;&lt;br /&gt;Anyway, a few weeks ago I &lt;a href="http://one.valeski.org/2008/10/loopt-for-iphone-wow.html"&gt;blogged about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Loopt's&lt;/span&gt; iPhone app&lt;/a&gt;; I'm very impressed with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Loopt's&lt;/span&gt; implicit take on my location, layered with my personal description of my location (sort of akin to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;BrightKite's&lt;/span&gt; "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;placemark&lt;/span&gt;"), it's a model that better fits in my brain. Tried as I did to suck my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;BrightKite&lt;/span&gt; friends into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Loopt&lt;/span&gt;, I couldn't. I'd say 10% of the folks I invited are still using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Loopt&lt;/span&gt; today. 60% of them like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;BrightKite's&lt;/span&gt; iPhone/app model better, and the remaining 40% were friends I was trying to introduce to mobile/location apps on their &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;iPhones&lt;/span&gt;, and they're simply not interested (or just had an allergic reaction to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Loopt&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;BrightKite&lt;/span&gt; for iPhone&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;BrightKite's&lt;/span&gt; got some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;UI&lt;/span&gt; hurdles to get over. If you're wondering what the first two buttons you see do, &lt;a href="http://getsatisfaction.com/brightkite/topics/what_are_the_find_me_and_on_buttons_in_the_iphone_app"&gt;checkout this description&lt;/a&gt;. Even my friends who were telling me how great BK was couldn't tell me what those buttons did. I still don't know what all the little "lock" icons on the screens mean. Those are all usability/first-version issues that are easily fixed; which is a good thing.&lt;br /&gt;&lt;br /&gt;What I struggle with in general with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;BrightKite&lt;/span&gt; is it's take on "checking in." They've catered to those who want explicit, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;delineated&lt;/span&gt;, boundaries around sharing their location with others. That's my primary gripe with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;BrightKite&lt;/span&gt; for iPhone; I want an app that just "checks me in" implicitly (maximum one button click). That said, with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;geo&lt;/span&gt;-location in particular, most users do indeed want explicit control over sharing their location. I'm an &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_21"&gt;aberration&lt;/span&gt; in this respect, and I know that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Implicit &amp;amp; Explicit&lt;/span&gt;&lt;br /&gt;The issue of whether to actually share one's location implicitly or explicitly aside (the case can easily be made for that to be an explicit operation), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;BrightKite's&lt;/span&gt; other features need to become implicit.&lt;br /&gt;&lt;br /&gt;A toggle for auto "Find me" goes too far in trying to comfort the user. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;raison&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;d'etre&lt;/span&gt; for the app is to "find me" and because I have to explicitly share my location, just go ahead and "&lt;span style="font-weight: bold;"&gt;find me&lt;/span&gt;." I'll decide whether or not I want to have my location shared. Exposing this as a top-level &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;UI&lt;/span&gt; element adds clutter and confusion to the experience. Bury this down in settings/preferences if users really want the option to turn it on/off.&lt;br /&gt;&lt;br /&gt;I like the "snap to" concept, but again, to me that's just something that should "just work" and not be an explicit toggle that I can turn on/off. If you're trying to pinpoint me, and you have an idea of where I am, just use that idea. If I have to manually correct it, I will. Obviously use my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;placemarks&lt;/span&gt; as the first order match (which &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;BrightKite&lt;/span&gt; confirmed they're doing already), but the relationship between "pick a place" (in the iPhone app) and "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;placemarks&lt;/span&gt;" (on the website) is unclear.&lt;br /&gt;&lt;br /&gt;Proprietary messaging in apps today, particularly phones, is extraneous. Just direct &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;SMS&lt;/span&gt; in the future please; no need to reinvent this wheel.&lt;br /&gt;&lt;br /&gt;Where's the map? A social application based on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;geo&lt;/span&gt;-location screams for the primary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;UI&lt;/span&gt; metaphor to be map driven.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;In conclusion...&lt;/span&gt;&lt;br /&gt;All in all, the top half of the default screen of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;BrightKite&lt;/span&gt; app, the "I am..." section, should just go away. All of that can be implicitly &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_33"&gt;derived&lt;/span&gt;, either based on my past experiences (e.g. check-ins), or via matching on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;backend&lt;/span&gt;. I think &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;Loopt&lt;/span&gt; has nailed the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;UI&lt;/span&gt; metaphors and the right level of location/sharing abstraction. I think &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;BrightKite&lt;/span&gt; is providing lots of privacy-level/visibility and control. Undoubtedly users are asking for that control, but privacy can be a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_38"&gt;rat hole&lt;/span&gt; and I'd be careful building an app around giving the user everything they want on this topic. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;Loopt's&lt;/span&gt; taking some risks in this regard, but I think they're the right risks. Ultimately the end-user will decide.&lt;br /&gt;&lt;br /&gt;For now, I'm using both services, and I suspect I'll have to leave &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;Loopt&lt;/span&gt; in the ditch pretty soon because most of my friends are using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;BrightKite&lt;/span&gt;. These are social applications and their usefulness is primarily driven by how many of your friends are using them. I'm just stoked that there's competition in this space. Amazing things will come from location enabled applications.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5972314165040786409/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5972314165040786409" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5972314165040786409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5972314165040786409?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/10/brightkite-for-iphone.html" title="BrightKite for iPhone." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-4798209275347153602</id><published>2008-10-22T21:49:00.002-06:00</published><updated>2008-10-22T22:23:55.812-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-22T22:23:55.812-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hiring" /><category scheme="http://www.blogger.com/atom/ns#" term="GNIP" /><title type="text">Job Applicant Rejection</title><content type="html">&lt;a href="http://gnipcentral.com/"&gt;Gnip&lt;/a&gt; has a lot of candidates applying for &lt;a href="http://gnipcentral.com/jobs.html"&gt;various roles we're hiring for&lt;/a&gt;, and that means lots of applicants won't make the cut; simple law of averages (not to mention a high bar). That means I have the unfortunate responsibility of letting many candidates know that things aren't going to work out. I've been doing this a lot recently, so I thought I'd write about the process.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have the following hiring process at Gnip, each step dependent on the previous one going well:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;1on1 phone screen. 30 minutes.&lt;/li&gt;&lt;li&gt;30-45 minute coffee/tea with the whole team. informal get-to-know-eachother. casual conversation about who we are, who the candidate is, and everyone gets a sense of technical depth and capability.&lt;/li&gt;&lt;li&gt;4 hour on-site pair programming session. heavy technical discussion, and coding session working on actual code that Gnip needs to deploy; feature, bug, or whatever.&lt;/li&gt;&lt;li&gt;Job offer&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;If any one of the three steps leading up to a job offer doesn't lead to the next step, I communicate that fact to the candidate (usually over email). What gets said in that communication is generally never easy to say. Some candidates wind up not liking Gnip along the way, and for them, hearing that we weren't interested yields a sigh of relief as they got an easy way out of having to tell us they weren't interested after all. Often this isn't the case however, and I have the un-enviable responsibility of telling someone things aren't going to work out. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Describing exactly why they aren't going to work out is not easy; "it's not you, it's me" doesn't fly. Folks always say they want the brutal, honest, truth (I know that's what I would want), but delivering that on too deep and analytical a level, can often open up a conversation the barer of "bad news" doesn't have time for. Sometimes a declined candidate will want to discuss why our perspective was wrong, or why they were having an off day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're in the position of having to tell someone "no," it's important to be decisive, clear, and to bring closure immediately. I also feel it's important to provide constructive feedback so a candidate has at least some information they can use to understand why things weren't a great fit. Perhaps they have a misconception about how they project themselves, or their skill-set, that they may want to "fix." Giving them enough to go on, I feel, is helpful and important.&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/4798209275347153602/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=4798209275347153602" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4798209275347153602?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4798209275347153602?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/10/job-applicant-rejection.html" title="Job Applicant Rejection" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3296070221915592554</id><published>2008-10-13T19:41:00.003-06:00</published><updated>2008-10-13T20:14:12.039-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-13T20:14:12.039-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="location" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title type="text">Loopt for iPhone; wow</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img150.imageshack.us/img150/1078/whereschamchamcopywr5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://img150.imageshack.us/img150/1078/whereschamchamcopywr5.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you don't want to see a grown man gush like a tween at a Britney Spears concert, stop reading.&lt;br /&gt;&lt;br /&gt;I've been a sucker for the pairing of lat/lng based data/apps for many years. Threading location into the fabric of the web "only makes sense." From my first &lt;a href="http://valeski.org/BoulderDeeds.html"&gt;mashup with Google's Map API&lt;/a&gt;, to my &lt;a href="https://buy.garmin.com/shop/shop.do?cID=142&amp;amp;pID=349"&gt;Garmin Forerunner 305&lt;/a&gt; (and &lt;a href="http://trail.motionbased.com/trail/user/valeski"&gt;associated activities&lt;/a&gt;) I've taken the Geo location bait; hook line and sinker.&lt;br /&gt;&lt;br /&gt;The advent of a "location" API on the iPhone (firmware 2.+) warmed my heart as it coupled a device I love (and hate at times) with lat/lng. Sadly, the &lt;a href="http://www.apple.com/iphone/features/appstore.html"&gt;Apple AppStore&lt;/a&gt; has been shockingly slow to pickup location aware applications (aka developers haven't written good stuff, or if they have they've kept it off the AppStore). I was further blown-away at Flickr's continued inability to automatically geo locate images I take on my iPhone, into "my flickr map." That one continues to baffle me; especially given that the majority of mobile phone pics uploaded to Flickr come from iPhones.&lt;br /&gt;&lt;br /&gt;While &lt;a href="http://www.loopt.com/"&gt;Loopt&lt;/a&gt; failed to email me when their iPhone app finally went live, I did pull it down yesterday, and I have to say it's the poster-child of iPhone integration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;The Review&lt;/span&gt;&lt;br /&gt;Decoupling where I say I am, from the actual GPS location was brilliant. You may see where I am on a map, but I never actually reveal the abstracted sense of where I am unless I want to. Granted, you can deduce it within a few yards very quickly, the separation was a solid way of giving me control over where the software says I am, and how I characterize my location. For example, Loopt knows I'm at latX and lngY, but I get to label that how I want. That can be "in Boulder," or "at my house;" my choice. Subtle, but powerful line to draw.&lt;br /&gt;&lt;br /&gt;Of course, full control over whether my location is automatically logged, or manual; a given when it comes to location sensing/publishing.&lt;br /&gt;&lt;br /&gt;Integration with the iPhone's contact list and mashing it up with other known Loopt users was gorgeous. The "add friends" button gives me multiple options, one of which is "from address book." Clicking on that shows me who in my address book is already on Loopt, and I can just check them off and "invite" with incredible ease (or invite folks not already on Loopt of course). Apps like these are only interesting if a critical mass of your friends are on them (same old social app story here).&lt;br /&gt;&lt;br /&gt;Search for restaurants/businesses has some great defaults right out of the box, and displays &lt;a href="http://www.yelp.com/"&gt;Yelp! &lt;/a&gt;reviews on map markers right out of the gate; very well done.&lt;br /&gt;&lt;br /&gt;Fantastic UI layout with tabs illustrating just what matters to me: map (where I am, and where my friends are), list (same thing in list view), what's up (a textual/comment/picture view of what's going on, and an opportunity for me to leave a "notice"/message about what I'm up to). Clicking on various UI elements does what you'd expect. Great high-level UI abstractions and "at a glance" usefulness, with anticipated deep-dive when I want it.&lt;br /&gt;&lt;br /&gt;Ping functionality "pings" friends: basically a way of saying "here's where I am... come join me if you want." Dirt simple, but powerful.&lt;br /&gt;&lt;br /&gt;Messaging friends, leverages iPhone's native SMS client. Call'ing friends uses iPhone's phone. And on and on. Basically, whenever you think the app should leverage existing facilities, it does. Loopt avoided the constant pitfall of building everything yourself. As a result, it's a hallmark for iPhone, multi-service/API, integreation. You can imagine the "how do we build a great Loopt app for the iPhone" product brainstorm, and everything that got put on the whiteboard, got implemented.&lt;br /&gt;&lt;br /&gt;Gone are the days where I have to explicitly "checkin" to a location via SMS. Too much typing. Location feels like it's just a part of my device experience now and I can choose to not say anything about where I am, or post comments about it and add pictures.&lt;br /&gt;&lt;br /&gt;While we're all enamored with the progress of "web apps," Loopt's iPhone App is why client-side software (coupled with web services obviously) is often still the winning combination.&lt;br /&gt;&lt;br /&gt;Can't wait to see &lt;a href="http://brightkite.com/"&gt;Brightkite&lt;/a&gt; launch the next salvo. A high bar has been put in place.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3296070221915592554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3296070221915592554" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3296070221915592554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3296070221915592554?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/10/loopt-for-iphone-wow.html" title="Loopt for iPhone; wow" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-4637528565380396270</id><published>2008-10-11T19:57:00.004-06:00</published><updated>2008-10-11T20:26:10.572-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-11T20:26:10.572-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title type="text">"If there's gold in them hills..."</title><content type="html">"If there's gold in them hills, people will find it."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.ghostcowboy.com/files/images/goldmine_gc.preview.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px;" src="http://www.ghostcowboy.com/files/images/goldmine_gc.preview.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm sure that quote's been used many times relative to software applications, but it keeps coming up in my life so I thought I'd take a moment to blog about what it means.&lt;br /&gt;&lt;br /&gt;If you knew there was gold in that hill over there, you'd go get it. Software's the same thing. If you know there's gold (meaning something really fun/useful) in an application, you're going to do whatever you have to do in order to use it. Obviously, that's a tad absolute, but bare with me. You'll pay money... you'll register for it... you'll fill out a profile... etc.&lt;br /&gt;&lt;br /&gt;People spend inordinate amounts of time trying to streamline the barrier to entry to their applications. Minimizing registration processes and building entire API abstractions (e.g. Open Social) on top of social applications is a constant pastime these days, and it's eating up mass amounts of energy that is often better spent on your true value proposition. I'd like to suggest that if you believe the barrier to entry to your consumer facing application is either the user creating an account, or filling out their profile information (for the 100th time), your application isn't worth your target demographic's time.&lt;br /&gt;&lt;br /&gt;Streamlining these processes (OpenID, oAuth, Open Social, and the like) is a nice-to-have feature, but it ain't going to make or break your product.&lt;br /&gt;&lt;br /&gt;Think about the "real-life" parallels. You'll spend an hour in line at the Department of Motor Vehicles in order to get your driver's license so you can drive. You'll spend 15 minutes on-hold to get the concert tickets you really want. Users will spend large amounts of time to get to your product if it's worth it, so focus on your _product_, not the one-time chunk of time a user has to invest to get to it. I gave Fly Clear scans of my eye's iris, and my fingerprints in hopes of saving a few extra minutes in-line at the airport (not to mention the intense/lengthy application process).&lt;br /&gt;&lt;br /&gt;User's have spent the past several years creating potentially hundreds of accounts to get to what they want online. For the truly worthwhile products (facebook, myspace, amazon, etc), they'll invest hours on their "profiles." These nuissances have become understood and are accepted patterns (unfortunately).&lt;br /&gt;&lt;br /&gt;OpenID, oAuth, &amp;amp; Open Social are fundamental as infrastructure components, but don't get lost in your product roadmap thinking you need any of these to make or break your application. The only exception would be if your application's target consumption is within an environment that only supports these standards. Smart people are working to make these standards easy to implement. Smart people can implement them without much energy. But, again, if you're finding your spending a lot of time building these things into you product in order make your product successful, pack it in, and go find a different product idea.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/4637528565380396270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=4637528565380396270" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4637528565380396270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4637528565380396270?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/10/if-theres-gold-in-them-hills.html" title="&quot;If there's gold in them hills...&quot;" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-65789299037331142</id><published>2008-10-01T15:06:00.004-06:00</published><updated>2008-10-01T15:26:01.230-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-01T15:26:01.230-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GNIP" /><title type="text">Gnip 2.0, and feeling good.</title><content type="html">Posts like this are not my style, but I can't contain this one. Last night around 10pm MDT we released Gnip 2.0. In the past 15 hours, we've gotten the following public feedback from our users (engineers), speculators, technologists, and various media. This feels.... good. Of course you can view the live stream of twitter comments about Gnip &lt;a href="http://search.twitter.com/search?q=gnip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some great tweets:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;from a guy in Switzerland that demonstrated Gnip to his Ruby user group just hours after we went live with 2.0. "&lt;span id="msgtxt942209078" class="msgtxt en"&gt;demo is over. &lt;a href="http://search.twitter.com/search?q=%23gnip"&gt;#&lt;b&gt;gnip&lt;/b&gt;&lt;/a&gt; and &lt;a href="http://search.twitter.com/search?q=%23sinatra"&gt;#sinatra&lt;/a&gt; presented to &lt;a href="http://search.twitter.com/search?q=%23RubyonRailsUserGroupSwitzerland"&gt;#RubyonRailsUserGroupSwitzerland&lt;/a&gt;. Thanks to the developer of the #ruby-&lt;b&gt;gnip"&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt942209078" class="msgtxt en"&gt;&lt;b&gt;"&lt;/b&gt;&lt;/span&gt;&lt;span id="msgtxt942149887" class="msgtxt en"&gt;bit embarrassing, new Esendex SDK doesn't easily allow mock api for unit testing, &lt;b&gt;Gnip&lt;/b&gt; have done a better job, update looms before public"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt942149887" class="msgtxt en"&gt;"&lt;/span&gt;&lt;span id="msgtxt942048797" class="msgtxt en"&gt;way to go &lt;b&gt;Gnip&lt;/b&gt; on the 2.0 release!"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt942003359" class="msgtxt en"&gt;&lt;b&gt;"Gnip&lt;/b&gt; 2.0 hits the ground. C'est magnifique, no? ehhhhhh oui. Bien sur."&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt942003359" class="msgtxt en"&gt;"&lt;/span&gt;&lt;span id="msgtxt941940358" class="msgtxt de"&gt;&lt;b&gt;Gnip&lt;/b&gt;: neue Version, kostenpflichtig für kommerzielle Anbieter"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt941940358" class="msgtxt de"&gt;"&lt;/span&gt;&lt;span id="msgtxt941922109" class="msgtxt en"&gt;wow &lt;b&gt;Gnip&lt;/b&gt; 2.0 pushing the full twitter public feed via XMPP, that changes things."&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt941922109" class="msgtxt en"&gt;"&lt;/span&gt;&lt;span id="msgtxt941821100" class="msgtxt en"&gt;A web troika story abut &lt;b&gt;Gnip&lt;/b&gt; and content aggregation"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt941821100" class="msgtxt en"&gt;"&lt;/span&gt;&lt;span id="msgtxt941725389" class="msgtxt en"&gt;Happy days, &lt;b&gt;Gnip&lt;/b&gt; have updated their API. TIme to contribute to their C# library"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="msgtxt941725389" class="msgtxt en"&gt;"&lt;/span&gt;Gnip 2.0がビジネスモデル付きでロンチ:  複数のSNS間でデータの受け渡しができるというサービスGnipが、今夜（米国時間9/30.. &lt;a href="http://tinyurl.com/4u2s8h" rel="nofollow" target="_blank"&gt;» link to TechCrunch Japanese  アーカイブ    » Gnip 2.0がビジネスモデル付きでロンチ&lt;/a&gt;"&lt;/li&gt;&lt;/ul&gt;Some great (perhaps a tad overzealous) comments from various media stories about the launch:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Having read the documentation, this sounds pretty cool. I predict it will signal the death of rss feeds. Applications will essentially behave like live stock tickers rather than explicitly soliciting data feeds."&lt;/li&gt;&lt;li&gt;"Well done GNIP. You rock!"&lt;/li&gt;&lt;li&gt;"Congrats Eric at team! it’s the next gen of RSS.  I finally get the name too."&lt;/li&gt;&lt;li&gt;"By the time other people even begin realize how they’ve embedded themselves into the very framework of the entire social web, they’ll be a billion dollar company. They’re going to get as big as the social web itself."&lt;/li&gt;&lt;/ul&gt;That's how releases are supposed to go. So lucky to be working with this team.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/65789299037331142/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=65789299037331142" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/65789299037331142?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/65789299037331142?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/10/gnip-20-and-feeling-good.html" title="Gnip 2.0, and feeling good." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-3812483729312699840</id><published>2008-09-25T06:00:00.002-06:00</published><updated>2008-09-25T06:25:48.472-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-25T06:25:48.472-06:00</app:edited><title type="text">Pinch me moment</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://web.mit.edu/abrownin/www/gbprelim/images/evil_smiley.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://web.mit.edu/abrownin/www/gbprelim/images/evil_smiley.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you don't like over-the-top positive/happy posts, stop reading. I don't write these often because they're generally lame, but had to do it this morning.&lt;br /&gt;&lt;br /&gt;How much can go well in a 24 hour period?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Yesterday was my birthday.&lt;/li&gt;&lt;li&gt;My kids made me fabulous cards.&lt;/li&gt;&lt;li&gt;My wife made me a cake and took me out for a great dinner at one of my favorite restaurants; &lt;a href="http://www.latelierboulder.com/"&gt;L'Atelier&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A company I co-founded, &lt;a href="http://gnipcentral.com/"&gt;Gnip&lt;/a&gt;, had a board meeting in which some incredibly good stuff was finalized (more in coming weeks).&lt;/li&gt;&lt;li&gt;Some friends and I have pulled together a unique way to draw programming talent from other parts of the country to Boulder; &lt;a href="http://boulder.me/"&gt;boulder.me&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;I won a &lt;a href="http://www.coloradostartups.com/2008/09/16/auctioning-my-google-chrome-comic-book/"&gt;Google Chrome comic book at auction&lt;/a&gt; (this is not an indorsement for Chrome)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some important friendships have found a healthier place for all involved.&lt;/li&gt;&lt;li&gt;Hiked Sanitas with a bunch of friends.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Many moons ago I left Boulder to go do interesting things at Netscape in Silicon Valley. It was fun... we changed things. But... the Bay Area became a traffic infested, car driving, grind. No longer worth hanging out there after 3.5 years, we came back to Boulder in the late '90s. I miss a lot of the Valley world. I'd long hoped to mash San Francisco together with Boulder, and it feels like it's finally happening. Just the right amount of mash though; a dash.&lt;br /&gt;&lt;br /&gt;My home, and work, lives are in the place I love... home... Boulder.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3812483729312699840/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3812483729312699840" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3812483729312699840?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3812483729312699840?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/pinch-me-moment.html" title="Pinch me moment" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-6216659409401445761</id><published>2008-09-19T19:51:00.001-06:00</published><updated>2008-09-19T19:53:31.792-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-19T19:53:31.792-06:00</app:edited><title type="text">Meme(me)</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iPi569bVVoc/SNRXghRDjkI/AAAAAAAAABs/41QIoyqCDZ8/s1600-h/Photo+109.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_iPi569bVVoc/SNRXghRDjkI/AAAAAAAAABs/41QIoyqCDZ8/s320/Photo+109.jpg" alt="" id="BLOGGER_PHOTO_ID_5247915681990807106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Via &lt;a href="http://www.0xdeadbeef.com/"&gt;Chris&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; 1. Take a picture of yourself right now.&lt;br /&gt;2. Don’t change your clothes, don’t fix your hair…just take a picture.&lt;br /&gt;3. Post that picture with NO editing.&lt;br /&gt;4. Post these instructions with your picture.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/6216659409401445761/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=6216659409401445761" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6216659409401445761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6216659409401445761?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/mememe.html" title="Meme(me)" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_iPi569bVVoc/SNRXghRDjkI/AAAAAAAAABs/41QIoyqCDZ8/s72-c/Photo+109.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-5349738716292555224</id><published>2008-09-16T15:48:00.003-06:00</published><updated>2008-09-16T15:52:27.085-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-16T15:52:27.085-06:00</app:edited><title type="text">Code Head</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i1.iofferphoto.com/img/item/587/442/81/o_iC3NIiGkdUnsrqY.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://i1.iofferphoto.com/img/item/587/442/81/o_iC3NIiGkdUnsrqY.jpg" alt="" border="0" /&gt;&lt;/a&gt;If you've ever written code before, you've experienced "code head." If previous statement is true, and you've been in a relationship with someone else, then they've experienced you with "code head." If you string together sentences with operators like "and," "or," "not," "true," and "false," then you've experienced "code head."&lt;br /&gt;&lt;br /&gt;It's not like a cold you can catch, or some disease, but it is a state of mind that impacts the people around you when you have it. It's the result of being heads-down in programming, math, or data analysis long enough that your brain continues to loop and process logic problems long after you've left the keyboard. Guess what!? If you have "code head" you're generally not fun to be with until it goes away.&lt;br /&gt;&lt;br /&gt;If you're around others (say back home with the family, or out to happy-hour with friends) with "code head," it's obvious, and you aren't interacting with everyone else the way you do when you don't have "code head." You appear sluggish, and detached (because you ARE), and there's an impedance mismatch between you and everyone else.&lt;br /&gt;&lt;br /&gt;If you find yourself around someone with "code head," either break off and re-engage at a later date, or help them get out of it by piquing their interest in another topic. NOTE: the latter can be very difficult.&lt;br /&gt;&lt;br /&gt;Hmmm, is this a long way of describing someone being distracted? Oh well... my friend &lt;a href="http://www.electromute.com"&gt;Ingrid&lt;/a&gt; used the term "code head" today, and I was compelled to write about it.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5349738716292555224/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5349738716292555224" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5349738716292555224?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5349738716292555224?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/code-head.html" title="Code Head" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2366480538219100714</id><published>2008-09-15T19:50:00.003-06:00</published><updated>2008-09-15T20:10:24.764-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-15T20:10:24.764-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="clouds" /><title type="text">Clouds &amp; Inverse Sunk Cost Arguments</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.fishbacknature.com/images/sunk_boat.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.fishbacknature.com/images/sunk_boat.jpg" alt="" border="0" /&gt;&lt;/a&gt;Over the past couple of weeks I've had conversations with several folks about &lt;a href="http://one.valeski.org/2008/05/gnips-head-is-in-clouds.html"&gt;Gnip leveraging Amazon's Cloud services&lt;/a&gt;, and the fact that they are not.&lt;br /&gt;&lt;br /&gt;The vast majority of the time it is clear that the other party is not using the cloud because they've already invested so much in their existing infrastructure, and that they're intellectually justifying sticking with their current solution. That said, if your back-end is mature, baked, and generally static, then the financial math likely does justify avoiding the Cloud, but if you're a relatively young application, the Cloud is your friend.&lt;br /&gt;&lt;br /&gt;There are certainly times when someone truly has an application that requires physical hardware ownership/leasing, but they are the exception for sure.&lt;br /&gt;&lt;br /&gt;Many times folks convince themselves, and their bosses, that they need their rigid, generally expensive, physical hardware (self, or third party, managed) infrastructure, because of their unique high performance needs. So few applications today require "on the iron" cross-machine latencies and processing speeds, and it's embarrassingly obvious at times; does your consumer facing website really need to be served from hardware you own? Don't kid yourself, it doesn't.&lt;br /&gt;&lt;br /&gt;If you've already sunk mountains of money into leasing co-lo services, or buying and hosting hardware yourself, and staffing a team to manage them, acknowledging that such cost is now sunk, and that you could/should move your infrastructure into the cloud is a hard thing to do. However, the industry evolves, and it might be time for you to do so as well.&lt;br /&gt;&lt;br /&gt;I'm clearly sold on "the Cloud." As a start-up, the flexibility in being able to setup/tear-down dozens of machine instances to support a bump in traffic, or to perform load tests, is a joyous thing. Tough conversations with a managed infrastructure provider about short/long term contracts, or the Operations team, are a thing of my past, and I'll never go back.&lt;br /&gt;&lt;br /&gt;If you're avoiding "the Cloud" because you already spent so much on your infrastructure, do yourself a favor and re-evaluate.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2366480538219100714/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2366480538219100714" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2366480538219100714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2366480538219100714?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/clouds-inverse-sunk-cost-arguments.html" title="Clouds &amp; Inverse Sunk Cost Arguments" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-1596388647168391784</id><published>2008-09-13T13:47:00.003-06:00</published><updated>2008-09-13T13:56:46.536-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-13T13:56:46.536-06:00</app:edited><title type="text">Small World Experience</title><content type="html">Every now and then technology works. It's wild when it does. I had such an experience yesterday that made me realize how small the world has become. None of below is remotely close to mainstream (I need to do another blog post on technologies we "think" are mainstream, but are far from it, e.g. RSS), but it was an amazing experience.&lt;br /&gt;&lt;br /&gt;A colleague, &lt;a href="http://kevinmarks.com/"&gt;Kevin Marks&lt;/a&gt;, was sitting in a conference (&lt;a href="http://bearhugcamp.com/"&gt;BearHugCamp&lt;/a&gt;) that he thought &lt;a href="http://gnipcentral.com"&gt;Gnip&lt;/a&gt; (either Eric or I) should be attending. He emailed Eric saying as much, and Eric forwarded the mail to me. Within the email was a link to the live webcast being hosted on &lt;a href="http://www.twit.tv/"&gt;twit.tv&lt;/a&gt;. I clicked the link, click-ed the video into full-screen mode, and I... was... there. Within 60 seconds of Kevin making the suggestion, Gnip was "there." The content was indeed totally relevant, and I had the sense I was "attending" a conference taking place in another state. I gleaned enough to find value, and I moved on.&lt;br /&gt;&lt;br /&gt;Not much to the story, but it made me realize just how far live video feeds have come. Latency isn't much of an issue anymore, quality is high, and full-screen is supported by every player now.&lt;br /&gt;&lt;br /&gt;The machine is evolving.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/1596388647168391784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=1596388647168391784" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/1596388647168391784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/1596388647168391784?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/small-world-experience.html" title="Small World Experience" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-2584822098970510107</id><published>2008-09-01T21:24:00.004-06:00</published><updated>2008-09-01T21:55:06.473-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-01T21:55:06.473-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="gecko" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title type="text">Chrome</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.9jcg.com/tutorials/mario_malagrino/chrome_material/chrome_material_01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.9jcg.com/tutorials/mario_malagrino/chrome_material/chrome_material_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's been a long time coming. Google's impending release of their web browser marks the first notable new browser entry since Apple with Safari. I still think Apple made a big mistake going with Webkit/KHTML for rendering with Safari (over Mozilla Gecko), but what's interesting about Chrome isn't that they chose Webkit too, rather the "fresh look" at building browser in the in the 21st century. It's a different world today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Gecko &amp;amp; Webkit&lt;/span&gt;&lt;br /&gt;I'd prefer modern browsers leverage Mozilla Gecko as it covers more rendering compatibility breadth than other engines for sure, but folks continue to be impressed with Webkit's rendering speed. I don't perceive enough of a speed difference between the two, but load tests indicate otherwise. Whatever. Rendering may indeed be becoming commodity. Hard to imagine, but it is 2008.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Javacript via V8&lt;/span&gt;&lt;br /&gt;Google's choice to go with V8 as a Javascript VM is monumental, and could be a real game changer if Chrome gets any market share (I predict sub 10% for years). Ground up JS engine construction can't be taken lightly, and I am impressed, again, at the perspective; looking at JS engines in today's web app heavy reality. It is kind of incredible that JS UI drag/drop on IE/Mozilla based engines is jaggedy. I mean c'mon. V8's performance could wind up being impressive given that they leverage precise garbage collection, actual machine byte-code compilation and execution, along with hidden classes; all overdue. I wonder how it &lt;a href="http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html"&gt;stacks up against Tracemonkey&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Put It On My Tab&lt;/span&gt;&lt;br /&gt;Breaking pages/tabs down to process-per level is an age old idea, and it'll be neat to see it in the wild. I'm sure it'll have some benefits (obviously execution/memory/crash isolation), but intra-browser expectations we've all grown up with will take time to get right. Simple things like visited link coloring (in _real-time_), cookies, and session history all will have to be synchronized where they often weren't before (though IE started sharing cookies across processes roughly 13 years ago).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Gears &amp;amp; Software Patterns&lt;/span&gt;&lt;br /&gt;I'm most excited at the notion of baked in Gears support. The Gears work Google's been doing of late is the most innovative client-server web app work I've seen. The prospect of this kind of functionality being an integral part (not an add-on) of the browser is revolutionary. Again, here comes that pesky market share penetration challenge. Without server-side apps leveraging Gears functionality natively, it'll be destined to research project status.&lt;br /&gt;&lt;br /&gt;I have to wonder if there's room for Gnip integration either in Gears, or in the browser itself. Event driven actions across the network are a major part of modern web apps, and tighter integration with client-side software could be tasty.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Design&lt;/span&gt;&lt;br /&gt;The UI design stuff is "meh" at best. It's design, and promoting tabs to the top-level UI element feels right, but.... it's design. Whatever. If you don't get it right, someone else will.&lt;br /&gt;&lt;br /&gt;Looking forward to trying it out...</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2584822098970510107/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2584822098970510107" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2584822098970510107?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2584822098970510107?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/09/chrome.html" title="Chrome" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8196699014965996395.post-6032952487401062076</id><published>2008-08-29T14:58:00.004-06:00</published><updated>2008-08-29T15:10:08.195-06:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-08-29T15:10:08.195-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="clouds" /><title type="text">What kind of Cloud is your solution?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/6/62/Cloud_poster.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 229px; height: 252px;" src="http://upload.wikimedia.org/wikipedia/en/6/62/Cloud_poster.png" alt="" border="0" /&gt;&lt;/a&gt;Cirus - What IBM is building.&lt;br /&gt;&lt;br /&gt;Cumulonimbus - Amazon&lt;br /&gt;&lt;br /&gt;Stratus - Mosso&lt;br /&gt;&lt;br /&gt;Cumulus - Google App Engine&lt;br /&gt;&lt;br /&gt;Fog - we've seen a few of these crop up. they're generally random, small, traditional managed hosting providers jumping into the game with 25% baked APIs to run on their virtual slices.</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/6032952487401062076/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=6032952487401062076" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6032952487401062076?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6032952487401062076?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2008/08/what-kind-of-cloud-is-your-solution.html" title="What kind of Cloud is your solution?" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
