<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for bse</title>
    <link>http://www.advogato.org/person/bse/</link>
    <description>Advogato blog for bse</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Thu, 20 Jun 2013 02:21:44 GMT</pubDate>
    <item>
      <pubDate>Tue, 31 May 2011 08:02:31 GMT</pubDate>
      <title>Office Snapshots: Eventbrite</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=64</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/YvkXb9QrrdA/office-snapshots-eventbrite</guid>
      <description>&lt;p&gt;A rather representative tour of the Eventbrite space. They missed the kitchen though.&lt;/p&gt;&lt;p&gt;
  &lt;a href="http://soylent.us/2011/05/office-snapshots-eventbrite" &gt;
    &lt;strong&gt;+&lt;/strong&gt;
  &lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/YvkXb9QrrdA" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 24 May 2011 23:48:21 GMT</pubDate>
      <title>The Oona: Backed</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=63</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/vVK-MemPK7o/the-oona-backed</guid>
      <description>&lt;p&gt;I&#x2019;ve been looking for a nice solution for mounting my iPhone to the car windscreen, and other stand related duties. Boom. Sold, or &lt;em&gt;Kickstartered&lt;/em&gt;, or however you put it.&lt;/p&gt;
&lt;small&gt;
  &lt;em&gt;via &lt;a href="http://brooksreview.net/2011/05/oona/" &gt;Ben Brooks&lt;/a&gt;&lt;/em&gt;
&lt;/small&gt;&lt;p&gt;
  &lt;a href="http://soylent.us/2011/05/the-oona-backed" &gt;
    &lt;strong&gt;+&lt;/strong&gt;
  &lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/vVK-MemPK7o" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 24 May 2011 23:48:21 GMT</pubDate>
      <title>Something Completely Different</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=62</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/OLkqMdhXk_M/something-completely-different</guid>
      <description>&lt;p&gt;On Tuesday, I&#x2019;ll be moving on from a life of graphic &amp;amp; web design at &lt;a href="http://creativecommons.org/" &gt;Creative Commons&lt;/a&gt; into a full-time software engineering position with &lt;a href="http://eventbrite.com/" &gt;Eventbrite&lt;/a&gt;. One passion for another, sort of.&lt;/p&gt;

&lt;p&gt;Code and design both have well defined processes, and usually require creative problem solving. Most of the time they&#x2019;re logical and structured, and often spiral out into hard to manage blobs.&lt;/p&gt;

&lt;p&gt;For as long as I can remember I&#x2019;ve had an eye for design, with strengths in layout, structure, grid arrangement, and balance. But with visual design, I don&#x2019;t have quite the same enjoyment of the process, the journey to the end result, as I do when I work through a software implementation problem. Solutions in code are gratifying, but not as much as when you discover and learn new things while working toward those solutions.&lt;/p&gt;

&lt;p&gt;At the heart of it, both of these interests stem from my desire to understand how things work and fit together. I often work on projects that aid in learning frameworks, tools, and abstract concepts. For instance, I started &lt;a href="http://gedit.org/" &gt;Gedit&lt;/a&gt; to learn the GTK+ framework, and fill a gap in a very immature&#xA0;platform; &lt;a href="http://redprocess.com/mercury" &gt;Mercury&lt;/a&gt; was a way to improve my knowledge of Cocoa and the iOS frameworks (and scratch an itch); my &lt;a href="http://mralex.org/" &gt;portfolio&lt;/a&gt; web app, &lt;a href="http://github.com/mralex/portishead" &gt;Portishead&lt;/a&gt;, got me up to speed on Rails 3.0 and new Javascript techniques.&lt;/p&gt;

&lt;p&gt;This inquisitiveness has also led me to tinkering with photography, video production, 3D&#xA0;modeling, and a mechanical understanding of cars &amp;amp; motorcycles. But that&#x2019;s for another time.&lt;/p&gt;

&lt;h3 id="the_new_thing"&gt;The New Thing&lt;/h3&gt;

