<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Thoughts on software development redirected straight from /dev/null</description><title>Corollarium Dev Blog</title><generator>Tumblr (3.0; @corollarium)</generator><link>http://blog.corollarium.com/</link><item><title>Our new multi-camera rig for 360 degrees photographs! This is a...</title><description>&lt;img src="http://25.media.tumblr.com/6c0986f682a9d5d3f21e666fefe2782a/tumblr_mmhoh2y6Em1rq9bh8o1_250.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Our new multi-camera rig for 360 degrees photographs! This is a small gif, but be sure to check  the &lt;a href="http://camera360.com.br/viewer/interactive/?id=056dd8cb-d5e6-44b6-82ea-614cc190fecc"&gt;interactive version&lt;/a&gt;. We developed our own hardware and software for a simple, fast and inexpensive setup. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://camera360.com.br"&gt;&lt;a href="http://camera360.com.br"&gt;http://camera360.com.br&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.corollarium.com/post/49941729021</link><guid>http://blog.corollarium.com/post/49941729021</guid><pubDate>Wed, 08 May 2013 12:58:14 -0400</pubDate><category>matrix</category><category>photograph</category><category>photo</category><category>360</category><category>bullet time</category><category>camera</category><category>cool</category></item><item><title>How to fill CLEditor with Selenium IDE</title><description>&lt;p&gt;Here&amp;#8217;s a snippet to fill the contents of a CLEditor in a user context library for Selenium IDE. Put this in a sample&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; /**&lt;br/&gt; * Fills a CLEditor&lt;br/&gt; * &lt;br/&gt; * @param locator May be a parent locator, such as div[data-attribute="xyz"], as long as&lt;br/&gt; * there is only one textarea child&lt;br/&gt; * @param html The html to type&lt;br/&gt; */&lt;br/&gt; Selenium.prototype.doTypeHTMLEditor = function(locator, html) {&lt;br/&gt; var element = this.page().findElement(locator);&lt;br/&gt; var textarea = element.getElementsByTagName('textarea');&lt;br/&gt; if (textarea) {&lt;br/&gt; jQuery(textarea[0]).cleditor()[0].clear().execCommand("inserthtml", html).updateTextArea();&lt;br/&gt; }&lt;br/&gt; };&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;you should call the locator with an element parent of the TEXTAREA. Or just adapt the function to use the textarea itself.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/34708631481</link><guid>http://blog.corollarium.com/post/34708631481</guid><pubDate>Wed, 31 Oct 2012 13:23:03 -0400</pubDate><category>cleditor</category><category>javascript</category><category>selenium</category><category>test</category><category>programming</category></item><item><title>lifeandcode:

imgonnameetthesun:

