<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CUABQncyeip7ImA9Wx5QEkw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395</id><updated>2010-08-30T18:15:53.992-06:00</updated><title>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>189</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/valeski/one" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="valeski/one" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUABRX46fSp7ImA9Wx5QEkw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-2361800932457744274</id><published>2010-08-30T17:49:00.003-06:00</published><updated>2010-08-30T18:15:54.015-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T18:15:54.015-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="exits" /><category scheme="http://www.blogger.com/atom/ns#" term="startup" /><title>Exits; You're Doing It Right</title><content type="html">When it comes to startups, the notion of "exit" is key. You take big risks, often with high dollar amounts of other people's money, and as a result, everyone wants big returns ("exits"). The old exit path (now just a statistical anomaly) was going public (the quintessential use of other people's money); but the IPO market has dried up. IPOs have been traded for acquisition as the next big exit vehicle. As we all know, acquisitions are 50/50 at the end of the day. They can provide good liquidation for folks in the acquired firm (and associated financiers), but from a longevity standpoint, they're track records aren't great. Over the past year, there have been two great exits/acquisitions for a couple of &lt;a href="http://www.techstars.org/boulder/"&gt;TechStars Boulder&lt;/a&gt; firms. While the dollar amounts might not be where we all dream, the downstream effects of these transactions are admirable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Occipital&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.readwriteweb.com/archives/ebay_buys_redlaser_from_boulder_startup_occipital.php"&gt;Occipital sold off one of its products (not the team... not the company mind you) to eBay&lt;/a&gt;, just a few months ago. What's awesome about this is that the team stands independent. They continue to churn out cool products, with their own culture, on their terms. Spinning out a single product for sale is brilliant (and relatively rare); well done guys.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Filtrbox&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.readwriteweb.com/enterprise/2010/01/jive-software-buys-filtrbox-to.php"&gt;Filtrbox sold itself to Jive Software at the beginning of the year&lt;/a&gt;. I was a bit skeptical where this would wind up, but I've watched Jive pour resources into Filtrbox, and solidify their offering around Filtrbox's core competencies; so cool to watch.&lt;br /&gt;&lt;br /&gt;All right in Boulder's backyard.&lt;br /&gt;&lt;br /&gt;Go TechStars! Go smart people!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-2361800932457744274?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2361800932457744274/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2361800932457744274" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2361800932457744274?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2361800932457744274?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/08/exits-youre-doing-it-right.html" title="Exits; You're Doing It Right" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0EFRH4zcCp7ImA9Wx5RFU4.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-8030639368209911478</id><published>2010-08-22T21:33:00.002-06:00</published><updated>2010-08-22T21:53:35.088-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-22T21:53:35.088-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="entrepreneur" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="boulder" /><category scheme="http://www.blogger.com/atom/ns#" term="weather" /><category scheme="http://www.blogger.com/atom/ns#" term="family" /><category scheme="http://www.blogger.com/atom/ns#" term="environment" /><title>Feelin' It In Boulder</title><content type="html">In the "counting my blessings" category, I've been trying to build a blog post about things I'm super excited about these days. That's resulted in delay, so instead I'm just going to do a random splattering of bullets.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mountains - This morning I took my daughter up to the same bouldering problem I was taught on; &lt;a href="http://twitpic.com/2h7chr"&gt;"Monkey Traverse" off Flagstatff.&lt;/a&gt; It's so epic that I drove 10 mins from our house to have this experience with my child. Not a day goes by that I don't look West and think "beautiful." I try hard as a parent to instill in my kids not to take where we live for granted. I'm generally failing AFAICT, but I'm determined to have them understand and enjoy it the way I do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Smart People - "we like our bubble." Dealing w/ a relatively small amount of ignorance day-to-day is a good thing. From political to computer science, I love being surrounded by brain power. And for those that view Boulder as a left-wing haven, while we tilt the voting scale that way, there is a lot of hard-core right-wing'ing here (if that's your thing).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Weather - While the transitions from Summer to Winter, and Winter to Summer often are blips on the calendar, they're intense, and I _love_ the variability.&lt;/li&gt;&lt;li&gt;Entrepreneurship - Growing up here, in a bubble within a bubble (Boulder Country Club was my social/sporting experience as a child), I was surrounded by it. Back in the 70/80's it manifested itself as storage, hardware, bio-tech, and natural foods. I'm grateful that we've evolved to include software (my passion).&lt;/li&gt;&lt;li&gt;Family - All of my immediate family is here (as is my wife's).&lt;/li&gt;&lt;li&gt;Environmental Awareness (at a community level). From car-shares, to recycling, to alternative energies, I love the progressive day-to-day here. I feel like status-quo in 30 years will have its roots in Boulder life. That said I do have a &lt;a href="http://one.valeski.org/2010/05/im-done-recycling.html"&gt;bone to pick with the current state of consumables disposal&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-8030639368209911478?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/8030639368209911478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=8030639368209911478" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8030639368209911478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8030639368209911478?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/08/feelin-it-in-boulder.html" title="Feelin' It In Boulder" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck8ASXY6fip7ImA9Wx5REkU.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-4057787138357881285</id><published>2010-08-19T22:25:00.003-06:00</published><updated>2010-08-19T23:07:28.816-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-19T23:07:28.816-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="entrepreneur" /><category scheme="http://www.blogger.com/atom/ns#" term="regulation" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="boulder" /><category scheme="http://www.blogger.com/atom/ns#" term="government" /><title>Luncheon with Jared Polis</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://desmond.yfrog.com/Himg576/scaled.php?tn=0&amp;amp;server=576&amp;amp;filename=g2rqx.jpg&amp;amp;xsize=640&amp;amp;ysize=640"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 640px; height: 478px;" src="http://desmond.yfrog.com/Himg576/scaled.php?tn=0&amp;amp;server=576&amp;amp;filename=g2rqx.jpg&amp;amp;xsize=640&amp;amp;ysize=640" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Photo by &lt;a href="http://yfrog.com/g0g2rqxj"&gt;Todd Vernon&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was lucky enough, and honored, to be a part of a luncheon in Boulder today with Congressman Jared Polis, and a great sample of Boulder's startup community. There were roughly 30 of us around a table at the staple "The Kitchen" restaurant. 20 entrepreneurs (~10 from software firms, and ~10 from bio/pharma (a few "other")), 7 Venture Capitalists, and 3 associated with Congressman Polis. Five things struck me.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The amount of regulation (accounting, quality, approval, testing, manufacturing, etc) around bio/pharma dominated the conversation, and it was clear we weren't even touching the tip of the iceberg.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The relative lack of regulation around software led to near silence among the software crew. There are a few key issues (e.g. &lt;a href="http://startupvisa.com/"&gt;StartupVisa&lt;/a&gt;), but otherwise at a federal level, things are relatively peachy. A few of my software buddies and I looked at eachother during the conversation with a look of "yikes, I'm glad I don't have to worry about *that*" on our faces.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A U.S. Representative's ability, or lack-thereof, to triage incoming information will make or break them. I was astounded at Congressman Polis' ability listen, digest, and engage on a truly random set of complex topics; on the fly. Talk about being "on!"&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.feld.com/wp/archives/2010/07/the-discussion-about-the-lack-of-women-in-tech.html"&gt;"Women in technology initiatives&lt;/a&gt;" aren't really about "equal opportunity," they're about finding another source of talent to fuel an industry. Computer science is dominated by men. So much so, that if the industry is going to have enough "man" power, it's going to need the opposite sex to fuel the workforce. Women building tanks and airplanes in factories during WWII is an analogy that comes to mind.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;My mother would have been beside herself at the informality around dining etiquette. We ate roughly as we were served, instead of waiting for everyone to have their plate. &lt;span style="font-style: italic;"&gt;Our host, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.boulderventures.com/19/Kyle%20Lefkoff/"&gt;Kyle Lefkoff&lt;/a&gt;&lt;span style="font-style: italic;"&gt; (of Boulder Ventures), said it was ok mom; in case you're reading this&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;The dichotomy between #1 and #2 had me thinking... why? Software isn't physical, nearly all other industries are. As a result, the essence of a product is intangible. Physical goods based industries (e.g. bio/pharma) produce something physical, with physical impact, and that took physical goods to produce. Something gets shipped over borders (customs/tariffs are related to the physicality of the good). Something can be counted. Something can be physically examined. Software on the other-hand is relatively complex, and often its value is simply polymorphic in nature. Software is a relatively new industry, and perhaps we'll see it "over regulated" in the years to come, but I thought the degree to which the "other guys" in the room were dealing w/ regulation to be rather intense.&lt;br /&gt;&lt;br /&gt;A final thing that struck me was something everyone in the room had in common, entrepreneurship. No matter what regulatory morass, technical challenge, or combination of the two, lay in front of us, everyone in the room had a disposition to figure out how to succeed despite the circumstances.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-4057787138357881285?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/4057787138357881285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=4057787138357881285" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4057787138357881285?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4057787138357881285?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/08/luncheon-with-jared-polis.html" title="Luncheon with Jared Polis" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUAQno-cCp7ImA9Wx5SEkw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-700412408942270668</id><published>2010-08-07T13:11:00.004-06:00</published><updated>2010-08-07T15:40:43.458-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-07T15:40:43.458-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="parenting" /><title>Ambient Intimacy: Humans &amp; Machines</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iPi569bVVoc/TF28qEcXE_I/AAAAAAAAAEA/ldJ8ICD4ubM/s1600/img_blog_texting.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 224px;" src="http://3.bp.blogspot.com/_iPi569bVVoc/TF28qEcXE_I/AAAAAAAAAEA/ldJ8ICD4ubM/s320/img_blog_texting.jpg" alt="" id="BLOGGER_PHOTO_ID_5502761750649836530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I used to scoff every time I'd see a group of kids walking down the street talking/texting on their mobiles. How could they consider themselves friends when they're not even communicating with each other!?! However, I've found that my own addiction (as well as those of my immediate family members, to variable degree) to little machines hasn't led to the demise of my relationships (from my point-of-view at least). In fact, in some ways I'm closer to those around me than I ever have been. I have a theory around this. When our &lt;span style="font-weight: bold;"&gt;intellect&lt;/span&gt; is focused on/in the machine, our &lt;span style="font-weight: bold;"&gt;instinct &lt;/span&gt;regarding those physically around us kicks in, starts reading cues, and takes over our physical expression without our &lt;span style="font-weight: bold;"&gt;intellect&lt;/span&gt; getting in the way. Put another way, when I'm focused on a task, I don't have time to over analyze the relationships playing out around me. Those relationships either innately work, or they do not.&lt;br /&gt;&lt;br /&gt;If I'm in a room with people who fundamentally aren't compatible with me, and I'm busy on a device, on a subconscious level I'll reject them over time, and spend less and less time with those people (or person). Without the device, my consciousness is on the front-line of engagement with others, and we all know how messy things get when we sometimes over-think things. We justify bad relationships, we talk past each other, we rationalize things we shouldn't, etc.&lt;br /&gt;&lt;br /&gt;I've always considered whether or not you can sit with someone else in a car on a long drive, and not say a word for miles, as a good judge of compatibility. If either party is compelled to fill the dead air with words simply "because," then things are probably weird on some other level.&lt;br /&gt;&lt;br /&gt;I'm not suggesting intellectual communication is bad; far from it. Without it, we'd lack storytelling, much/most education, most relationships would never start, debate couldn't happen, decisions couldn't be made; life and evolution couldn't happen. I am however saying that we're not going to spontaneously combust because the network penetrates further and further into our lives.&lt;br /&gt;&lt;br /&gt;As a parent of two children under 8 years of age, I grapple with what is "too much" use of something digital (books, movies, shows, music, games, youtube, email). In my house you're not allowed to bring machines to the table for a meal (when we're eating at home; restaurants are excepted). You're not allowed to fall asleep with a machine. If someone wants your undivided attention, you give it to them immediately (pausing whatever you're consuming/playing with), without hesitation. That latter rule is important to me. The moment one is unable to intellectually/instinctually switch from non-human, to human interaction, we're in trouble.&lt;br /&gt;&lt;br /&gt;In this post I've consciously avoided the whole debate around the use of radio waves to keep all our little machines aptly connected to the network, and whether that's good or bad for civilization at the end of the day. That's another post.&lt;br /&gt;&lt;br /&gt;Embrace and adapt. In the words of Bob Dylan, "the times they are a changin'."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-700412408942270668?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/700412408942270668/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=700412408942270668" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/700412408942270668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/700412408942270668?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/08/ambient-intimacy-humans-machines.html" title="Ambient Intimacy: Humans &amp; Machines" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_iPi569bVVoc/TF28qEcXE_I/AAAAAAAAAEA/ldJ8ICD4ubM/s72-c/img_blog_texting.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UHRX87cCp7ImA9WxFbGUk.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-7538300910960204991</id><published>2010-07-12T09:03:00.002-06:00</published><updated>2010-07-12T09:40:34.108-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-12T09:40:34.108-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="calendar" /><title>TimeBridge and Behavioral Change</title><content type="html">Users rarely, if ever, change behavior. It takes unprecedented genius or beneficial workflow changes to get us to change our ways. We're lazy... bottom line.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A service called &lt;a href="https://app.timebridge.com/lp/meetwithme"&gt;TimeBridge/meetwith.me&lt;/a&gt; changed my behavior. I use it religiously now. What's surprising to me is that the service touches the "third rail" of scheduling/calendar products which are notoriously messy and hard to get anything right with. TimeBridge says they "make it easy for others to schedule meetings with you" and incredibly, they deliver on that promise, when hundreds before them have failed miserably. How did they do it?&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Setup for you is pretty easy. The site's not perfect, and there were bugs in app/screen flow, but it amounts to wiring their app up with your calendar app (Google Calendar for me). You'll be using a calendar app that either "works" or "doesn't." If you fall into the latter category, cut bait and pretent TimeBridge doesn't exist.&lt;/li&gt;&lt;li&gt;Setup for people trying to schedule time with you is... well... there really isn't any, and this is the critical piece. There have been plenty of apps promising to make scheduling easy, but they've all required everyone in the workflow to go through a mess of setup. Guess, what, someone scheduling time with me has never heard of TimeBridge, and certainly isn't going to go through any setup with it in order to schedule time with me. So, they've solved this by not requiring any setup for the ppl trying to get on your schedule.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Some of the flows are buggy or a little unclear, so there's lots of room for refinement, but the use case that matters is absolutely nailed. Well done guys. I'm impressed.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-7538300910960204991?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/7538300910960204991/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=7538300910960204991" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7538300910960204991?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7538300910960204991?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/07/timebridge-and-behavioral-change.html" title="TimeBridge and Behavioral Change" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQFRH4zeCp7ImA9WxFUFEo.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-6382607584478368925</id><published>2010-06-25T08:37:00.003-06:00</published><updated>2010-06-25T09:05:15.080-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-25T09:05:15.080-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ignite" /><title>Ignite Boulder: Morning After</title><content type="html">Last night's &lt;a href="http://igniteboulder.com/"&gt;Ignite Boulder&lt;/a&gt; was one of the better ones. It was the first held at Chautauqua's auditorium which is a great venue; though the audio was a bit off for the sparks (music sounded solid). I hope Andrew sticks with Chautauqua as a venue going forward (at least in the nice Spring/Summer months), it was nice to chill at the park before/after the event.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With increased popularity, the content feels like its starting to water down a bit. I want the edge back! Where's the heckling anymore?!? I do my part, but more often than not the ppl around me don't get it. The perils of mass mediaization; I wonder if you can ever get away from it en masse. If anyone can figure out the mix it's Andrew though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A few of the talks struck me as particularly bad, and a few as particularly good. Some thoughts on the good ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Josh Fraser's talk on fear&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Reminded me of &lt;a href="http://www.imdb.com/title/tt0310793/"&gt;Bowling for Columbine&lt;/a&gt;. We live in a culture of fear, and it's sad. Statistically everything's always going to be alright, yet we live with irrational fears that dramatically affect our behaviors. Why we do this is always a good question, and Josh got the numbers out there in front of us to laugh at. Nicely done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Ryan's talk on selfishness&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Should you be selfless or selfish? I've always lived my life as a selfish bastard, so I felt a little vindicated w/ this talk. Ryan's one of those rarities in life. Incredible ability to put the core of his being out there in front of everyone, and not in a lame way, rather in a way you connect with; he has true creative genius. Favorite line of the night [paraphrase/butcher]: "while trying to be selfless in trying to be what the one I love[d] wanted, I turned into something she didn't love at all because I lost my selfishness."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;a href="http://www.ceciervin.com/"&gt;Ceci Ervin&lt;/a&gt;'s talk on a trip to Poland for a surgical procedure to help/cure MS (which she has).&lt;/span&gt; &lt;/div&gt;&lt;div&gt;I'm not a sympathy vote kinda guy (back to that selfish thing), but she presented her quest in such a way that the faith and bravery simply tore through the screen and into the audience. Unbelievable journey with a happy ending. This kind of insight always makes me feel weak and useless, which then drives me to be more. Thanks for the perspective Ceci.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-6382607584478368925?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/6382607584478368925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=6382607584478368925" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6382607584478368925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6382607584478368925?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/06/ignite-boulder-morning-after.html" title="Ignite Boulder: Morning After" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CU4HQXc-fyp7ImA9WxFVFEU.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-8076154313863770857</id><published>2010-06-13T19:47:00.005-06:00</published><updated>2010-06-13T20:52:10.957-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-13T20:52:10.957-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="plugins" /><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Can Google's Native Client SDK Fix The Web?</title><content type="html">Modern life owes much to the Internet. Many proverbial thanks are due to the inventors at CERN (incl. Tim Burner's Lee) and to Netscape (Jim Clark; the money. Founding engineers; the know-how) for making it accessible to all of us. A recent visit to Google's Boulder, CO office brought back that aching question for me though; is &lt;b&gt;this&lt;/b&gt; all the Internet has to offer?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;What if it never happened?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Would traditional client-server computing have been able to push network infrastructure (modems, hard-wire networks, wireless-networks, fiber, satellite) as far as the graphical browser has? If we had given it the years that the Internet's had, would we have skipped over and evolved past all the advertising, porn, and shopping that has become &lt;b&gt;our&lt;/b&gt; network? I have to wonder if we have simply over-sold/hyped ourselves over the past decade, and subsequently distracted ourselves from the end-goal; better overall human computer interaction. The web is a complete UI/UX disaster, and has severely stunted HCI (Human Computer Interaction) efforts that can only come to fruition with deep driver/hardware bindings (e.g. &lt;a href="http://oblong.com/"&gt;Oblong&lt;/a&gt; - a firm you've never heard of that has the potential to change &lt;b&gt;everything&lt;/b&gt;). We're still wallowing around inside web pages, building applications that have awful authentication/authorization models (how many usernames and passwords do &lt;b&gt;you&lt;/b&gt; have?), and HTML5 is our latest savior?!? Please.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Getting Serious (again)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;My recent conversation in the Google cafeteria challenged some base assumptions that I, and most of my colleagues, make; namely that web-apps are "it." That lunch discussion is well represented in a talk two of the key engineers gave at Google I/O 2010; &lt;a href="http://code.google.com/p/nativeclient-sdk/"&gt;Programming the web with Native Client SDK&lt;/a&gt;". When we were talking, what was initially described to me was something I could neatly, and conveniently, fit into today's browser plugin APIs. "Why not just use NPAPI; why re-invent the wheel?" I asked. I got a response that only someone with the know-how, and the resources could give; "because this [web as we know it] can't be it." I left skeptical, but it's been a month or so, and I'm there. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We'd be nowhere without the tubes that have been built. From a gazzillion miles of various types of cable/wire being laid all over the world, to IP/HTTP ubiquity. However, consider them a simple, yet crucial, layer in the client-server software model stack. Sure it's taken us 15 years to build it, but what if you chalk it up as "done." What's the next layer in the cake diagram that you'd pursue?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If we'd had this layer complete 15 years ago, the kings of client-server software at the time (Microsoft and IBM) could have started building highly distributed applications then, as opposed to trying to do so now (IBM quite successfully in more of an industry consultancy role, and MSFT arguably flat out failing at it). With Native Client, Google is trying to answer the question of what should software look like now that the connectivity layer is "done?" It's a cool question if you think about it and are able to extract yourself for a moment from our day-to-day web-app construction, and browser engineering realities; we have a hard time seeing the forrest from the trees.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It has a very long way to go, but a new way of executing "native" code through our "tubes" could open the door to a new generation of software. One that can harness the power of our hardware and the most important part of the Internet, namely the "tubes." While a train-wreck, recall the confines Microsoft tried to break out of with &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Bob"&gt;Microsoft Bob&lt;/a&gt;; knocking down the four walls of the traditional rectangle window managers that none of us exists without. Imagine networked software that can talk to your hardware to obtain identity information (something that requires a hardware component; &lt;b&gt;you&lt;/b&gt;). These are things that we shouldn't be dreaming about, they should just &lt;b&gt;be&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While Google's Native Client SDK goals seem audacious, they are also admirable, and if there's one company out there right now that has the power to pull something like this off, Google's it. Good luck.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-8076154313863770857?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/8076154313863770857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=8076154313863770857" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8076154313863770857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8076154313863770857?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/06/can-googles-native-client-sdk-fix-web.html" title="Can Google's Native Client SDK Fix The Web?" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0YAQ3k5eip7ImA9WxFWGUo.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-2225679846889689880</id><published>2010-06-07T22:23:00.004-06:00</published><updated>2010-06-07T22:25:42.722-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-07T22:25:42.722-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="process" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title>Development Process</title><content type="html">Tonight I was asked some high-level questions about development process. I wound up responding w/ enough material that I thought I'd share the thoughts here for broader consumption.&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;Hey guys,&lt;div&gt;Please  feel free to ignore this email but I'd extremely appreciate some advice  if you have a couple of minutes.  I am trying to compare best practices  for teams over 10 programmers to determine what software development  methodology has been the most productive for your company but at the  same most fun for your team.  If you have time I'd appreciate answers to  the following:&lt;/div&gt;  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Software Development Process used (i.e. Scrum,  XP, custom)&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;"agile" (no scrum)...  weekly iterations/sprints (no standup). have driven/done xp (pair  programming mix) as well; I'd only go this (xp/pairing) route again if I  were in a more supportive ecosystem (e.g. SF).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;&lt;div&gt;2)  Do you track # of hours programmers work in a project? &lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;never.  bad idea IMO.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;&lt;div&gt;3) Do  you have a QA team, if so how many?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;no. though  I've considered one or two QA folks... it'd definitely be nice to  objectively do white/black box testing outside of dev. we're pretty  close to TDD, so we've convinced ourselves we "don't need it." I go back  and forth.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;&lt;div&gt;4) How  often is your release cycle?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;we deliver code to  production once a week.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;  &lt;div&gt;5) Who is allowed to deploy code into production?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;we  rotate who does the deploy (everyone on the team, including me, is  capable of doing it). we run a shared responsibilty/exposure shop in  order to reduce/eliminate the "john's the only one who knows that  code/process" scenarios. my general philosophy here is if you're not  hiring engineers that you don't trust well enough to do a deploy...  you're liking hiring the wrong folks.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;&lt;div&gt;6)  What project management tools do you use?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;http://pivotaltracker.com  . in the spirit of agile... we're very light on process/tools. never  document something in more than one place (e.g. in the "story"), and  even then be light.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"&gt;&lt;div&gt;7)  How accurate are your release predictions?&lt;/div&gt;&lt;/blockquote&gt;eh.  having tried (as mgr and individual contributor) everything under the  sun... I no longer believe numbers folks toss out ("we're 90% on time"  etc). I've found everyone's (mine included) numbers are BS, and if you  dig into what actually transpired after the release... enough corners  were cut, enough brilliant engineering ideas employed, and enough  requirements were relaxed during the release cycle, that you never end  up with what you started with anyway, so the A to B comparison and  judgement of "on-time" is never valid. your mileage will vary though. it  all comes down to the "unit"... the "team"... their cohesiveness,  experience working together and trustworthiness amongst eachother. that  said, if you handed me a green teem of folks that never worked together,  I'd drive it agile-style with one to two week iterations/sprits (and  production deploy) cycles with goal-level commitments (e.g. team  committing to having x y and z done by date 'a'... and working as hard  as they can to meet that commitment).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-2225679846889689880?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2225679846889689880/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2225679846889689880" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2225679846889689880?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2225679846889689880?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/06/development-process.html" title="Development Process" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkANQXg9cSp7ImA9WxFXFkg.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-3979142166131306215</id><published>2010-05-23T15:24:00.002-06:00</published><updated>2010-05-23T15:39:50.669-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-23T15:39:50.669-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recycling" /><title>I'm Done Recycling...</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.portlandtribune.com/news_graphics/118685993504445300.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 278px; height: 195px;" src="http://www.portlandtribune.com/news_graphics/118685993504445300.jpg" alt="" border="0" /&gt;&lt;/a&gt;... at cafe's at least; sorry. I thought this get here, but after years of recycling I'm fed up. At home I can control the separation between compost, mixed materials, and trash/landfill. But... cafe's had made it impossible to recycle or compost anymore. Some provide compostable straws/lids/cups/napkins, but some don't; telling the difference between the two is all but impossible. The end result... I don't spend the extra 30 seconds it takes to figure it all out.&lt;br /&gt;&lt;br /&gt;To further complicate things, everyone has their own cute recycle station with paragraphs describing what to put in which of the, at least three, bins. Guess what, I just hunt for the trash/landfill bin so I don't have to hurt my little brain by figuring out what is in my hand, and which bin it should go in.&lt;br /&gt;&lt;br /&gt;I started recycling and composting long before it became popular/trendy, and have voted for every legislative measure to promote recycling over the past couple of decades I've been able to vote over. However, I hate to say it, the regulations around what can go where have turned me off. Humans are generally lazy and dumb. American's (of which I am one) like to throw unbelievable amounts of things away. Combine the two with today's recycling measures and I predict we're taking a step backward.&lt;br /&gt;&lt;br /&gt;Once fairly clean recycle streams are now polluted with materials that don't mix and the energy it takes to clean the stream counters the benefits of recycling at all. Here's a &lt;a href="http://www.portlandtribune.com/sustainable/story.php?story_id=118685531900028000"&gt;decent writeup on the stream problem&lt;/a&gt;, and plenty have been written about Boulder County as well.&lt;br /&gt;&lt;br /&gt;We need to mandate the production of compostable materials (cups, straws, bowls, forks, spoons, knives, etc) so, as consumers, we don't have to think about what we're about to "throw away." This should all be &lt;span style="font-weight: bold;"&gt;easy&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-3979142166131306215?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3979142166131306215/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3979142166131306215" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3979142166131306215?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3979142166131306215?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/05/im-done-recycling.html" title="I'm Done Recycling..." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak8CSXs4cCp7ImA9WxFQFEg.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-6750458388432646682</id><published>2010-05-09T20:25:00.002-06:00</published><updated>2010-05-09T20:34:28.538-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-09T20:34:28.538-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon" /><category scheme="http://www.blogger.com/atom/ns#" term="s3" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="aws" /><title>Take 2: Amazon S3 file deletion FAIL</title><content type="html">The S3 bucket key deletion saga continues. I had two Ec2 XL instances running 24/7 for about a month, running ~150 parallelized DELETE requests on s3 bucket keys (each machine), and dented my S3 usage by only 10%. I spent ~$1,500 (money went to Amazon obviously) on those dedicated XL instances in the process, while only reducing my S3 bill by ~10%, and that doesn't include the operational/engineering overhead to manage the deletion software/machines.&lt;br /&gt;&lt;br /&gt;I'm left with only one option to wipe out the data on S3 that I don't need anymore; closing my Amazon account, and opening a new one. While I have high hopes that I'll be able to use the same keys/tokens/secrets in the new account, I'm doubtful. Thus, I'll incur several thousand more dollars re-wiring Gnip's vast network of machines, and RightScale, to work w/ the new account.&lt;br /&gt;&lt;br /&gt;Lesson here is that you have to be very conscious when dealing with very large data sets on Amazon's S3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-6750458388432646682?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/6750458388432646682/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=6750458388432646682" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6750458388432646682?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6750458388432646682?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/05/take-2-amazon-s3-file-deletion-fail.html" title="Take 2: Amazon S3 file deletion FAIL" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0ANQ3ozeip7ImA9WxFSE0k.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-4875460709951079925</id><published>2010-04-15T07:54:00.004-06:00</published><updated>2010-04-15T08:29:52.482-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-15T08:29:52.482-06:00</app:edited><title>Twitter's Ad Model; It's All In The Fraud Baby</title><content type="html">It's taken Twitter a long time to get where they are, and knowing some of their backstory has made watching the journey from the outside quite entertaining. A few things haven't changed: Biz pontificates and paints the &lt;a href="http://twitter.com/bpm140/status/12171771183"&gt;"Twitter is a triumph of humanity"&lt;/a&gt; picture (exceedingly well I might add), Ev leads the flock with jagged thinking &amp;amp; speaking, and Dick is the one saying "no guys, really, we need to focus and make some money, here's how we're going to try to do it; no more goofing off." Ryan Sarver has his head squarely around the outward facing platform implementation and needs; he's an asset. Jason Goldman... I still can't figure him out.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;On Making Money&lt;/span&gt;&lt;br /&gt;Dick's pitch was pretty good. The idea is that tweets themselves are the commodity. Rather than some new model in the system, e.g. a formal "ad," the Tweet structure as we know and love it today, will be the item that is bought/sold. "Promoted" tweets, as Dick kept referring to them as, will float to the top of distilled tweet pages (like search, or top tweets, or trending topics, etc). The "float" algorithm will be affected by 1) whether or not someone's paid for a tweet to float up and 2) whether or not it resonates with users. #1 is obvious and will result in a marketplace for pricing/bidding/buying/selling (ala Google's ad model). #2 isn't as simple (not that the former is simple to begin with).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resonating&lt;/span&gt;&lt;br /&gt;I argue that the dirty little secret on the network today is that current ad models on the web are a sham; a house of cards. We've all made plenty of money on the backs of click fraud, and it'll eventually collapse. Twitter's trying to "do it right" by influencing a promoted tweet's visibility based on whether or not a promoted tweet resonates with users. Whatever your platform, when money's involved, it gets gamed. Whether it's bots doing re-tweeting, clicking, forwarding, generating, whatever, the bots will do their thing. When bots can't do it, cheap humans will be employed to do the machine's bidding.&lt;br /&gt;&lt;br /&gt;"If a promoted tweet doesn't resonate, it will go offline." That statement was spewed, in one form or another, over and over again by the Twitter crew. I love the idea as a user, but if Google had squashed ads that weren't resonating with users, they never would have had a business to begin with (and arguably they wouldn't have one now if they moved to this glorious idea). &lt;span style="font-weight: bold;"&gt;It's all in the fraud baby.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The chicken and egg problem Twitter faces with an ad model is that you need many producers to build a marketplace, yet you need the marketplace to draw the producers. If you do the righteous thing and only display ads that resonate with users, guess what, you won't have many ads to show. Though users would benefit, ad prices would be so high (both in cost and quality) that not many people will pay for them. As a result, resonance is de-emphasized in order to stoke the overall marketplace.&lt;br /&gt;&lt;br /&gt;Traditional Internet ad models are fairly simple pyramids folks... the bottom many subsidize the top. Both in terms of quantity, in order for the marketplace to exist, and the dollars.&lt;br /&gt;&lt;br /&gt;The picture Dick painted was a pretty one. As an end-user, the notion of only being exposed to "resonating ads" (errr "promoted tweets") is a treat. I hope Twitter can change Internet ad history and actually pull it off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-4875460709951079925?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/4875460709951079925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=4875460709951079925" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4875460709951079925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4875460709951079925?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/04/twitters-ad-model-its-all-in-fraud-baby.html" title="Twitter's Ad Model; It's All In The Fraud Baby" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CU8BQHo-eip7ImA9WxBaEU8.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-3170778773855202445</id><published>2010-03-20T16:07:00.003-06:00</published><updated>2010-03-20T16:24:11.452-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-20T16:24:11.452-06:00</app:edited><title>Get A Job! At Walmart.</title><content type="html">This post inspired by a conversation I had with my mother this morning.&lt;br /&gt;&lt;br /&gt;My mom has been self-employed for decades via a small business she runs. Unfortunately her industry has been all but obliterated by the usual "faster/cheaper" competitive model. She refuses to acknowledge that the American consumer is driven almost exclusively by money. She longs for, as do I, altruistic motives on the consumer's part, and moral high-ground. Specifically she's saddened by the decimation of local (state and smaller) government tax revenues, and the fact that consumers choose cheaper products over her more expensive, higher-quality, products.&lt;br /&gt;&lt;br /&gt;The conversation led to "buy local" as the solution to the problem. While I generally agree, and do buy local all the time (spending more than many of my peers do; for better and worse), I realized long ago that a perspective counter to the one I'm surrounded by is significant. Namely, if you want to really affect global change, go work for Walmart.&lt;br /&gt;&lt;br /&gt;Activists constantly fight "the man" in the form of Walmart, when in fact what they should do is go work for Walmart, and change things from the inside. Identifying processes that save Walmart money, and implementing them, will have more reach than me diligently buying produce at my local farmer's market ever will. For some perspective, checkout some &lt;a href="http://www.knowmore.org/wiki/index.php?title=Wal-Mart_Statistics"&gt;generally recognized facts about Walmart&lt;/a&gt;, the largest company in the world.&lt;br /&gt;&lt;br /&gt;When Walmart says "jump" every one of its vendors says "how high." If Walmart said "go green" every one of its vendors would do so overnight. Go figure out how to get Walmart to say "go green" or "create local, high-paying, jobs."&lt;br /&gt;&lt;br /&gt;Oh yea, and if you don't like what Walmart does to your local economy, don't shop there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-3170778773855202445?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3170778773855202445/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3170778773855202445" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3170778773855202445?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3170778773855202445?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/03/get-job-at-walmart.html" title="Get A Job! At Walmart." /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0YGQX46fip7ImA9WxBbGE4.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-3594219366927039279</id><published>2010-03-17T09:11:00.003-06:00</published><updated>2010-03-17T09:18:40.016-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-17T09:18:40.016-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="s3" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="aws" /><title>Amazon S3 file deletion FAIL</title><content type="html">I'm a huge fan of Ec2 and S3 offerings from Amazon; they're the future. However, there's a severe deficiency in the S3 API; when you need to delete billions of files, the API breaks down. While there are batch operations, they don't handle enough keys to be of use when dealing with very large file counts, and enough requests are made over the long duration (days) of running your script, that expected errors wind up crapping out the whole process. Rinse-repeat doesn't work when the mean-time-between-failure is on the order of days.&lt;br /&gt;&lt;br /&gt;Yes, I'm running the operations on an Ec2 instance. Yes, I'm using the almighty &lt;a href="http://s3sync.net/wiki"&gt;s3sync&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Amazon, you're printing money with AWS, please open up the deletion API so ppl can better manage their files. The current API's inability to a) delete non-empty buckets, and b) handle larger batch requests, feels a lot like greedy "lock-in."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-3594219366927039279?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3594219366927039279/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3594219366927039279" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3594219366927039279?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3594219366927039279?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/03/amazon-s3-file-deletion-fail.html" title="Amazon S3 file deletion FAIL" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UDSHk6fip7ImA9WxBbEk8.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-7596480101769439121</id><published>2010-03-07T20:01:00.002-07:00</published><updated>2010-03-10T06:54:39.716-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-10T06:54:39.716-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mountain biking" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><title>Fast &amp; Slow</title><content type="html">Pondering the meaning of life while &lt;a href="http://connect.garmin.com/activity/26459956"&gt;bombing down Poorman&lt;/a&gt; the other day on my mountain bike, I realized the two things that have had the most impact on my two my favorite activities (coding and mtn. biking) serve two radically different purposes.&lt;br /&gt;&lt;br /&gt;Disk Brakes. I got my first set (&lt;a href="http://www.hopetechusa.com/"&gt;Hope manufactured&lt;/a&gt;) just last year. I'm a late adopter on the bike equipment front. The slowing/stopping power of these has totally changed how I ride.  &lt;br /&gt;&lt;br /&gt;Solid State Drives. I've been using these since they came to market. I'm an early adopter on the computer junk. The I/O speed of these things has totally changed how fast I can build &amp; run tests.&lt;br /&gt;&lt;br /&gt;It's the little things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-7596480101769439121?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/7596480101769439121/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=7596480101769439121" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7596480101769439121?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/7596480101769439121?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/03/fast-slow.html" title="Fast &amp; Slow" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEENQHc5eyp7ImA9WxBVE0k.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-3483813021925453780</id><published>2010-02-16T10:22:00.006-07:00</published><updated>2010-02-16T10:51:31.923-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-16T10:51:31.923-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Multi-level Single Table Inheritance (STI) in Rails</title><content type="html">This took me more than one attempt to get right, so I thought I'd blat it out in a blog post in case anyone else has been struggling with it. In the end, the implementation matches your intuition, but getting the sub-classing syntax right took a few tries (undoubtedly due to my relative newness to Rails/Ruby).&lt;br /&gt;&lt;br /&gt;Why would you want multi-level STI? When you're using multiple inheritance (class_c inherits from class_b and class_b inherits from class_a) and you want that relationship maintained through ActiveRecord; that's when.&lt;br /&gt;&lt;br /&gt;Take the following three classes for example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/app/model/a/class_a.rb&lt;br /&gt;class A&lt;br /&gt; def method_a&lt;br /&gt;   "a"&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;/app/model/a/class_b.rb (yes, I mean dir 'a'. class_b.rb is a peer of class_a.rb)&lt;br /&gt;class A::B &lt; A&lt;br /&gt;  def method_b&lt;br /&gt;    "b"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class A::B::C &lt; A::B&lt;br /&gt;  def method_c&lt;br /&gt;    "c"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notice the explicit class hierarchy notation. Without this, I can't get the multi-level relationship maintained through STI.&lt;br /&gt;&lt;br /&gt;From here, you can merrily create the class through ActiveRecord, assuming you have an existing table for the base class (which includes the 'type' column (where AR stashes the class hierarchy/name information for subsequent instanciations), and use all the methods.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;A::B::C.create!&lt;br /&gt;...&lt;br /&gt;c = A.first&lt;br /&gt;c.method_a =&gt; 'a'&lt;br /&gt;c.method_b =&gt; 'b'&lt;br /&gt;c.method_c =&gt; 'c'&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-3483813021925453780?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3483813021925453780/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3483813021925453780" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3483813021925453780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3483813021925453780?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/02/multi-level-single-table-inheritance.html" title="Multi-level Single Table Inheritance (STI) in Rails" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0QFQHs-eSp7ImA9WxBWFE8.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-2664395606122792914</id><published>2010-02-05T21:03:00.002-07:00</published><updated>2010-02-05T21:08:31.551-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-05T21:08:31.551-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Google Chrome for Mac</title><content type="html">I spent the past few days with Google Chrome for Mac as my default browser on my primary machine. I &lt;a href="http://search.twitter.com/search?q=&amp;amp;ands=&amp;amp;phrase=&amp;amp;ors=&amp;amp;nots=&amp;amp;tag=chrome&amp;amp;lang=all&amp;amp;from=jvaleski&amp;amp;to=&amp;amp;ref=&amp;amp;near=&amp;amp;within=15&amp;amp;units=mi&amp;amp;since=&amp;amp;until=&amp;amp;rpp=20"&gt;tweeted some notes about the experience&lt;/a&gt; if you're interested in the details.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've reverted my default back to Firefox (3.6) however because of page incompatibility (rendering, JS execution, and lacking plugin support) issues I just don't have time to workaround with a new browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I did like about the experience however were the DNS pre-caching optimizations that Google incorporated, and how child-tabs were handled; nice work!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Building a browser is hard. Good luck Google.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-2664395606122792914?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2664395606122792914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2664395606122792914" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2664395606122792914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2664395606122792914?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/02/google-chrome-for-mac.html" title="Google Chrome for Mac" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0EGSHc7cSp7ImA9WxBXEEw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-2864914878181889925</id><published>2010-01-20T10:07:00.004-07:00</published><updated>2010-01-20T11:20:29.909-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-20T11:20:29.909-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="http" /><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>Does Browser HTML5 Support Matter?</title><content type="html">A few weeks ago I watched a saddening interview that a Google guy conducted in NYC; &lt;a href="http://www.youtube.com/watch?v=o4MwTvtyrUQ"&gt;What is a Browser&lt;/a&gt;? It was sad because effectively no-one even knows what a browser is. The neat thing about that fact though is that the browser is so ubiquitous that people don't even know it exists.&lt;br /&gt;&lt;br /&gt;The other day a co-worker and I were talking about whether or not HTML5 stuff matters anymore. Did Flash get enough market coverage to own "rich" client-side-software forevermore? Will content developers use HTML5 stuff? Are content developers relevant anymore? These are the kinds of questions that came up in the conversation. Here's my perspective.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Flash&lt;/span&gt;&lt;br /&gt;It's done a lot for us (thanks Macromedia), but it's still too proprietary and takes too much tooling to do anything interesting with it. Furthermore, video quality (at least what the industry has adopted) is pathetic, and in a world wherein video is becoming more and more relevant (thanks to ease of production of HD content, as well as increasing bandwidth), it's not going to cut it much longer. There's a quarter-ton of Flash content out there though (e.g. YouTube), so, in some capacity, it's here to stay for a long time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Content Developers&lt;/span&gt;&lt;br /&gt;HTML5 exposes some incredible functionality at the JS/HTML/DOM levels. However, while the erosion of the plugin API walls allows for a more fluid/native/stable browsing experience, today's Content Developers aren't going to be able to leverage most of the features directly. Relatively complex programming concepts are making their way up the stack which is great (un-chain the beast!), but the Content Developer brains out there aren't going to map 1-to-1 with the skill-set it takes to harness the beast's strength. New tool chains (ala Macromedia/Adobe app suites) will have to emerge in order to allow today's Content Devs/shops to build using most of the new features.&lt;br /&gt;&lt;br /&gt;Put another way, the folks I know leveraging &lt;canvas&gt;, web sockets, &amp;amp; new local storage interfaces in interesting ways are heavy hitting engineers. Convenience libs will evolve however, and the masses will be able to leverage the new features in the end. It'll just take some time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Will the features get used? Or, if they build it, will developers come?&lt;/span&gt;&lt;br /&gt;HTML5 implementations will yield the most significant browser innovation in a long time, but who's pushing for the changes to begin with? Google for one. Last year's Google I/O conference was a HTML5 circus; I was shocked. I'm stoked Google's pushing hard on HTML5 content/app creation, and apparently betting their entire app strategy on it. I'm still perplexed by Chrome though, and am convinced they're using it simply to stoke Mozilla into building all the right features into Firefox, at which point they kill Chrome. Firefox will do the right thing, of course, w/ HTML5; they're pushed by community &amp;amp; Google. Apple's still off in the weeds with Safari/WebKit; I hope they do the right thing w/ HTML5, but don't really care (other than insofar as it affects my iPhone browsing experience). Microsoft... who cares (other than enterprise which has billions invested in a toolchain that won't adopt HTML5 stuff anytime soon); they're irrelevant in my world anymore.&lt;br /&gt;&lt;br /&gt;So, if you resolve that the browsers will provide "good HTML5" support, who will predominately use the features? Will today's content dev shops announce to their clients that they support "HTML5" and build to it? Or will it be the firms building the browsers themselves (e.g. Google) that have vested application advancement interest?&lt;br /&gt;&lt;br /&gt;Ten years ago I would have said the developers would dictate and bring about the changes. Today... not so much. If HTML5 goes anywhere in today's world, it will be because the big guys pushed it, promoted it, and built to it. The world has changed in this regard.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;What is "good HTML5 support?"&lt;/span&gt;&lt;br /&gt;The stuff that matters, and why, in HTML5 follows.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;canvas&gt;. we haven't been able to natively draw yet. c'mon.&lt;/li&gt;&lt;li&gt;offline data storage/caching. use gmail on an iPhone to see how powerful this is. you can't build apps without state. you can't build real apps without persistent state. offline data storage will bridge a huge gap between "online" apps and "desktop" apps.&lt;/li&gt;&lt;li&gt;web sockets. this feature has the most potential; both to do evil and good. apps being bound to obfuscated HTTP interactions has been extremely limiting to the content/web-app dev tier, so opening connections up to the page/JS will be powerful. However, the thought of some of the folks who build web-apps having access to a socket also gives me chills.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;nav&gt; element. keyboard navigation to new pages is horrible in today's browsers. while the &lt;nav&gt; element would help fix this, sadly only Safari appears to support it right now.&lt;/li&gt;&lt;li&gt;&lt;audio&gt; &amp;amp; &lt;video&gt;. the law of operating system feature creep says that ubiquitous functionality needs to be natively absorbed. audio and video are a huge part of the web, yet I still have to muck with a zillion different players to listen/see.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-2864914878181889925?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/2864914878181889925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=2864914878181889925" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2864914878181889925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/2864914878181889925?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2010/01/does-browser-html5-support-matter.html" title="Does Browser HTML5 Support Matter?" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEINR3Y6cCp7ImA9WxBSE0k.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-4361949940880413523</id><published>2009-12-20T13:33:00.005-07:00</published><updated>2009-12-20T15:03:16.818-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-20T15:03:16.818-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="startup" /><category scheme="http://www.blogger.com/atom/ns#" term="GNIP" /><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title>Gnip's 2009 Rocked My World</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/a/ae/Metamorphosis_frog_Meyers.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 800px; height: 600px;" src="http://upload.wikimedia.org/wikipedia/commons/a/ae/Metamorphosis_frog_Meyers.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After spending 2008 building a phenomenal development team, early 2009 tested me like I'd never been tested before. Half of my career has been spent building/managing teams, and I thought I had it dialed in. Along the way, feedback from individuals (peers, bosses, employees), raises/bonuses, and promotions reinforced an apparent self delusion. At the end of Q1 I was met with the proverbial dousing of cold water in the face. I was confronted with a "Jud goes or I go" situation. My heart broke (it's better now and stronger than ever). I stayed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Compromise&lt;/span&gt;&lt;br /&gt;Prior to that confrontation, while bouncing issues/ideas back and forth with someone who's experience I highly regard and respect, they suggested that I was "overly principled." It was an interesting choice of words I thought. They felt like a gentle way of saying "you're stubborn" or "you're inflexible"; something like that. I used to think I was flexible on the things I should be flexible on, and passionate about the other set. However the entire scenario caused me to reflect and realize that in fact I was incredibly rigid on a few things I shouldn't have been rigid about. I've since changed my approach entirely when working with people (bosses, employees, peers) to one that starts with openness, and morphs from there. Call me soft, but this approach is baring delicious fruit. Have I sacrificed too much? So far no, but only time will tell, and I'm hopeful that the answer is "no."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Any Monkey Could Play&lt;/span&gt;&lt;br /&gt;I used to pride myself exclusively on being able to a) identify great opportunities b) identify, and hire, great talent, and c) rinse-repeat. The theory went that if you only pick winning ideas, and winning people, you will win. My perspective was that if you set that up, then the rest is cake. When churning on this with a friend they suggested "dude, if that's the game, then any monkey could play." With my tail between my legs, I realized the challenge is in recovering from the mistakes (that inevitably get made), adapting to uncontrollable dynamics (even the best laid plans fail), and persevering. Identifying great opportunities and people to work with is only the beginning, and frankly, it's the easy part.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;To Thine Own Self Be True&lt;/span&gt;&lt;br /&gt;My family will tell you I don't have an empathetic bone in my body, and it's likely because I pour my empathy into my employees. Earlier this year I learned that I was out of balance with this arrangement. My "overly principled" stance led to being "overly emotionally" invested in certain people, approaches and dynamics. I'd always been this way on the job, it had worked exceedingly well. However, when running a business, this isn't priority #1. If you're managing people in a mid-large sized company it probably is priority #1, but when you're trying to start something from the ground up, enough shrapnel flies around that folks are going to get hurt. My takeaway here is that I have to shift my empathy around a bit. This is a tricky balance between doing the Right thing from a human/people standpoint, and doing the right thing for the business. It's a different calculation for each person. I'm adjusting mine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Back to that Flexibility Point&lt;/span&gt;&lt;br /&gt;My partner and I have big egos, yet they come out in wildly different ways. Our initial approach to building the product and company left a palpable struggle over control in the air. The struggle nearly destroyed the company. Him being ultimately responsible, as CEO, things came to the ultimate head and we firmly hit the reset button on the company (we let almost half of the company go, we changed the product direction, and technology stack, entirely). We should have done it earlier. The bravery he showed in making that decision was admirable, and it's a lesson I'll take with me forever. While the words went unspoken, it was time for me to back off of a schlew of points that I'd been firmly holding. The ego struggle had to yield or the company would die. That's behind us now, and neither one of us has to expend energy in that space anymore, and we get to focus our energy on things that matter; like building a phenomenal product that meets our customer's needs.&lt;br /&gt;&lt;br /&gt;If you're in an early stage startup...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;focus on building the product, not the company. if you succeed, you can focus on the latter. there's a chicken and egg challenge here that's fun to play with.&lt;/li&gt;&lt;li&gt;if you're doing the previous thing, then you can't handle everyone with soft and fuzzy kid gloves. empathize with people, but be clear and concise around what's working and what's not.&lt;/li&gt;&lt;li&gt;be wary of too many cooks in the kitchen. I used to think that I'd rather deal with the challenge of managing multiple egos and blustering, but no more. I'd rather have one rooster on the team. As always this isn't perfectly cut and dry, but...&lt;/li&gt;&lt;li&gt;employees are happy to tell you what's wrong with your company, but will rarely, ever?, tell you what's wrong with you.&lt;/li&gt;&lt;li&gt;trust your gut; always.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;do &lt;span style="font-weight: bold;"&gt;your&lt;/span&gt; best, and don't worry about the people around you. a year ago Esquire magazine interviewed Client Eastwood and he spewed this gem "&lt;b&gt;As you get older,&lt;/b&gt; you're not afraid of doubt. Doubt isn't running the show. You take out all the self-agonizing."&lt;/li&gt;&lt;/ul&gt;This whole post feels cliche and as though I should have known all of this; heck I've probably been preaching many of these things. Always funny how life twists and turns.&lt;br /&gt;&lt;br /&gt;Work hard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-4361949940880413523?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/4361949940880413523/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=4361949940880413523" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4361949940880413523?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/4361949940880413523?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/12/gnips-2009-rocked-my-world.html" title="Gnip's 2009 Rocked My World" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUNQnc_eyp7ImA9WxBTF0k.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-324214493944983004</id><published>2009-12-13T16:14:00.004-07:00</published><updated>2009-12-13T16:34:53.943-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-13T16:34:53.943-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="hci" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="UX" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>Chaning My Computer Interface</title><content type="html">For a few weeks now I've been using fingerprint readers to login to my computers. Mostly an experiment to see how good, or bad, the technology has become over the past several years, it's turned into my preference for logging into my machines and accessing sensitive information.&lt;br /&gt;&lt;br /&gt;The basic idea was to minimize the number of times per day that I have to type my 13 character password. Across my machines I estimate that I get asked for my password 36 times per day (not including websites, but that's a different post). I now respond to at least 24 of those requests with a finger swipe. The remaining requests still require password typing as those requests are to unlock my Apple keychain which the software I'm using (&lt;a href="http://www.upek.com/solutions/mac/"&gt;Upek Protector Suite for Mac&lt;/a&gt;) doesn't support yet (other than one-time global unlocking which I don't want to enable).&lt;br /&gt;&lt;br /&gt;The reader accuracy is effectively 99%, so recognition, which I thought would be an issue, is a forgone conclusion these days; a non-issue.&lt;br /&gt;&lt;br /&gt;I'm left wondering why all machines don't integrate (via mouse, keyboard, or body) fingerprint readers by default. Then again, I'm also the guy wondering why all machines don't come standard with retinal scanners. I know the answer to both wishes, but... dare to dream.&lt;br /&gt;&lt;br /&gt;It looks like the Protector Suite software supports windows machines 10x better than it does OSX, but it's enough of a step up in user experience for me that I'm sticking with it.&lt;br /&gt;&lt;br /&gt;A notable bug is that manual password override doesn't work when bring the machine out of sleep mode when the USB reader is NOT plugged in. Put another way, you have to always have the reader plugged in when moving in/out of sleep mode. This is a major annoyance when using a laptop as it means you have to drag the thumbdrive sized device along with you. The workaround is to cold-boot the machine and potentially lose data in the process. Upek blames Apple's Snow Leopard release, and is waiting for them to resolve the issue, which I suspect will never happen.&lt;br /&gt;&lt;br /&gt;Feature Requests:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Firefox password manager support for Mac.&lt;/li&gt;&lt;li&gt;Background swipe monitoring for fast user switching. If I walk up to my home machine, which has 4 different user accounts on it, and the machine is logged into userA (I'm userB), I want to just swipe my finger and have it automatically switch me to userB.&lt;/li&gt;&lt;li&gt;Individual keychain access request unlock swipe support.&lt;/li&gt;&lt;li&gt;Physical hardware integration with all the hardware I use. iPhones, starting my car, all my machines, etc. The readers have to be all but free to manufacture anymore, so I'd like to see them as ubiquitous as built-in web cams please. Thanks.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;My configs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All machines running Apple OSX Snow Leopard&lt;/li&gt;&lt;li&gt;13" Macbook Pro laptop&lt;/li&gt;&lt;li&gt;21" iMac&lt;/li&gt;&lt;li&gt;13" Macbook laptop&lt;/li&gt;&lt;li&gt;One Upek mini/portable/thumb-drive sized USB reader&lt;/li&gt;&lt;li&gt;One Upek larger desktop based USB reader&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-324214493944983004?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/324214493944983004/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=324214493944983004" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/324214493944983004?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/324214493944983004?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/12/chaning-my-computer-interface.html" title="Chaning My Computer Interface" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkMGRHs9fip7ImA9WxNbGEw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-8864036947863688080</id><published>2009-11-21T08:07:00.004-07:00</published><updated>2009-11-21T08:47:05.566-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-21T08:47:05.566-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ip-address" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="clouds" /><title>IP Address Brokers; Please Stand Up</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.guim.co.uk/sys-images/Travel/Pix/pictures/2009/4/2/1238691104153/Kennet--Avon-Canal-Lock-n-001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 460px; height: 276px;" src="http://static.guim.co.uk/sys-images/Travel/Pix/pictures/2009/4/2/1238691104153/Kennet--Avon-Canal-Lock-n-001.jpg" alt="" border="0" /&gt;&lt;/a&gt;I've been trying to formulate some clear thinking for awhile now regarding a major challenge on the network today. It's been brewing for years, and the proliferation of API usage is boiling it over. The power of open discussion is giving the topic some structure and vocabulary, finally, and I'll try to take a step further with this post. Rinse... repeat.&lt;br /&gt;&lt;br /&gt;I spoke at Boulder's CTO lunch earlier this week and we got around to talking about the importance of IP addresses/namespaces/blocks in today's API economy. Josh Fraser (attended the lunch as well) does a great job distilling much of the &lt;a href="http://www.onlineaspect.com/2009/11/20/everything-comes-down-to-the-ip-address/"&gt;thinking in his recent blog post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;History has taught us that control of information is a powerful economic motivator. Governments and economies rise and fall when regulatory constraints affect how groups of people, or individuals, access to the flow of information/goods. The control may be fueled by greed or survival, but somehow choke points always make their way into the system. APIs in high demand either put business controls on access, or technical controls in place in order to keep backend software running. These controls ultimately boil down to the only entity that is immutable by the time it arrives at a computer system's gateway; the IP address.&lt;br /&gt;&lt;br /&gt;IP addresses are discrete and categorized. They are the single unit that can be perfectly controlled at the very edge of your network. Using them, your system can easily determine who to let in, and who to keep out on an individual basis, or by grouping "all requests coming from company X."&lt;br /&gt;&lt;br /&gt;The advent of cloud computing allows developers to build applications across large IP address blocks owned by someone else (e.g. Amazon). &lt;a href="http://one.valeski.org/2009/08/fatal-flaw-in-cloud-based-social-media.html"&gt;I blogged about this potential fatal flaw a few months ago&lt;/a&gt;. This is a boon for developers, and abusers alike, and it's the latter bucket of individuals that will change the way IP addresses are used for API access. This will be the second coming IP addresses onto the field. The first major control ecosystem for IP addresses came from email and email spam. This new tier will come from APIs, and abuse/spam of them.&lt;br /&gt;&lt;br /&gt;For months I'd been trying to figure out how to virtualize the IP address itself. In Ruby land, &lt;a href="http://heroku.com/"&gt;Heroku&lt;/a&gt; has pushed IP address allocation so far up into the stratosphere, that it's the closest thing I've seen to getting the IP address completely out of my way. It's only problem is that I still have to have knowledge of the block of IPs from which it draws.&lt;br /&gt;&lt;br /&gt;As a developer I don't want to have to think about the IP address from which my software is making requests. I don't want to know if it's "clean" or "dirty" from the POV of the service I'm trying to access. I just want to access the service, within the bounds of its ToS. However, with cloud computing, I may be being punished because the IP address I'm using may be in a block of addresses that the service provider has "blacklisted" and constrained access to. This is bad and I currently have to spend time thinking about it, and working around it, much like legitimate email senders had to do yesterday. Today however, they can pay an intermediary to ensure the email gets through. I want an intermediary to ensure my API calls will get through.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Industries Born&lt;/span&gt;&lt;br /&gt;In the coming months we're going to see router manufacturers make plenty of money providing more configurable IP routing/blocking/management solutions built directly into their firmware. Companies have productized their APIs, and ops teams are going to need easy solutions to managing the IP addresses accessing those APIs.&lt;br /&gt;&lt;br /&gt;More significantly, we're going to see IP address brokerages emerge for APIs just as we did for email. Hundreds of millions of dollars are spent each year to ensure email gets through. Email brokerage is a big business, and I'd like to see those firms provide API brokerage as well (hint hint &lt;a href="http://sendgrid.com/"&gt;SendGrid&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-8864036947863688080?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/8864036947863688080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=8864036947863688080" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8864036947863688080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/8864036947863688080?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/11/ip-address-brokers-please-stand-up.html" title="IP Address Brokers; Please Stand Up" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0YNRng5cSp7ImA9WxNUFkk.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-5541429202215251934</id><published>2009-11-07T17:19:00.006-07:00</published><updated>2009-11-07T17:46:37.629-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-07T17:46:37.629-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="u" /><title>Isolated Collaboration</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wired.cz/matrix1/images/FAQs/Litref/mouth.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 390px; height: 250px;" src="http://www.wired.cz/matrix1/images/FAQs/Litref/mouth.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I periodically checkout the &lt;a href="http://addons.mozilla.org/"&gt;Mozilla Add-ons site&lt;/a&gt; to see what's new. I just grabbed &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5677"&gt;Reframe-it&lt;/a&gt; given that a decentralized client, non-publishing platform specific, commenting model only makes sense. Sadly, no-one's using it; the sites I visited didn't have others commenting on content. This reminded me of the me.dium (now oneriot) sidebar I worked on years ago. Again, another solid decentralized collaborative client (centralized server) product idea, that consumers wouldn't consume. Again, sad.&lt;br /&gt;&lt;br /&gt;As consumers why do we continue to do it the wrong way? Relying on publishers to install walled garden user feedback/comment models (IntenseDebate, disquss, etc) is a disaster. When does commenting/discussion break out into its own client/server/protocol (obviously reuse something on that front) so I don't have to rely on the Publisher to have done something w/ their site to support feedback loops. I wonder if Google Wave will gain enough momentum to cause real change here.&lt;br /&gt;&lt;br /&gt;The industry is heavily weighted toward open protocols/standards that allow services to cross-communicate (oauth, openid, come to mind). While a good thing, I think we've swung too far to the server-side in this regard. Look at it this way, sans browsers (clients), we've got nothing, yet we're trying to build something (collaboration) based on servers/publishing platforms that have walls between them. That seems horribly broken to me. The model is ripe to have clients (mind you, potentially server-side operated clients... not strictly client-side-software... though in this case I suspect client-side is opportune) act as collaborative agents in order to get a sense of community across the network (not just within various walled gardens) at large.&lt;br /&gt;&lt;br /&gt;I don't buy that customers don't want this; lots of people comment on blogs. It falls squarely into the "we don't know what's in our own best interest" bucket. It's going to take a consortium of the major publishing players (from news sites, media companies, blog services) to buy-in to a standard (ha!), or the client (browser) is going to have to force the UI/UX onto us; optional plugins/addons won't cut it.&lt;br /&gt;&lt;br /&gt;The network is desperate for a revolution on several fronts. I'm hopeful there's enough steam in the collective invention engine to make some stuff happen. While I've enjoyed living through the advent of the Internet, I don't want it to have been the only major societal shift in my lifetime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-5541429202215251934?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5541429202215251934/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5541429202215251934" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5541429202215251934?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5541429202215251934?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/11/isolated-collaboration.html" title="Isolated Collaboration" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0EGRnY_eip7ImA9WxNVEU0.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-3856884443643831430</id><published>2009-10-20T22:11:00.003-06:00</published><updated>2009-10-20T23:07:07.842-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T23:07:07.842-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="parenting" /><title>Like Father, Like Son</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ori.dhhs.gov/tools/high_low_contrast_regions_large.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 800px; height: 400px;" src="http://ori.dhhs.gov/tools/high_low_contrast_regions_large.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahhh parenting.&lt;br /&gt;&lt;br /&gt;Earlier this evening my wife and I returned from our seven-year-old's first parent-teacher conference as a first grader. We'd done a few when he was in kindergarten, but those don't really count as they're just too young to derive much from the discussion.&lt;br /&gt;&lt;br /&gt;This one was hard.&lt;br /&gt;&lt;br /&gt;I never fit in growing up. I probably still don't today, but as we grow older there are fewer and fewer clicks for folks to actually fit into, so things tend to find natural balance. At first glance it's looking like my son won't fit the general profile either. I feel bad for my wife as, if these early signs are a harbinger, she's not ready for what lies ahead in the years to come.&lt;br /&gt;&lt;br /&gt;You see, I can be a tad pedantic, and my son is trending the same way. I've always been this way, and particularly in the early years, it really gets in the way. When other kids were blissfully unaware of what was going on around them, I was obsessed with my surroundings; people, authority (real &amp; imagined), culture, structure, music, science, how the world works, etc. The challenge is that such an outlook on life doesn't fit the mold, so there is constant tension, confusion, and misunderstanding amongst the players.&lt;br /&gt;&lt;br /&gt;The education system deemed me "too serious," "angry," "depressed," "anti-social," and on and on and on. As a result, I was always the odd man out. The models didn't work for me, so I got squeezed out to the sidelines while the majority gleefully marched along.&lt;br /&gt;&lt;br /&gt;After some big bumps in the road, I finally figured out the game and realized it was easier to play along with everyone else for a few more years, then I'd be off to college and able to define my world the way I wanted it to be. I'd get to leave the constricted frameworks behind. All of that has worked out pretty well, though there are still plenty of constructs I don't fit in. I've learned how to adapt/adjust however, and life is good.&lt;br /&gt;&lt;br /&gt;We talked with the teacher for awhile about some of these notions, and I imagined my parents' first parent-teacher conference with my first grade teacher. I'm sure it went the exact same way. My parents screwed up plenty while rearing me and my brother (we'll obviously do the same with our children), but one thing they did that blows me away to this day is they loved me, believed in me, and fought for me for over a decade of true mayhem.&lt;br /&gt;&lt;br /&gt;While I hope we're just in yet another proverbial phase, in case we're not, I look forward to leading my son with the same love, perseverance, dedication and faith that my parents did with me.&lt;br /&gt;&lt;br /&gt;To my wife, if we have to walk down this path, while it'll be petrifying, don't worry, I've walked down it, I know which turns to take, and amazing things are at the other end.&lt;br /&gt;&lt;br /&gt;To my son (if you ever wind up reading this), I love who you are. I love knowing we see the world through similar eyes. We experience life in the same way, and that bond is truly amazing; we'll share it forever in ways few ever do. Embrace who you are and enjoy it. Being the black-sheep yields greatness. I'll always be by your side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-3856884443643831430?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/3856884443643831430/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=3856884443643831430" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3856884443643831430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/3856884443643831430?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/10/like-father-like-son.html" title="Like Father, Like Son" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQCRXs_cSp7ImA9WxNWF0g.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-5774528950390256307</id><published>2009-10-16T22:43:00.004-06:00</published><updated>2009-10-16T23:12:44.549-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T23:12:44.549-06:00</app:edited><title>Nokogiri Performance: xpath vs. tree walking/iterating</title><content type="html">At &lt;a href="http://gnip.com"&gt;Gnip&lt;/a&gt; we're doing some heavy XML parsing in Ruby and obviously chose &lt;a href="http://nokogiri.rubyforge.org/nokogiri/"&gt;Nokogiri&lt;/a&gt; as the underlying engine. I started the week doing xpath searches to tease out the elements/attributes from the documents we were parsing, and ended the week iterating over the root's children in order to achieve significant (~3x) performance improvements. While xpath is convenient, as you don't have to pay attention to document structure (assuming you have your head around xpath syntax to begin with), it's horribly expensive in terms of processing time. It's truly searching the document for what you want; expensive!&lt;br /&gt;&lt;br /&gt;There's a big difference between using the "search" (e.g. xpath) interface on top of a parsed DOM and running over the entire tree, testing each node for what it is you're looking for. Code gets a little uglier when doing the latter, it's not as elegant/clean, but performance starts kicking in when you do it. Moving from xpath search-style parsing, to tree walking yielded ~3x performance improvement in parsing for me. I suspect that going all the way to either Nokogiri's Reader or SAX interface would yield an additional 10% improvement over that. However, I'm stoping here for now as the readability/complexity detriment in doing a full Reader/SAX stack-maintenance model doesn't feel worth it at the moment. I would like to try &lt;a href="http://github.com/pauldix/sax-machine"&gt;pauldix's SAX machine&lt;/a&gt; declarative parser (built on Nokogiri) and run some benchmarks, but... another day.&lt;br /&gt;&lt;br /&gt;Old:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  doc = Nokogiri::XML.parse(some_xml_string) { |cfg| cfg.noblanks }&lt;br /&gt;&lt;br /&gt;  doc.xpath('/xmlns:feed/xmlns:entry').each do |entry|&lt;br /&gt;    at = entry.xpath('xmlns:published').text&lt;br /&gt;    id = entry.xpath('xmlns:id').text&lt;br /&gt;    ...&lt;br /&gt;  end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;New:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  doc = Nokogiri::XML.parse(some_xml_string) { |cfg| cfg.noblanks }&lt;br /&gt;&lt;br /&gt;  doc.root.children.each do |node|&lt;br /&gt;    if node.name == 'entry'&lt;br /&gt;      node.children.each do |sub_e|&lt;br /&gt;        at = sub_e.inner_text if sub_e.name == 'published'&lt;br /&gt;        id = sub_e.inner_text if sub_e.name == 'id'&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    ...&lt;br /&gt;  end&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-5774528950390256307?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5774528950390256307/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5774528950390256307" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5774528950390256307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5774528950390256307?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/10/nokogiri-performance-xpath-vs-tree.html" title="Nokogiri Performance: xpath vs. tree walking/iterating" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQESHo6eip7ImA9WxNQFEg.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-5734533734802801609</id><published>2009-09-20T08:19:00.004-06:00</published><updated>2009-09-20T08:51:49.412-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-20T08:51:49.412-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mountain biking" /><category scheme="http://www.blogger.com/atom/ns#" term="friends" /><title>Tahoe Weekend</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3419/3934696702_b77c10db67.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 375px; height: 500px;" src="http://farm4.static.flickr.com/3419/3934696702_b77c10db67.jpg" alt="" border="0" /&gt;&lt;/a&gt;I'm wrapping up a perfect mountain biking weekend with some old friends. We've been riding our brains out for three days up in Lake Tahoe. One of the guys used to own his own bike shop, so he became defacto group-support on the trail. What a luxury it is having a mechanic on the rides; the slightest mechanical issue gets resolved in an instant. He also turned out to be a great cook, so instead of constantly eating out, we had fabulous home cooked meals to start and end the days. You rule Buck.&lt;br /&gt;&lt;br /&gt;About half of the group consisted of locals (Truckee, Tahoe Donner) that one of my friends befriended when he lived up here for a few years. The local connection is always priceless. The right trails, the right subtleties, the right everything, instead of fumbling around like a pure tourist. One of the group owns a restaurant in Reno ("Beuno Grill"), and his annual community party coincided with our trip so we partied there last night. Great people, great time.&lt;br /&gt;&lt;br /&gt;The main rides:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://connect.garmin.com/activity/13546608"&gt;Tahoe Rim&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://connect.garmin.com/activity/13615497"&gt;Hole in the Ground&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;One of my favorite things about riding a hard-tail bike is when I get mixed in with soft-tail riders. There's nothing like being told "you can't do this trail on that" by a softie, and then beating them to the finish. I did get to ride some ultra-plush custom Ventanna full-suspensions though. I have to say, really nice rides, but just too disconnected from the trail. I need to feel what's going on underneath me, not be shielded from it. That makes for a good segue into one of the cool cars that came up.&lt;br /&gt;&lt;br /&gt;The car enthusiast in the group brought up his new tricked out BMW M5 (500hp). While a killer ride with amazing power, the entire system is "drive by wire." Driving it was almost confusing as I lacked direct connections to the brakes, gearbox, and throttle. I want to be directly connected to a car with that much power. While BMW had done an incredible job pulling it all together, it was obvious there was a computer between me and the road.&lt;br /&gt;&lt;br /&gt;I've been on V-Brakes forever, but after riding some HOPE branded hydraulic disk brakes, I'm going to switch over. The stopping power is incredible, and my forearms could use a break. I'm going to stay hard-tail though; all hard... all the time.&lt;br /&gt;&lt;br /&gt;Great weekend. Nice to catchup with old friends. Nice to grind out some epic rides.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-5734533734802801609?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/5734533734802801609/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=5734533734802801609" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5734533734802801609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/5734533734802801609?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/09/tahoe-weekend.html" title="Tahoe Weekend" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkMER3k6eip7ImA9WxNQEkw.&quot;"><id>tag:blogger.com,1999:blog-8196699014965996395.post-6690709420140331134</id><published>2009-09-17T11:26:00.008-06:00</published><updated>2009-09-17T12:00:06.712-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T12:00:06.712-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="startup" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="scale" /><category scheme="http://www.blogger.com/atom/ns#" term="techstars" /><title>TechStars Pain Pattern</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.colinsackett.co.uk/images/books/ellipsis.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 472px; height: 354px;" src="http://www.colinsackett.co.uk/images/books/ellipsis.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Image courtesy of&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt; &lt;a href="http://www.colinsackett.co.uk/"&gt;&lt;span style="font-size:100%;"&gt;Colin Sackett &lt;span class="maroon"&gt;|&lt;/span&gt; Book design &amp;amp; publishing&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I recognize patterns; large and small; over short periods, and long. Remember those SAT questions to find patterns in obscure information? I &lt;span style="font-weight: bold;"&gt;owned&lt;/span&gt; those. After my 2nd year involved in &lt;a href="http://www.techstars.org/"&gt;TechStars&lt;/a&gt;, a pattern has squarely emerged. Almost all teams build something quickly based on some LAMP stack derivative. The teams that "succeed" (e.g. find users/usage) always start asking performance related "help" questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"The application is slowing down." "The site is slow when we do a campaign." etc. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wind up digging into a team's stack and inevitably see three things that always account for the bulk, if not being exclusively, "the problem."&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Page loads cause complex SQL queries to be run. Don't do that. It's cute and easy when you don't have usage, but it won't work when you get traction. If you did it for expediencies' sake, fine, but plan on undoing it later. DB's can crater any good application. Cache the data your users want so they don't have to hit a DB for it. You can't always tear a DB out of the flow, but try, and try hard.&lt;/li&gt;&lt;li&gt;The server does more processing than it needs to do. Use your users. They have powerful computers and browsers that can execute code very well. Shunt rendering of data/objects down to the browser via JS (or Flash), if this becomes a problem. Do you really need to parse that DOM on the server for every page-load to derive the list of things you want to show the user? No, let client-side JS do the parsing/sorting. This line is always fine however; overburdening the browser doesn't buy you much. Point is, find the balance. Your goal in life should be to serve flat files that require nothing more than Apache connecting an IP socket to a file descriptor to let the OS shuffle bits to and fro. Follow that path and good things will come. Flatten your stuff &lt;span style="font-weight: bold;"&gt;before &lt;/span&gt;a user accesses a page on your service, not &lt;span style="font-weight: bold;"&gt;when&lt;/span&gt; they do.&lt;/li&gt;&lt;li&gt;Don't store images in a database. C'mon, seriously. Worst case store references to said images that live out on a disk (or CDN) somewhere. I'd argue you don't even need to store the references if you get your model right; your app should just be able to derive an image's location based on some pattern. Ahhh, full circle.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;On a related note, at a local "CTO lunch" the other day, &lt;a href="http://falseprecision.typepad.com/my_weblog/2007/11/scaling-your-st.html"&gt;Todd Vernon recited an old blog post of his called "Scaling Your Startup"&lt;/a&gt;. A few of some of these principles are reiterated there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8196699014965996395-6690709420140331134?l=one.valeski.org' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://one.valeski.org/feeds/6690709420140331134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8196699014965996395&amp;postID=6690709420140331134" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6690709420140331134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8196699014965996395/posts/default/6690709420140331134?v=2" /><link rel="alternate" type="text/html" href="http://one.valeski.org/2009/09/techstars-pain-pattern.html" title="TechStars Pain Pattern" /><author><name>Jud</name><uri>http://www.blogger.com/profile/09136293397615624023</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088564897660357856" /></author><thr:total>0</thr:total></entry></feed>