&lt;p&gt;For the past five years at &lt;em&gt;CC&lt;/em&gt;, I&#x2019;ve balanced coding (HTML, CSS, JS, PHP, etc) with more &lt;em&gt;Creative Suite&lt;/em&gt; related design, coming up with print and online concepts, and often implementing them. I&#x2019;ve done my best to design and build great user experiences, coming up with those concepts just isn&#x2019;t really where my passion lies.&lt;/p&gt;

&lt;p&gt;By letting go of that aspect, I&#x2019;ll be able to focus on where I really excel, working with a larger team to bring visual ideas to life, creating great user experiences through code wrangling, and following my engineering passions to a greater degree.&lt;/p&gt;

&lt;p&gt;At least, &lt;em&gt;that&#x2019;s the plan&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It was never my goal 10 years ago, while starting at art school, to end up in a programming role. Design was my long-term interest and passion at the time, but my engineering skills were indeed a definite influence in my hiring at Creative Commons. It only recently became clear what I&#x2019;d really prefer to be doing with my time, and I definitely don&#x2019;t feel like I wasted the past decade. The knowledge I&#x2019;ve gained is invaluable and likely to influence everything I do in the future. If I didn&#x2019;t follow my passions and lofty goals now, I would certainly be doing a disservice to everyone who relied on me.&lt;/p&gt;