my new shirt &lt;3 (Taken with...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m4v9mlseDA1rp0riro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://lifeandcode.tumblr.com/post/24215981140/imgonnameetthesun-my-new-shirt-3-taken-with"&gt;lifeandcode&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="tumblr_blog" href="http://imgonnameetthesun.tumblr.com/post/24107463416/my-new-shirt-3-taken-with-instagram"&gt;imgonnameetthesun&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;my new shirt &lt;3 (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So true. Sooooo true. &lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.corollarium.com/post/24472440370</link><guid>http://blog.corollarium.com/post/24472440370</guid><pubDate>Tue, 05 Jun 2012 11:00:31 -0400</pubDate></item><item><title>Pure CSS3 stopwatch</title><description>&lt;p&gt;Cool implementation and an even cooler way to make a tutorial. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://thecodeplayer.com/walkthrough/make-a-stopwatch-using-css3-without-images-or-javascript"&gt;&lt;a href="http://thecodeplayer.com/walkthrough/make-a-stopwatch-using-css3-without-images-or-javascript"&gt;http://thecodeplayer.com/walkthrough/make-a-stopwatch-using-css3-without-images-or-javascript&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.corollarium.com/post/24406468747</link><guid>http://blog.corollarium.com/post/24406468747</guid><pubDate>Mon, 04 Jun 2012 12:03:54 -0400</pubDate><category>css</category></item><item><title>Desenvolvimento de Interface Naturais de Interação usando o Kinect</title><description>&lt;p&gt;Nosso mini-curso de Kinect no SVR (Simpósio de Realidade Virtual e Aumentada) 2012.&lt;/p&gt;
&lt;div id="__ss_13163882"&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/gustavojcbrasil/desenvolvimento-de-interface-naturais-de-interao-usando-o-hardware-kinect" title="Desenvolvimento de Interface Naturais de Interação usando o hardware Kinect " target="_blank"&gt;Desenvolvimento de Interface Naturais de Interação usando o hardware Kinect &lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/13163882" width="425"&gt;&lt;/iframe&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://blog.corollarium.com/post/24204057055</link><guid>http://blog.corollarium.com/post/24204057055</guid><pubDate>Fri, 01 Jun 2012 14:00:53 -0400</pubDate><category>kinect</category><category>svr</category><category>tutorial</category></item><item><title>Realidade aumentada para aplicações web e mobile</title><description>&lt;p&gt;Nossa apresentação do pré-simpósio do SVR 2012.&lt;/p&gt;
&lt;div id="__ss_13164315"&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/diegocolombo/apresentao-realidade-aumentada-para-aplicaes-web-e-mobile" title="Apresentação realidade aumentada para aplicações web e mobile" target="_blank"&gt;Apresentação realidade aumentada para aplicações web e mobile&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/13164315" width="425"&gt;&lt;/iframe&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://blog.corollarium.com/post/24203876816</link><guid>http://blog.corollarium.com/post/24203876816</guid><pubDate>Fri, 01 Jun 2012 13:56:51 -0400</pubDate><category>realidade aumentada</category><category>svr</category><category>tutorial</category><category>mobile</category></item><item><title>SVR 2012</title><description>&lt;p&gt;[Post in portuguese]&lt;/p&gt;
&lt;p&gt;Estivemos no &lt;a href="http://www.uff.br/svr2012/"&gt;SVR2012&lt;/a&gt;. O congresso foi excepcional e muitas pessoas nos pediram o material dos cursos que demos sobre kinect e realidade aumentada para web e mobile. Vamos disponibilizar isso online assim que possível.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/24198199319</link><guid>http://blog.corollarium.com/post/24198199319</guid><pubDate>Fri, 01 Jun 2012 11:49:38 -0400</pubDate><category>svr</category><category>realidade virtual</category><category>kinect</category><category>realidade aumentada</category><category>curso</category></item><item><title>Two weeks</title><description>&lt;p&gt;In &amp;#8220;The money pit&amp;#8221;, whenever Tom Hanks asks when things will be done, he gets the same answer: &amp;#8220;Two weeks!&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/qLcjUmBncZ8" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;I always think of that movie when I&amp;#8217;m talking about deadlines in software development.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/23732813944</link><guid>http://blog.corollarium.com/post/23732813944</guid><pubDate>Fri, 25 May 2012 09:55:21 -0400</pubDate><category>deadline</category><category>development</category><category>software</category><category>programming</category></item><item><title>The pasta theory of code</title><description>&lt;p&gt;I don&amp;#8217;t know why, but most new programmers I&amp;#8217;ve been talking to never heard of spaghetti code. Wikipedia has a nice definition for it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Spaghetti_code"&gt;&lt;strong&gt;Spaghetti code&lt;/strong&gt;&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Pejorative" title="Pejorative"&gt;pejorative&lt;/a&gt; term for &lt;a href="http://en.wikipedia.org/wiki/Source_code" title="Source code"&gt;source code&lt;/a&gt; that has a complex and tangled &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Control_structure" title="Control structure"&gt;control structure&lt;/a&gt;, especially one using many &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/GOTO" title="GOTO"&gt;GOTOs&lt;/a&gt;, exceptions, threads, or other &amp;#8220;unstructured&amp;#8221; &lt;a href="http://en.wikipedia.org/wiki/Branch_%28computer_science%29" title="Branch (computer science)"&gt;branching&lt;/a&gt; constructs. It is named such because program flow tends to look like a bowl of spaghetti, i.e. twisted and tangled.&lt;/p&gt;
&lt;p&gt;&lt;img height="509" src="http://upload.wikimedia.org/wikipedia/commons/9/93/Spaghetti.jpg" width="500"/&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, there is a whole theory of pasta and code. Spaghetti code is at the bottom. Next comes lasagna code. Lasagna code is made in layers, which is nice, but each layer is quite large and to change the things below you may have to move all the layers above, and you have to follow a very strict hierarchy, which sometimes make it impossible for one layer to talk to another one that is not immediately above or below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Lasagna_NIH.jpg/400px-Lasagna_NIH.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Lasagna trumps Monday.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Even better is ravioli code. It comes in small pieces easy to chew, it&amp;#8217;s easy to move parts of it around. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img height="300" src="http://upload.wikimedia.org/wikipedia/commons/5/53/Ravioli.jpg" width="400"/&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My personal favorite is cannelloni code. It is even better than ravioli code, because it&amp;#8217;s neatly organized, but still flexible. It&amp;#8217;s very easy to subdivide if some part gets too big, and you can change parts without touching anything else. The filling is hidden and you only see the interface :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img height="375" src="http://farm1.staticflickr.com/16/22373345_fc1ce0df50.jpg" width="500"/&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="http://www.flickr.com/photos/osakajon/22373345/"&gt;&lt;a href="http://www.flickr.com/photos/osakajon/22373345/"&gt;http://www.flickr.com/photos/osakajon/22373345/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.corollarium.com/post/23626421517</link><guid>http://blog.corollarium.com/post/23626421517</guid><pubDate>Wed, 23 May 2012 16:57:34 -0400</pubDate><category>code</category><category>computers</category><category>pasta</category><category>programming</category><category>theory</category></item><item><title>rdenadai:

So very true!
</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m33j6pElHZ1r1tctyo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a class="tumblr_blog" href="http://rdenadai.tumblr.com/post/21854184535/so-very-true"&gt;rdenadai&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So very true!&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.corollarium.com/post/23610832397</link><guid>http://blog.corollarium.com/post/23610832397</guid><pubDate>Wed, 23 May 2012 11:25:52 -0400</pubDate></item><item><title>"Never attribute to malice that which is adequately explained by stupidity."</title><description>“Never attribute to malice that which is adequately explained by stupidity.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Hanlon's_razor" title="Hanlon's Razor"&gt;Hanlon’s Razor&lt;/a&gt; (via &lt;a class="tumblr_blog" href="http://jc-subida.tumblr.com/"&gt;jc-subida&lt;/a&gt;)&lt;/em&gt;</description><link>http://blog.corollarium.com/post/23610653033</link><guid>http://blog.corollarium.com/post/23610653033</guid><pubDate>Wed, 23 May 2012 11:20:20 -0400</pubDate><category>quote</category></item><item><title>Inspiration: Fluid &amp; Responsive Design</title><description>&lt;a href="http://webdesignerwall.com/trends/inspiration-fluid-responsive-design"&gt;Inspiration: Fluid &amp; Responsive Design&lt;/a&gt;</description><link>http://blog.corollarium.com/post/23609959370</link><guid>http://blog.corollarium.com/post/23609959370</guid><pubDate>Wed, 23 May 2012 10:58:53 -0400</pubDate><category>html5</category><category>design</category><category>responsive design</category><category>css</category><category>web</category></item><item><title>Liquid layouts and Flickr</title><description>&lt;a href="http://code.flickr.com/blog/2012/05/15/liquid-photo-page-layout/"&gt;Liquid layouts and Flickr&lt;/a&gt;</description><link>http://blog.corollarium.com/post/23554701159</link><guid>http://blog.corollarium.com/post/23554701159</guid><pubDate>Tue, 22 May 2012 14:49:00 -0400</pubDate><category>html</category><category>css</category><category>responsive design</category><category>programming</category><category>flickr</category></item><item><title>Mustache: simple, efficiente templates</title><description>&lt;a href="http://mustache.github.com/"&gt;Mustache: simple, efficiente templates&lt;/a&gt;</description><link>http://blog.corollarium.com/post/22723041424</link><guid>http://blog.corollarium.com/post/22723041424</guid><pubDate>Wed, 09 May 2012 13:41:27 -0400</pubDate></item><item><title>Matéria sobre Kinect no Olhar Digital que participamos.</title><description>&lt;iframe src="http://www.olhardigital.com.br/embed/25837" width="400" height="252" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://olhardigital.uol.com.br/negocios/central_de_videos/open-kinect-novas-formas-de-aplicacao-para-o-console-da-microsoft"&gt;Matéria sobre Kinect&lt;/a&gt; no Olhar Digital que participamos.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/22257008572</link><guid>http://blog.corollarium.com/post/22257008572</guid><pubDate>Wed, 02 May 2012 11:09:50 -0400</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m2l2carno51rq9bh8o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://blog.corollarium.com/post/21217221430</link><guid>http://blog.corollarium.com/post/21217221430</guid><pubDate>Mon, 16 Apr 2012 13:38:00 -0400</pubDate><category>xkcd</category><category>tumblr</category><category>blog</category></item><item><title>Hi, as someone who is just learning to code, I really appreciated your thoughts about mentors. Could you give me any tips on where or how to find one? Thanks, Tiger.</title><description>&lt;p&gt;Hi! One possibility is to find an open source project that you like and that you could contribute to, even if tiny bits. Contact the maintainers, talk to them. They will certainly be happy to explain their code and help you to tweak it.&lt;/p&gt;
&lt;p&gt;Another idea is to find someone near you (same school, perhaps?) who is more experienced than you. &lt;/p&gt;
&lt;p&gt;And there’s me too :)&lt;/p&gt;</description><link>http://blog.corollarium.com/post/20775057684</link><guid>http://blog.corollarium.com/post/20775057684</guid><pubDate>Mon, 09 Apr 2012 08:33:27 -0400</pubDate></item><item><title>Programming &amp; music</title><description>&lt;p&gt;Whenever a classical musician talks about his career, he mentions his teachers. They usually had one to three experienced musicians who taught them in such a way that it changed their playing and careers. Real mentors (in fact, to enhance my point: I started to write this a while ago, but I recently met a pianist and he told me about his mentors). Even rock stars and other non classical musicians do something similar; you often hear them saying &amp;#8220;and when I was 12 I bought a record by SomeFamousMusician, and I played along with it until I was as good as the record.&amp;#8221; These are two things that are really helpful, and that are rare in computer programming.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s interesting that other professions also have the concept of mentors. Physics is one; there&amp;#8217;s a whole essay by &lt;a href="http://en.wikipedia.org/wiki/Alan_Lightman"&gt;Alan Lightman&lt;/a&gt; (&amp;#8220;Students and Teachers&amp;#8221;, in &amp;#8220;Dance for Two&amp;#8221;) about it. Visual arts also have them (although not as much as before, I gather). But we don&amp;#8217;t have that culture in computer programming; I think I only met one programmer in all my life who told me he had a mentor. All the others had learned mostly by themselves. I can&amp;#8217;t explain why this happens: is it difficult to find those mentors? Are programmers naturally good at self-teaching? I really don&amp;#8217;t know. And it&amp;#8217;s a pity that it rarely happens.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s also rare to find someone who has taken time to &lt;strong&gt;read good code&lt;/strong&gt; written by others &amp;#8212; but not that rare. This is a trait that I almost always find in good developers, and I highly recommend doing it.&lt;/p&gt;
&lt;p&gt;For instance, one of the best lessons in OO that I ever had was reading the code for GTK: they do OO in C, so there is no syntactic sugar to help. A lot of things that are given in C++ or Java had to be recreated in C, and understanding why and how they did it was enormously instructive to me. One of the beauties of open source is that: you can understand how they did it. It is also an important trait for good programmers, understanding other people&amp;#8217;s code and dealing well with large projects.&lt;/p&gt;
&lt;p&gt;So pick one of your favorite open source projects and learn a bit more about it. And find a mentor &amp;#8212; or become one.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/20586877325</link><guid>http://blog.corollarium.com/post/20586877325</guid><pubDate>Fri, 06 Apr 2012 09:52:52 -0400</pubDate><category>music</category><category>programming</category><category>teaching</category><category>mentor</category><category>open source</category></item><item><title>The art of debugging</title><description>&lt;p&gt;Pesky bugs. How I smack them:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Code review. After writing anything I check it myself (don&amp;#8217;t waste someone else&amp;#8217;s eyes before you reviewed the code yourself). This catches most typos (things like = for ==, variables with typos in interpreted languages, etc). I also simulate code in my head, which makes sure simple logic errors that may have been made are caught early, before even running anything.&lt;/li&gt;
&lt;li&gt;Plenty of logs. I start any project by having a good Log class, with multiple log levels with filtering, information about the line and file that called the log, sometimes even automatic backtracing in cause of errors (in Python I automatically fall into a . I usually can get a pretty good idea of what went wrong just by checking these logs. Many times adding a few extra log() calls with detailed information about variables is quicker and simpler than using a debugger. And in some cases (websites, for example) setting up a debugger is not trivial, so this has to solve the problem.&lt;/li&gt;
&lt;li&gt;Tests. This is 2a), in fact, because you can only test properly if you have a test suite. I&amp;#8217;ll write someday about how I write test suites, but the basic needs are universal:&lt;ol&gt;&lt;li&gt;tests should be as simple as possible;&lt;/li&gt;
&lt;li&gt;should cover all of the code;&lt;/li&gt;
&lt;li&gt;should be completely automatic when viable (3D graphic applications are not that easy to write automatic tests, however);&lt;/li&gt;
&lt;li&gt;and should test for both the &amp;#8220;good cases&amp;#8221; and the &amp;#8220;bad cases&amp;#8221;.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;If things are looking complicated and logs did not help enough, call that faithful debugger. These days my use of debuggers is quite simple: I often set breakpoints in the code itself (&lt;em&gt;debugger&lt;/em&gt; for javascript,&lt;em&gt; raise(SIGINT)&lt;/em&gt; for C/C++ and gdb), since it&amp;#8217;s usually faster than navigating through the code in the debugger if I know where I want to stop. When the breakpoint is hit, I print all variables to check if their values are correct, and if necessary I step through a few calls.&lt;/li&gt;
&lt;li&gt;Stack traces are your friends. In C/C++ I let the program run until it crashes, run a backtrace (&lt;em&gt;bt&lt;/em&gt;) and start to move up in the call stack until I get to the culprit &amp;#8212; usually it is pretty obvious.&lt;/li&gt;
&lt;li&gt;In JavaScript and Python you can fall into an interactive terminal when the debugger stops that is just as good as the real program: so you can pretty much type any code there, which is run instantly. Then you see immediately if it fixes the code. I&amp;#8217;ve come to love this: interactive programming can be extremely useful (great for testing complicated selectors in javascript, for example!). gdb can do some of that, but has several limitations due to C++ being compiled. But use &lt;a href="http://sourceware.org/gdb/wiki/STLSupport"&gt;STL support&lt;/a&gt; at least for decent printing of STL structures.&lt;/li&gt;
&lt;li&gt;After the bug is fixed, make sure it becomes a test in your suite!&lt;/li&gt;
&lt;/ol&gt;</description><link>http://blog.corollarium.com/post/19952779569</link><guid>http://blog.corollarium.com/post/19952779569</guid><pubDate>Mon, 26 Mar 2012 09:59:06 -0400</pubDate><category>debug</category><category>bug</category><category>gdb</category><category>programming</category><category>c++</category><category>javascript</category><category>python</category></item><item><title>Compiling Berkelium</title><description>&lt;p&gt;&lt;a href="http://berkelium.org"&gt;Berkelium&lt;/a&gt; is a library to use Chromium as an HTML renderer and embed it in your application. It&amp;#8217;s very nice, but I had trouble with their binaries, and compiling everything is a pain. So here are some simple instructions on how to compile Berkelium (Linux, focusing on Ubuntu):&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;git clone &lt;a href="https://github.com/sirikata/berkelium.git"&gt;https://github.com/sirikata/berkelium.git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cd berkelium&lt;/li&gt;
&lt;li&gt;EDIT: git submodule update &amp;#8212;init &amp;#8212;recursive&lt;/li&gt;
&lt;li&gt;apt-get install libnss libnss-dev&lt;/li&gt;
&lt;li&gt;apt-get install gconf gnome-keyring libgconf2-4 libgconf2-dev gconf2 libgnome-keyring-dev libgnome-keyring1.0-cil-dev&lt;/li&gt;
&lt;li&gt;apt-get install libdbus-glib-1-dev&lt;/li&gt;
&lt;li&gt;apt-get install cmake gperf libpam0g-dev libxtst-dev&lt;/li&gt;
&lt;li&gt;util/build-chromium.sh &amp;#8212;deps [this should install all deps, but it does not]&lt;/li&gt;
&lt;li&gt;cmake .&lt;/li&gt;
&lt;li&gt;make&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;This seems to have done the trick. &lt;a href="http://code.google.com/p/chromium/wiki/LinuxBuildInstructionsPrerequisites"&gt;&lt;a href="http://code.google.com/p/chromium/wiki/LinuxBuildInstructionsPrerequisites"&gt;http://code.google.com/p/chromium/wiki/LinuxBuildInstructionsPrerequisites&lt;/a&gt;&lt;/a&gt; has a more thorough list of dependencies.&lt;/p&gt;
&lt;p&gt;If you get something like &lt;em&gt;internal error, aborting at elf64-x86-64.c line 3396 in elf_x86_64_relocate_section&lt;/em&gt;, use ld.gold instead of ld.bfd. In Ubuntu that can be done with &amp;#8216;apt-get install binutils-gold&amp;#8217;, in Slackware change the link to ld from &amp;#8216;ld.bfd&amp;#8217; to &amp;#8216;ld.gold&amp;#8217;.&lt;/p&gt;</description><link>http://blog.corollarium.com/post/19686633948</link><guid>http://blog.corollarium.com/post/19686633948</guid><pubDate>Wed, 21 Mar 2012 14:21:00 -0400</pubDate><category>berkelium</category><category>html</category><category>chromium</category><category>programming</category><category>libraries</category><category>ubuntu</category><category>linux</category></item></channel></rss>
