{"id":2675,"date":"2012-05-11T11:08:42","date_gmt":"2012-05-11T19:08:42","guid":{"rendered":"http:\/\/blog.mozilla.org\/webdev\/?p=2675"},"modified":"2012-05-13T06:08:56","modified_gmt":"2012-05-13T14:08:56","slug":"better-know-a-webdev-lars-lohn","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/","title":{"rendered":"Better Know a WebDev: K Lars Lohn"},"content":{"rendered":"<p>This week&#8217;s special guest on <a href=\"http:\/\/blog.mozilla.org\/webdev\/category\/better-know-a-webdev\/\">Better Know a WebDev<\/a>, <a href=\"https:\/\/twitter.com\/#!\/2braids\">K Lars Lohn<\/a>!<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone\" title=\"Lars\" src=\"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG\" alt=\"Lars\" width=\"288\" height=\"384\" \/><\/p>\n<h3>What do you do at Mozilla?<\/h3>\n<p>Officially, I am the the Software Architect for the <a href=\"https:\/\/github.com\/mozilla\/socorro\">Socorro project<\/a>.\u00a0 Unofficially, I spread chaos and confusion as a self proclaimed Cowboy Programmer.\u00a0 I proudly stand as the only member of Webdev that does no Web development. My work is all behind the scenes at the server and daemon level.<\/p>\n<p>Socorro was handed to me in May of 2008 as a non-working system that needed to be functional for the June Firefox 3 launch. Even with short schedule, I met the deadline, but the result was a pure unadulterated hack.\u00a0 With ambiguous to nonexistent specs, I continued development as a solo performance art piece.\u00a0 Some features still in use today went from concept to\u00a0 production in less than thirty minutes.\u00a0 Eventually, a team formed around me and we began the slow process of applying standards and retroactive forethought to the codebase.\u00a0 Today the system serves terabytes of data and handles millions of transactions per day.<\/p>\n<h3>Any fun side projects you\u2019re working on?<\/h3>\n<p>All of my side projects are fun, but they&#8217;re not all software related:<\/p>\n<ul>\n<li>I run a wholesale nursery specializing in roses.\u00a0 I&#8217;ve literally thousands of varieties in a rose garden that spans an entire acre.\u00a0 I&#8217;m a plant nerd with seven greenhouses and an appetite for <a href=\"https:\/\/picasaweb.google.com\/111310001369535153197\/201204AprilInTheHeatedGreenhouse?authkey=Gv1sRgCOCrtJqF-YewCg&amp;noredirect=1\">strange plants<\/a>.<\/li>\n<li>I&#8217;m constantly tinkering\u00a0 with my 2008 Harley FX-STB.\u00a0 I added a USB port to it.\u00a0 I&#8217;m writing software to monitor engine performance and tweak the fuel injectors.\u00a0 Maybe I can find a way to make a B2G app for it.<br \/>\n<a href=\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/05\/lars_harley.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-2680\" title=\"Lars Harley\" src=\"http:\/\/blog.mozilla.org\/webdev\/files\/2012\/05\/lars_harley-300x249.png\" alt=\"Lars Harley\" width=\"300\" height=\"249\" srcset=\"https:\/\/blog.mozilla.org\/webdev\/files\/2012\/05\/lars_harley-300x249.png 300w, https:\/\/blog.mozilla.org\/webdev\/files\/2012\/05\/lars_harley.png 401w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/li>\n<li>I play Baroque oboe and recorder for my own amusement.\u00a0 I&#8217;ve also just placed a foot in the world of electronic instruments with a Yamaha WX5 MIDI woodwind instrument that drives a synth.\u00a0 I&#8217;m suddenly writing MIDI interface code in Python.<\/li>\n<\/ul>\n<h3>How did you get started in web development or programming?<\/h3>\n<p>I&#8217;ve been captivated by computers and programming since 1974 when my high school math lab got its first timeshare account on the local university mainframe.\u00a0 I wrote games.\u00a0 By 1992, I had educated myself out of the local job market moving to the proverbial Silicon Forest of Oregon.<\/p>\n<p>My first actual Web development project was in 1999 when I opened the nursery.\u00a0 Written in C++ with Rogue Wave and Microsoft tools, it was brittle, but fast.\u00a0 I rewrote the system in 2002 using an open source stack: Python, Apache and Postgres.\u00a0 In the era of Netscape and IE6, I learned very quickly that I am not a user interface designer: getting a consistent and aesthetic user experience is hard.\u00a0 My career doing user facing web design mercifully ended when I sold the retail part of the nursery business in 2007.<\/p>\n<h3>How did you get involved with Mozilla?<\/h3>\n<p>In the mid aughts, I worked for Oregon State University at the Open Source Lab.\u00a0 My fearless leader volunteered me to work on Mozilla projects.\u00a0 At the time, Mozilla was primarily hosted at the OSL.\u00a0 On leaving the University in 2006, I ran into Shrep, then CTO of Mozilla, at OSCON and he offered me contract work.\u00a0 I converted to full time employment in 2008.<\/p>\n<h3>What\u2019s a funny fail or mistake story you can share?<\/h3>\n<p>I was asked to review the work being done in Ramora, a version of AMO.\u00a0 I thought what they were doing with MySQL was absurd and I expressed the sentiment giving some suggestions as to an alternative direction that could work better.\u00a0 I also recall pointing out the flaws in my own method: too many joins for MySOL to handle.\u00a0 I expected to start a lively discussion, but the debate never came and I forgot about it.\u00a0 I was horrified to discover a month later that my word had been taken as gospel.\u00a0 It was implemented and sent to production, warts and all.\u00a0 I shudder to think of how long it took the AMO team to undo that ill advice.<\/p>\n<h3>What\u2019s something you\u2019re particularly proud of?<\/h3>\n<p>I was instrumental in the creation of <a href=\"http:\/\/www.roguewave.com\/portals\/0\/products\/legacy-hpp\/docs\/dbtug\/index.html\">DBTools.h++<\/a>, an object oriented database abstraction class library in C++ for Rogue Wave Software in the early nineties.\u00a0 Think of it as a C++ version of SQLAlchemy, created ten years before that software came into existence.\u00a0 The class library became very popular with phone companies, airlines and investment banks.\u00a0 This evolved into a lucrative career for me later in the decade doing lectures and code reviews for Rogue Wave customers.\u00a0 Imagine me in my Harley t-shirt and jeans walking into a Wall Street investment bank ready to critique code written by the suits&#8230;<\/p>\n<h3>What\u2019s coming up that you\u2019re excited about?<\/h3>\n<p>In Socorro-land, I&#8217;m excited about the adoption of <a href=\"https:\/\/github.com\/mozilla\/configman\">Configman<\/a>.\u00a0 The project started as a unification library for configuration and became a dependency injection framework.\u00a0 With the ability to load classes at run time, Socorro will be able drop in storage schemes, alternative processing algorithms, or swap out any number of other subsystems.\u00a0 Configman is the key that gives Socorro the ability to scale from a tiny installation receiving a handful of crashes per day, to huge systems like ours that processes millions.<\/p>\n<h3>What question do you wish you\u2019d been asked?<\/h3>\n<p>There is great wisdom in the aphorism, &#8220;everything old is new again&#8221;.\u00a0 Just like most aspects of human endeavor, programming is subject to the whims of fashion.\u00a0 Perfectly legitimate languages and engineering practices fall from favor because something new and shiny comes around.\u00a0 The old technologies are a gold mine of ideas and techniques that can solve today&#8217;s problems.\u00a0 Take time to explore Lisp, Smalltalk, APL or even Fortran.\u00a0 Don&#8217;t let dogma limit freedom of expression.\u00a0 Monoculture is a bad idea in software engineering just like it is in agriculture.<\/p>\n<h3>What kind of app do you want to see on Boot2Gecko?<\/h3>\n<p>Good Lord, I can&#8217;t just think of just one.\u00a0 I want a full spectrum of apps on B2G.\u00a0 GTD (Getting Things Done) software\u00a0 plays an important part in my daily life.\u00a0 Omnifocus is what keeps me tethered to iOS. Liberate me!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week&#8217;s special guest on Better Know a WebDev, K Lars Lohn! What do you do at Mozilla? Officially, I am the the Software Architect for the Socorro project.\u00a0 Unofficially, I spread chaos and confusion as a self proclaimed Cowboy &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/\">Continue reading<\/a><\/p>\n","protected":false},"author":285,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13604],"tags":[],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Better Know a WebDev: K Lars Lohn - Mozilla Web Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luke Crouch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/\",\"name\":\"Better Know a WebDev: K Lars Lohn - Mozilla Web Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG\",\"datePublished\":\"2012-05-11T19:08:42+00:00\",\"dateModified\":\"2012-05-13T14:08:56+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/491692acd36de650165e25dd53c99954\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage\",\"url\":\"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG\",\"contentUrl\":\"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/webdev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Better Know a WebDev: K Lars Lohn\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/\",\"name\":\"Mozilla Web Development\",\"description\":\"For make benefit of glorious tubes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/491692acd36de650165e25dd53c99954\",\"name\":\"Luke Crouch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/48dd88f364049f42e8435a858f692d2f\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ac76daf656edb21915fd4611edae2b2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ac76daf656edb21915fd4611edae2b2e?s=96&d=mm&r=g\",\"caption\":\"Luke Crouch\"},\"description\":\"Privacy Engineer\",\"sameAs\":[\"https:\/\/groovecoder.com\",\"https:\/\/x.com\/groovecoder\"],\"url\":\"https:\/\/blog.mozilla.org\/webdev\/author\/lcrouchmozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Better Know a WebDev: K Lars Lohn - Mozilla Web Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/","twitter_misc":{"Written by":"Luke Crouch","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/","url":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/","name":"Better Know a WebDev: K Lars Lohn - Mozilla Web Development","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage"},"thumbnailUrl":"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG","datePublished":"2012-05-11T19:08:42+00:00","dateModified":"2012-05-13T14:08:56+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/491692acd36de650165e25dd53c99954"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#primaryimage","url":"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG","contentUrl":"https:\/\/lh4.googleusercontent.com\/-uCfzK4KvJ2E\/T6KcZUVYhzI\/AAAAAAAAHfM\/aOzTGVMEo6g\/s640\/IMG_3593.JPG"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/webdev\/2012\/05\/11\/better-know-a-webdev-lars-lohn\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/webdev\/"},{"@type":"ListItem","position":2,"name":"Better Know a WebDev: K Lars Lohn"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/webdev\/#website","url":"https:\/\/blog.mozilla.org\/webdev\/","name":"Mozilla Web Development","description":"For make benefit of glorious tubes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/491692acd36de650165e25dd53c99954","name":"Luke Crouch","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/48dd88f364049f42e8435a858f692d2f","url":"https:\/\/secure.gravatar.com\/avatar\/ac76daf656edb21915fd4611edae2b2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ac76daf656edb21915fd4611edae2b2e?s=96&d=mm&r=g","caption":"Luke Crouch"},"description":"Privacy Engineer","sameAs":["https:\/\/groovecoder.com","https:\/\/x.com\/groovecoder"],"url":"https:\/\/blog.mozilla.org\/webdev\/author\/lcrouchmozilla-com\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2675"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/users\/285"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/comments?post=2675"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/2675\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/media?parent=2675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/categories?post=2675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/tags?post=2675"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/coauthors?post=2675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}