&lt;p&gt;With almost 20 years of hacking and tinkering on code, I&#x2019;m fairly certain this is an excellent idea. Maybe I&#x2019;ll finally have the chance to fill in the engineering knowledge I lack. After all these years of self-taught programming experience, there are holes.&lt;/p&gt;
&lt;small&gt;
  &lt;em&gt;(Section title borrowed from &lt;a href="http://yergler.net/blog/2011/04/18/the-new-thing/" &gt;Nathan Yergler&lt;/a&gt;, who I'll be joining at Eventbrite after our respective stints at CC)&lt;/em&gt;
&lt;/small&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/OLkqMdhXk_M" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 24 May 2011 23:48:21 GMT</pubDate>
      <title>Hype</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=61</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/jc-RNQiLBzY/hype</guid>
      <description>&lt;p&gt;There&#x2019;s room for another nail in Flash&#x2019;s coffin, right?&lt;/p&gt;

&lt;p&gt;I&#x2019;m sure this app will inspire a lot of the cutesy and unnecessary animated hijinks, the likes of which we haven&#x2019;t seen since the early 90s. At least my CPU will be happier this time around.&lt;/p&gt;&lt;p&gt;
  &lt;a href="http://soylent.us/2011/05/hype" &gt;
    &lt;strong&gt;+&lt;/strong&gt;
  &lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/jc-RNQiLBzY" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 10 May 2011 22:05:28 GMT</pubDate>
      <title>Weather Apps</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=60</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/MteBG0cqfb8/weather-apps</guid>
      <description>&lt;p&gt;Ben Brooks wrote about iPhone weather apps a couple weeks ago, including some nice words about the &lt;a href="" 'http://itunes.apple.com/us/app/mercury-worldwide-weather/id308794306?mt=8'&gt;app I wrote&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In response to his implicit cons: I&amp;#8217;d definitely like to add doppler maps, and figure out ways to present more information on the main screen, while keeping the UI concise and clean. More forecast data certainly wouldn&amp;#8217;t hurt.&lt;/p&gt;&lt;p&gt;&lt;a href="" 'http://soylent.us/2011/05/weather-apps'&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/MteBG0cqfb8" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Thu, 5 May 2011 06:12:05 GMT</pubDate>
      <title>Sinatra::Memcacher</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=59</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/d2znpsKDy9c/sinatra-memcacher</guid>
      <description>&lt;p&gt;A number of &lt;a href="" 'http://memcached.org/'&gt;memcached&lt;/a&gt; solutions exist for Sinatra, but I couldn&amp;#8217;t get any of them to work quite right with the current &amp;#8212; 1.2 &amp;#8212; version. So put together a very simple implementation, loosly based on &lt;a href="" 'https://github.com/gioext/sinatra-memcache'&gt;gioext/sinatra-memcache&lt;/a&gt;, using the &lt;a href="" 'https://github.com/fauna/memcached'&gt;memcached&lt;/a&gt; gem.&lt;/p&gt;&lt;p&gt;&lt;a href="" 'http://soylent.us/2011/05/sinatra-memcacher'&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/d2znpsKDy9c" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Tue, 3 May 2011 21:07:56 GMT</pubDate>
      <title>jQuery 1.6 Released</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=58</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/GipVvtEW4gw/jquery-1-6-released</guid>
      <description>&lt;p&gt;jQuery&amp;#8217;s new, faster release schedule brings a nice update today, with notable changes to attribute and property handling; relative CSS updating; deferred handling for animation completion; and obligatory speed improvements, with graphs to prove it!&lt;/p&gt;&lt;p&gt;&lt;a href="http://#{options.hostname}#{a.permalink}" &gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/GipVvtEW4gw" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 2 May 2011 05:07:40 GMT</pubDate>
      <title>Back to Front</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=57</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/iI_GhBqVmZk/back-to-front</guid>
      <description>&lt;p&gt;Well, well, well, here we are again. Another year, another blog, another attempt to write in something approaching a consistent manner. This year, things are different. I&amp;#8217;ve started, well and truly, from scratch.&lt;/p&gt;

&lt;h3 id='another_blog'&gt;Another Blog&lt;/h3&gt;

&lt;p&gt;It seems as though every year I try to write online (or, really, anywhere), and while the intentions are great, it never really works out. Like a poor carpenter, I could blame my tools, and while they&amp;#8217;re a part of the problem (see below), the main problem is me. Partially not having the confidence the words I write are written well, partially having trouble having anything to write about, and a whole heaping of laziness. This is probably true for a lot of people trying to write.&lt;/p&gt;

&lt;p&gt;I can&amp;#8217;t say I&amp;#8217;ve figured out those problems, but I&amp;#8217;m willing to try again. Try, try again. I&amp;#8217;ll generally try to write about things I know about, or learning about. And link to nifty things. It&amp;#8217;s really about just getting down to it and making that &lt;em&gt;clackity noise&lt;/em&gt; (to awfully &lt;a href="" 'http://www.kungfugrippe.com/post/169873399/clackity-noise'&gt;paraphrase Merlin&#xA0;Mann&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id='from_scratch'&gt;From Scratch&lt;/h3&gt;

&lt;p&gt;For this attempt at consistent writing, I decided to build a blogging platform from the ground up, and with it including the bare essential features necessary to publish. I&amp;#8217;m often picky about the tools I use, and there are lots of platforms for writing on the web today. The most popular being Tumblr or WordPress. But for me, Tumblr is unstable and ugly; Wordpress is a huge mess and ugly. I understand my needs when it comes to a tool like this. I wanted something lightweight and fast; something I could update from anywhere; and quite selfishly, something using technologies I&amp;#8217;ve been learning lately. So I wrote my own, on top of Sinatra and MongoDB.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not exactly advocating everyone should rush out, ditch well tested blogging tools, and write new solutions. I do recommend, however, the evaluation of tools &amp;#8212; Maybe try something else if your current tools frustrate you.&lt;/p&gt;

&lt;h4 id='its_not_my_first_time_at_this_rodeo'&gt;It&amp;#8217;s not my first time at this rodeo&lt;/h4&gt;

&lt;p&gt;Like many web developers, I&amp;#8217;ve hacked together my own blogging tools many times, and I&amp;#8217;ve used various pre-built systems. But after some time dabbling with Sinatra and MongoDB, I made the decision to actually build the software I needed with them.&lt;/p&gt;

&lt;p&gt;At some point in the near future I&amp;#8217;ll make the Github repository public, after a little refactoring and adding all-important testing code (shame on me for not doing that already). I will almost certainly write some articles documenting parts of the project, problems that came up, and the things I&amp;#8217;ve learned from developing it. As such, a few things first&amp;#8230;&lt;/p&gt;

&lt;h4 id='tools_of_the_trade'&gt;Tools of the trade&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="" 'http://sinatrarb.com/'&gt;Sinatra&lt;/a&gt;&lt;/strong&gt; &amp;#8212; I knew I wanted to keep the code light and fast. While I&amp;#8217;m most comfortable in Rails these days, I know full well how much overhead it has. I just didn&amp;#8217;t need all the bells and whistles, and the ones I did need (&lt;em&gt;&lt;a href="" 'https://gist.github.com/119874'&gt;partials&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="" 'https://github.com/foca/sinatra-content-for'&gt;content_for&lt;/a&gt;&lt;/em&gt;), were easily replaced.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="" 'http://mongodb.org/'&gt;MongoDB&lt;/a&gt;&lt;/strong&gt; - I&amp;#8217;m a big fan of it&amp;#8217;s performance, and query interface. A blogging system seemed like a nice use case for storing arbitrary data consisting mostly of text. I also exploited &lt;em&gt;map/reduce&lt;/em&gt; to precache the archive listing.&lt;/p&gt;

&lt;p&gt;On the ORM side of things I went with &lt;em&gt;&lt;a href="" 'http://mongomapper.com/'&gt;MongoMapper&lt;/a&gt;&lt;/em&gt; with its friendly, ActiveRecord-like&#xA0;API.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="" 'http://memcached.org/'&gt;Memcached&lt;/a&gt;&lt;/strong&gt; &amp;#8212; The secret sauce for high-performance websites everywhere, or at least this one. An extremely simple Sinatra extension using a fast Ruby gem, allows this blog to be faster, and as light on the server as plain HTML files.&lt;/p&gt;

&lt;p&gt;I also tried using various other caching methods including &lt;em&gt;Sinatra::Cache&lt;/em&gt; and &lt;em&gt;Rack::Cache&lt;/em&gt;, with varying degrees of success. But support and incompatibility with Sinatra&amp;#8217;s sessions forced me away. So much so, I almost gave up with this project entirely for a Jekyll implementation.&lt;/p&gt;

&lt;p&gt;&lt;a href="" 'http://jekyllrb.com/'&gt;Jekyll&lt;/a&gt; is really nice and all, but flat files aren&amp;#8217;t my thing. I felt having to update files too constraining, without the ability to easily update things on the fly without lots of tinkering and hacking. I personally really like database backed systems and remote APIs.&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="" 'http://dropbox.com/'&gt;Dropbox&lt;/a&gt;&lt;/strong&gt; &amp;#8212; I would be remiss if I didn&amp;#8217;t mention this essential tool. I&amp;#8217;ve been using it for years with my personal documents, and as anyone who uses it with multiple computes knows, it&amp;#8217;s a great way to quickly and easily transfer files between systems. It&amp;#8217;s definitely easier than building a complex file attachment system.&lt;/p&gt;

&lt;p&gt;I followed &lt;a href="" 'http://wiki.dropbox.com/TipsAndTricks/MultipleInstancesOnUnix'&gt;these handy instructions&lt;/a&gt; to have multiple instances of Dropbox on my Mac, without forcing me to publish the contents of my personal account and keeping things nicely siloed.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id='there_it_is'&gt;There it is&lt;/h3&gt;

&lt;p&gt;With that out of the way, the page is blank and fresh for all manner of words.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/redprocess/~4/iI_GhBqVmZk" height="1" width="1"/&gt;</description>
    </item>
    <item>
      <pubDate>Fri, 27 Aug 2010 06:06:37 GMT</pubDate>
      <title>FotoTable at 10K Apart</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=56</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/0QDWaRrS7GA/1018204088</guid>
      <description>&lt;a href="http://10k.aneventapart.com/Entry/330" &gt;FotoTable at 10K Apart&lt;/a&gt;: &lt;p&gt;Remember when you would dump all your photos onto the table and sort through them? Maybe putting them in sorted piles&#x2026; Well now you can do it again! This time in your web browser, using Flickr searches, without spilling water on those precious memories.&lt;/p&gt;

&lt;p style="text-align:center;"&gt;&lt;a href="http://10k.aneventapart.com/Entry/330" &gt;&lt;img src="http://redprocess.com/b/foto-1.jpg" alt="FotoTable" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://10k.aneventapart.com/Entry/330" &gt;FotoTable&lt;/a&gt;&lt;/strong&gt;, my entry for &lt;a href="http://10k.aneventapart.com/" &gt;10K Apart&lt;/a&gt; &#x2014; The challenge to build a fully functional web app in less than 10K. Reminiscent of the &lt;a href="http://www.sylloge.com/5k/original.html" &gt;5K Awards&lt;/a&gt;, some 10 years ago.&lt;/p&gt;

&lt;p&gt;Supporting Safari 5, Chrome 5, FireFox 3.6, and IE 9, FotoTable exploits some fun drag and drop effects; various CSS3 features; and even a hint of LocalStorage. As strange as it may sound, to some, making it work in IE9 didn&#x2019;t take much effort. A real testament to the developers at Microsoft, after the years of hassle with IE6.&lt;/p&gt;

&lt;p&gt;And while the contest was limited 10K, I have a few more ideas left for this app, and intend to develop it further with more search features; multitouch for your iPhones and Androids; and perhaps even more. Maybe with a limit of &lt;em&gt;20K&lt;/em&gt; instead.&lt;/p&gt;

&lt;p&gt;Vote FotoTable, and tell your friends, colleagues, and pets.&lt;/p&gt;</description>
    </item>
    <item>
      <pubDate>Sat, 21 Aug 2010 03:06:22 GMT</pubDate>
      <title>ProGuard Pro Tips</title>
      <link>http://www.advogato.org/person/bse/diary.html?start=55</link>
      <guid>http://feedproxy.google.com/~r/redprocess/~3/4E_WhFv6uXM/985360733</guid>
      <description>&lt;p&gt;With my launch of &lt;a href="http://protonapp.com" &gt;Proton&lt;/a&gt;, I decided to incorporate the recently released &lt;a href="http://developer.android.com/guide/publishing/licensing.html" &gt;License Verification Library&lt;/a&gt; (LVL), which is meant to improve security of Android apps by adding a licensing layer to help ensure you&#x2019;re running an app legally.&lt;/p&gt;

&lt;p&gt;Google&#x2019;s own documentation for the LVL notes &lt;a href="http://developer.android.com/guide/publishing/licensing.html#app-obfuscation" &gt;code obfuscation&lt;/a&gt; is &lt;em&gt;strongly recommended&lt;/em&gt;. What they don&#x2019;t mention are the specific &lt;a href="http://proguard.sourceforge.net/" &gt;ProGuard&lt;/a&gt; settings (or any other Java obfuscator, for that matter) to use when LVL is in place. The default ProGuard configuration example will cause your app to &lt;em&gt;force quit&lt;/em&gt; with an enumeration related exception.&lt;/p&gt;

&lt;p&gt;The only documentation online that deals with the LVL/ProGuard combination is a lot of people complaining about their apps crashing after obfuscation. Not very helpful.&lt;/p&gt;

&lt;p&gt;After much time spent tweaking settings, and searching for solutions, I found a combination that works without causing any &lt;em&gt;force quits&lt;/em&gt; or license verification errors.&lt;/p&gt;

&lt;p&gt;Add the following to your ProGuard configuration:&lt;/p&gt;

&lt;pre class="prettyprint"&gt;-keep class com.android.vending.licensing.ILicensingService

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}&lt;/pre&gt;

&lt;p&gt;The main problem lay with allowing ProGuard touch enumerations (as noted in &lt;a href="http://proguard.sourceforge.net/manual/examples.html#enumerations" &gt;documentation&lt;/a&gt; I can&#x2019;t easily link to). A secondary issue was a missing entry point to the LVL service.&lt;/p&gt;

&lt;p&gt;The enumeration fix may also be of use if you&#x2019;re experiencing problems with ProGuard and not using the License Verification Library. Your mileage may vary. Document any further related problems or fixes in the comments.&lt;/p&gt;

&lt;p&gt;With all of the above said, I&#x2019;m still not sure LVL is quite mature enough to rely on yet. Unless I&#x2019;m just &lt;em&gt;doing it wrong&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
