<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7394391783603547236</id><updated>2011-08-30T17:16:34.532-07:00</updated><category term='http://www.blogger.com/img/blank.gif'/><category term='programming'/><category term='code review'/><title type='text'>A Long Way From Earth</title><subtitle type='html'>Views from someone just slightly outside of the mainstream.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-5131323739491771047</id><published>2011-03-29T10:18:00.000-07:00</published><updated>2011-03-29T12:02:23.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http://www.blogger.com/img/blank.gif'/><title type='text'>Stop lying about radiation!</title><content type='html'>My uncle recently posted:&lt;br /&gt;&lt;blockquote&gt;&lt;h6 class="uiStreamMessage" ft="{&amp;quot;type&amp;quot;:&amp;quot;msg&amp;quot;}"&gt;&lt;span class="messageBody"&gt;Everyone  should take a look at these forecasts (assembled from a number of  meteorologist models) and act accordingly as best you can. We have no  help whatsoever from our government. They are busy killing people in  other lands, so,s'pose that explains their complete and utter silence.&lt;/span&gt;&lt;/h6&gt;&lt;/blockquote&gt;This included a link to this youtube video: &lt;a href="http://www.youtube.com/watch?v=3JDNJEW8MJs"&gt;http://www.youtube.com/watch?v=3JDNJEW8MJs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dutchsine seems intent on giving people sensational ideas. The primary ideas of that video are that there are PLUMES OF Iodine-131, Cesium-137 HEADED STRAIGHT FOR AMERICA! DUCK AND COVER! It even has a nice radiation siren in the background.&lt;br /&gt;&lt;br /&gt;I responded flippantly saying:&lt;br /&gt;&lt;blockquote&gt;&lt;span jsid="text"&gt;Damn it... stop spreading misinformation. These  things have a half-life measured in minutes. Maybe take a look at  something not posted by an idiot: &lt;a href="http://xkcd.com/radiation/" rel="nofollow" target="_blank"&gt;http://xkcd.com/radiation/&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;My uncle replied:&lt;br /&gt;&lt;blockquote&gt;&lt;span jsid="text"&gt;We're all trying to figure this one out, Jason.   Thanks for the links.  They do give some frames of reference, but  obviously they can't address all the variables.  I would, however  recommend that people who try to call attention to potentia&lt;span class="text_exposed_show"&gt;l  problems should not be dismissed so readily as "idiots".  If nothing  else, they are calling attention to a rather alarming event, and  expressing concerns which for a lot of us are valid concerns.&lt;br /&gt;&lt;br /&gt;Unless  you want to argue that we shouldn't be concerned, or that we should  leave it all to the experts (such as the scientists who designed the  reactors?, the owners of the reactors?, the governments and their "think  tanks"?, those who do the cost/benefits analyses, etc.)&lt;br /&gt;&lt;br /&gt;Funny,  at first thought, I would have considered them to be the idiots.  But,  of course, they can't be expected to factor in worst case scenarios into  the plan.&lt;br /&gt;&lt;br /&gt;As well, among my first reactions was:  Anyone who  had any responsibility for the design, implementation, selling,  operation and oversight of these facilities should be the first ones on  site to clean up this mess.  Yeah, all the non-idiots who sold us this  package should have the responsibility to clean up the mess.  They  should "own" it ALL, in total.  And they should be risking their lives  to make it right.&lt;br /&gt;&lt;br /&gt;But, then again, I stop myself and say:  Wow,  if all the smart guys who brought us the reactors have to then step in  radioactive water to clean up their mess, because it's their  responsibility and they own it, then, if they get sick and die in a  month, we would be without all the "brilliant" people who know so much  about this mysterious energy source.  And, we would be without their  compassionate and prescient leadership?&lt;br /&gt;&lt;br /&gt;I'll be removing the post, because I'm skeptical.  Do you still think nuclear energy is the best way to go?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;So uncle, lets begin.&lt;br /&gt;&lt;br /&gt;First, I do not expect you to listen to what our leaders have to say about this. I've never been an advocate of other people telling you what you should know. Unfortunately it seems that you want Dutchsine to do just that, and tell you what you need to know. The best part is he says, buried in there, that he doesn't want to tell you what to do. But unfortunately he only gives you half the information. It's up to you to determine if what he is worried about is actually a worry.&lt;br /&gt;&lt;br /&gt;So how do you determine that? Well let's start at the top, is radiation bad for you?&lt;br /&gt;&lt;br /&gt;As you might expect there are different answers to this, a lot of this has to do with some negative connotations we have. Marie Curie died of radiation! All of those people near Chernobyl got messed up or killed! What if I told you that right now you're exposed to radiation... and it's constant and never stops, and many of us strive hard to be even more exposed.&lt;br /&gt;&lt;br /&gt;The problem is radiation isn't a scary word made up in the 50s to scare people about nuclear power. It's a scientific term meaning that something emits (Get it, radiates!) something else. Whenever the public gets a hold of a word that scientists use the miss the real meaning. Lots of things provide radiation, the one you're constantly exposed to is called the Sun! It's constantly sending down crazy radiation, and yet people still go out to tan.&lt;br /&gt;&lt;br /&gt;This suggests that maybe not all radiation is dangerous, or at least there are different levels of dangerous. Sure you can still get skin cancer, but that doesn't stop days at the beach. Take a look at this fun chart from XKCD: &lt;a href="http://xkcd.com/radiation/"&gt;http://xkcd.com/radiation/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pay special attention to the amount of radiation you get from eating a banana, bananas are especially full of radiation, and yet oh so tasty. Handily it also indicates the danger levels for people working in radiation, and it's hundreds of times greater than the amount of bananas you can eat.&lt;br /&gt;&lt;br /&gt;So, are Iodine-131 (I-131), Cesium-137(Ce-137), and Xenon-133 (Xe-133) dangerous. Let me ask you a question first, does drinking milk make you throw up? As always it's a question of how much you're getting.&lt;br /&gt;&lt;br /&gt;Unfortunately there's not a good conversion from bq/m (the values purported in dutchsine's PLUMES of Ce-137) to Sv (the value in the handy XKCD chart). This is because they're measuring different things. Becquerel measures how much radioactive decay is happening, and Sievert measures the dose being absorbed into the matter (us, for instance). So we'll have some trouble with looking at his Ce-137 chart. Let me just say that bq/m indicates the number of decays from a single nucleus per meter, And since his chart never gets above 1, I don't see how that will be particularly dangerous.&lt;br /&gt;&lt;br /&gt;So lets look at the chart for Xe-133 (that's the one that looks like a big cloud of radiation all over the US). Going to his source I found this interesting snippet:&lt;br /&gt;&lt;blockquote&gt;The colour scale shows a total of 5 colours. The area marked „E“shows an  area with estimated current equivalent dose rate of 10 mSv/h (in a  25x25 km2 square). The violet colour on the outer edge of contaminated areas (Area A)  represents 0,3 μSv/h, which corresponds to the amount of the natural  background radiation dose&lt;/blockquote&gt;I'm not sure what E is but I imagine it's the light blue or dark blue. Regardless lets look at the scary dark blue. If you look at the legend, exceptionally difficult to do as it doesn't scale at all, I believe this says the units are in 1 x 10&lt;sup&gt;-2&lt;/sup&gt; which corresponds to the text above of mSv/h. Excellent so lets look at what that is comparable to... HOLY COW that's like 3 flights to New York an hour! Crap man, we're so screwed.&lt;br /&gt;&lt;br /&gt;Oh wait, did you say that's Xe-133? Wait a minute, wait a minute. How long is that stuff radioactive. &lt;a href="http://en.wikipedia.org/wiki/Xenon-133"&gt;http://en.wikipedia.org/wiki/Xenon-133&lt;/a&gt;... Wait, a half life of 5 days? How long until it reaches us, lets look at the chart. The chart starts on the 12th and it hits America's west coast on the 18th. Damn that's 6 days, how much radiation will be left, hrm... can't be as much as they show in the graph, they must not have accounted for decay. Maybe they're trying to scare people (Or more likely this graph wasn't intended to indicate RADIATION DAMAGE!, but rather a dispersal pattern). By the time it reaches the US much of it will have already decayed.&lt;br /&gt;&lt;br /&gt;Looking at the indicators on I-131 make sure to look at the dispersal for the northern hemisphere. Looking at the units and we see the gray part indicates .02 (at maximum) which is the same as above, and we see that it has a similar &lt;a href="http://en.wikipedia.org/wiki/Iodine-131"&gt;half life of 8 days&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So I'm saying, listening to news sources who try to indicate sensationalist things like we're all going to be poisoned by radiation, is just as bad as blindly listening to governments saying don't look at it.&lt;br /&gt;&lt;br /&gt;You can even take a look at the number of radiation poisoning cases:&lt;br /&gt;&lt;a href="http://www.deccanherald.com/content/145427/15-hospitalised-radiation-poisoning-japan.html"&gt;http://www.deccanherald.com/content/145427/15-hospitalised-radiation-poisoning-japan.html&lt;/a&gt;&lt;br /&gt;Man, more than a dozen... wait that's less than I'd expect if they were all dying of radiation. Heck Swine Flu was worse, and turned out to be little more than a cold for most of us. Also, look at the first comment... I was unable to find a first reference for this. I think there is a lot of fear mongering, people hungering for scary danger and pain.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;Fukushima &lt;/i&gt;reactors were rocked by an earthquake of unheard of proportions. The devastation was immense, and yet they still managed to keep people safe and protected. It was better than the houses that did not withstand the tsunami, and better than the roads that became impassable. So yes, I say I believe using nuclear energy is safe, and I think it's a far sight better than the devastating pollution put out by our coal and oil plants. It's amazing that you can count on one hand the number of large scale radiation accidents, and with the other hand you can count the number of large scale oil spills.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-5131323739491771047?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/5131323739491771047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=5131323739491771047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/5131323739491771047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/5131323739491771047'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2011/03/stop-lying-about-radiation.html' title='Stop lying about radiation!'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-1908194410224179288</id><published>2009-02-18T09:24:00.000-08:00</published><updated>2009-02-18T09:27:58.567-08:00</updated><title type='text'>Please stop taking my money and giving it to the rich</title><content type='html'>I sent this in as a policy comment on whitehouse.gov:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I was just reading your blog post: http://www.whitehouse.gov/blog/09/02/18/Help-for-homeowners/. It reminded me of when teachers would give an extension on homework because only a few people actually completed the assignment. I was always one of those people.&lt;br /&gt;&lt;br /&gt;I did my homework and knew not to buy into a failing housing market. Now you are forcing me to pay for other people's failure. My money goes to help people who failed to understand the consequences of their actions. Why are you stealing my money to pay other people's mortgage? I'm struggling to pay my rent too, why are failed homeowners granted my money while I have to continue slaving to pay for my apartment, that I will never own? Why are you making rich people richer with my money?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-1908194410224179288?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/1908194410224179288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=1908194410224179288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1908194410224179288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1908194410224179288'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2009/02/please-stop-taking-my-money-and-giving.html' title='Please stop taking my money and giving it to the rich'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-3774341664882410609</id><published>2009-02-11T09:06:00.001-08:00</published><updated>2009-02-11T09:54:13.135-08:00</updated><title type='text'>Functional Objects</title><content type='html'>Rather than have a specific topic for this post I will present an idea that is still germinating in my head.&lt;br /&gt;&lt;br /&gt;There is a problem with reusability in programming. For a competent programmer code can be found in libraries that can be made to do what you want. But this limits innovation to a programmer with many years of experience. Dabbling tinkerers have a huge learning curve before being able to produce something viable. And even after producing viable work the resulting code base is usually difficult to manipulate.&lt;br /&gt;&lt;br /&gt;I recently took a jaunt into Second Life where I was intrigued to see prims and scripts. A prim is a primitive object one that can be used together with other prims to create larger products. A script is a small snippet of code that allows a certain action on an object. Part of what intrigued me was in Second Life you collect these as physical objects. I entered IBM's lab and found scripts for rotating an object on touch and getting information on other sims. I accessed these objects and they were added to my inventory.&lt;br /&gt;&lt;br /&gt;As far as I saw the code snippets being traded were only useful within Second Life in the animating of objects. But I wonder if code snippets could be packaged in similar ways.&lt;br /&gt;&lt;br /&gt;Part of the problem with libraries is the snowballing of dependencies. One library depends on another and needs code from another until it is a large unweildy mass difficult to install and use. Even after you've installed it, you have a good mountain of documentation to read before you can begin playing with your new tool. Even after reading the documentation, you still don't have a whole picture of how the system really works (documentation is notoriously difficult to understand). It's like working a puzzle but you can't figure out where the pieces edges are. It's possible (often with a lot of trial and error), but difficult and you may force the pieces into configurations they shouldn't be.&lt;br /&gt;&lt;br /&gt;Part of my vision for the future stems from my work with LISP. I was developing a webserver (for the fun of it) using an example I found on the web. I said to myself "now how can I code up a server system and configure it?" The answer presented itself simply, bolt a system called hunchentoot (yeah difficult to spell and remember) into your code and poof it does the webserver system. No configuration it just works. It is completely self-contained and just worked.&lt;br /&gt;&lt;br /&gt;Not all LISP systems work this well, unfortunately it suffers from the minds of the programmers designing things for it. But it is more resistant to those problems because of the mantra of "Functional Programming". Part of functional programming defines that a function DOES NOT modify anything outside of the function itself. When I read this requirement first I couldn't help but think, "Who the heck can code a system with only functional functions, where does stuff get done?" It turns out if you code all your functions functionally (that's just weird to say) then the work gets done in the function you started out with. This is contrary to the opinion that you should call out to other functions to do the work you should be doing.&lt;br /&gt;&lt;br /&gt;From functional programming you get so many tangible benefits that it is hard to ignore the system even if it is harder. You get functions that are completely contained so you can test every input into them and verify it works under all conditions (or at least all the ones you test). You can be certain then, that if your function sends data to a function and you don't get back what you want it's your function's problem. It simplfies all debugging. Also it allows you to define certainly&lt;br /&gt;&lt;br /&gt;1) What your inputs are&lt;br /&gt;2) What your outputs are (including the truth that there were no other changes)&lt;br /&gt;&lt;br /&gt;If you have these two things. You can model them. Imagine seeing a block of code in a 3D space it has female connectors showing where you have to input data. It has a male connector showing what data it outputs. It might even have a TV screen rather than a male connector showing that it outputs data to a screen. Or a spinning world indicating that the output is a webpage. Imagine how you could plug those things together to create even bigger systems that (as long as the new peices you added do what they say... should work). Imagine creating new objects, writing code that you will eventually see tangibly. Imagine building standardized test frameworks that you can plug your object into and be certain it will get a barrage of standard tests done to it testing all boundaries of data. So you can be relatively certain that it will not fail under any conditions (it may not produce the result you wanted, but it's up to you to check that).&lt;br /&gt;&lt;br /&gt;I see that world and would like to help it come about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-3774341664882410609?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/3774341664882410609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=3774341664882410609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3774341664882410609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3774341664882410609'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2009/02/functional-objects.html' title='Functional Objects'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-7062157820842650038</id><published>2008-09-16T11:03:00.000-07:00</published><updated>2008-09-16T14:12:59.539-07:00</updated><title type='text'>Don't feed the (Open Source) bears</title><content type='html'>Current open source structure requires donation of time and money by dedicated programmers. This isn't a tenable solution eventually the programmers will get tired and the donated money will lessen. But this is not the final stage for Open Source. The good place as I have &lt;a href="http://jasonhasalife.blogspot.com/2008/03/i-heart-open-source.html"&gt;discussed before&lt;/a&gt; is one where programmers all work on Open Source projects for paying companies.&lt;br /&gt;&lt;br /&gt;You can help with that. Right now Open Source programmers are still waiting for handouts, because that's how it all started. It is time for them to grow up. The next time you're considering donating to an open source project, don't. Instead come up with 3 different problems you have with the software. They could be bugs, features you'd like to see, changing a picture you don't like. Then contact the software team and say, "Hey, I'll give you x dollars if you'll fix one of these 3 things". &lt;span style="font-style: italic;"&gt;Et voila!&lt;/span&gt; You have just turned a handout into a business transaction.&lt;br /&gt;&lt;br /&gt;The first thing this does is make it profitable to be an Open Source programmer. They can make money by making open source code! Right now it's just something they do out of love, but it could become a career. A real viable career option to do something that you believe in. From a programmer perspective closed source is idiotic, it's a cesspool of bugs and bloat and death-by-design-committee. If working on open source software is a possible job opportunity, not just something you do in your spare time it opens up new worlds. Worlds where code is reviewed by hundreds of eyes, where things are refactored and optimized dozens of times as new techniques become better, where applications become more focused on doing their job right, rather than doing every job. Paradise I tell ya! If I can do that, and put my kids through college at the same time, sign me up.&lt;br /&gt;&lt;br /&gt;This leads to a shaping of the landscape. Programmers can't really live on the contract work they get from you and me. We're too unstable as a source of income, you can't pay a mortgage without a steady job. But you are conditioning programmers to the idea that there is money to be made in Open Source, and showing companies that you're willing to pay. Quickly the next thing that will happen is a small company will start up as an open source shop, or maybe a current closed source company will open up their shop.  Then you've drawn companies who want the money available in the open source ecology, and that will make more robust code, which will draw more people to use the code. This slowly shapes into what programming should be, which is a payment to make an application (or make it better), not a payment for a "product".&lt;br /&gt;&lt;br /&gt;Stop giving handouts. It doesn't help. Do give to the community, but ask for something in return. Don't look at Open Source programmers and think, "Oh, those poor hard-working guys, I'll donate so they'll know they're loved".  Look at them and say "Good thing you've got the skills, because I have a business proposition for you".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-7062157820842650038?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/7062157820842650038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=7062157820842650038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7062157820842650038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7062157820842650038'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/09/dont-feed-open-source-bears.html' title='Don&apos;t feed the (Open Source) bears'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-4205796476043648847</id><published>2008-08-05T12:52:00.000-07:00</published><updated>2008-08-05T16:47:45.967-07:00</updated><title type='text'>A little time to think , please</title><content type='html'>So as you might imagine in any creative endeavor there are shades of gray in what is considered a finished product. For programming the "completeness" of a block of code can be examined and broken down in ways other artistic compositions cannot. Most examinations of code consist of test case examination, it's pass or fail, you do what you coded to or you don't. But there is an even more important and subtler test you should be looking for, elegance.&lt;br /&gt;&lt;br /&gt;Elegance is difficult to define but you can see it's influence when a programmer comes out of a hectic hack-phase and announces "It's done, it's ugly but it's done". Looking through the code he feverishly produced he cringes at bad hacks and edge case problems.  Still the cry echoes through the halls of his business "we don't have time to 'optimize' we have to beat the competition". So reluctantly he checks in the hacked code and turns to other projects. Like an artist churning out sculptures, hoping never to look back.&lt;br /&gt;&lt;br /&gt;Life continues on, after all the code passed all the tests. But eventually the programmer (or more likely some other junior programmer *cringe*) will return to that block of code. Poring through it looks even worse than before like a fungus breeding the code embodied in that past hacked frenzy has spread throughout the rest of the code base, tarnishing everything it comes into contact with. The poor maintenance programmer finds a nice dirty fix that should work and, as he is needed to fight other fires, drops the fix in place and runs away. Glue still dripping out of the crevices of this ugly wart added to the already hideous code structure.&lt;br /&gt;&lt;br /&gt;These two scenarios are constantly occurring, anywhere programming is happening. And the key factor is time, it takes time to make code elegant more time than just "making it". As Pascal writes, &lt;blockquote&gt;"&lt;i&gt;I apologize for the length of this letter, for I lacked the time to make it shorter.&lt;/i&gt;"&lt;/blockquote&gt; He illustrates the goal of the extra time. It's not to add more functionality, or catch more edge cases, it's to shorten what you put in. To trim as much as possible out of the sculpture so only beauty is left. When code is shorter it automatically curtails many potential bugs. Take a look at this snippet (my own of course)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Date [] dates = getSomeDates();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Date special = getSpecialDay();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for(int i=0; i &amp;lt; dates.length; i++)&lt;span style="font-style: italic;"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      if(  special.after(dates[i]) &amp;amp;&amp;amp;  special.before(dates[i+1]))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      {&lt;/span&gt;&lt;br /&gt;     &lt;span style="font-style: italic;"&gt;dates[i] = special;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;For those syntactically challenge this bit of code takes an array of dates and then determines if the special day falls in between any of the two dates. If it does it sets the earlier date to the special day. So what's wrong with this code? I will tell you now it functions under most normal circumstances. If you've figured it out, think about how long it took you. Imagine how much harder it would be if you wrote the code and weren't looking for an error. The problem is that [i+1], at the very end of the array of dates you ask for the end +1 which doesn't exist. Java doesn't mind because normally you'll get back a null and before() handles a null just fine. But if for some reason java had to put something next to your array... you could get back any kind of random thing. Making a fun intermittent bug. It took me a good while after having written that code to see the problem. Maybe a reviewer would have caught it, if he were lucky or super competent, as long as he wasn't overloaded with reviews.&lt;br /&gt;&lt;br /&gt;My point here is I was able to catch the bug (and actually rewrite the whole thing to increase it's elegance and cut out a few potential bugs) because I had spare time. I wasn't running headlong for a goal spraying crappy code willy-nilly. This was not because my employer didn't wish me to, it's just my bug load happened to be low so I took my time. So I'm begging you, future employers, please give us a little time to think. Give us time to create elegance, you'll be better off in the long run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-4205796476043648847?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/4205796476043648847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=4205796476043648847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/4205796476043648847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/4205796476043648847'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/08/little-time-to-think-please.html' title='A little time to think , please'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-5072855324027302911</id><published>2008-07-17T11:50:00.000-07:00</published><updated>2008-07-17T12:14:28.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Reviews are your friend</title><content type='html'>I recently had a discussion revolving around the usefulness of mandatory code reviews. My coworkers were of the opinion that code reviews take too much time especially if they're mandatory for every bug fix. The point out that we already have a QA team who verifies that bugs are fixed. I tried to explain that they weren't looking at code reviews correctly, I'm not sure how many listened. During the course of the discussion I wrote down how I view code reviews and why I was excited that we were requiring them.&lt;br /&gt;&lt;br /&gt;A code review is not QA validation, it is not for checking that the bug is really fixed. You should not even have to update your system with the code you are reviewing to test it out.&lt;br /&gt;&lt;br /&gt;A code review is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A second set of eyes&lt;/span&gt;. This is someone else who can see that you had a copy and paste error that will persist in the system, even if it doesn't cause bugs right now. This is someone else looking at the names of your variables and making sure they make sense. This is someone making sure you didn't get too close to the problem and miss something.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A search for alternative solutions&lt;/span&gt;. Your reviewer should be looking at different ways to solve the problem. He should see how you solved things and point out other methods that might have been simpler or cleaner or even more concise. Heck it's even possible your reviewer will question the need for the fix at all (this happens more often when your reviewer is more familiar with the system).He should bring these concerns to you even if there's no change to the code, so that you can have the knowledge for later, or so he can learn why you did things more complicated that necessary.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A look for unintended consequences&lt;/span&gt;.  As the fixer of the bug you pored through the code making sure your change didn't break anything else, but having a second person who has different areas of expertise will help find more. Also your reviewer might look at the change and realize it has to be put in other parts of the system that suffer the same problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More edge case examination&lt;/span&gt;. The problem with all programming is what happens in the edge cases. What if that integer is negative? What if the array doesn't contain anything. As the fixer you try to imagine and test as many edge cases as you can. But again having a second set of eyes, one specifically looking for edge cases to break your fix helps alot.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Most importantly, it is a chance to learn new tricks. &lt;/span&gt;For both the reviewer and the fixer it is a chance to learn tricks from the other. When reviewing code look at how they solved the problem pick little gems of simplicity and elegance and put them in your own toolbox. As the fixer note when your reviewer talks about simplification or clarification learn how to be better together.&lt;br /&gt;&lt;br /&gt;The last argument is why I also suggested that senior programmers should have their reviews performed by the newer employees. All I received were eye rolls at this point, because obviously having newer employees review would take longer (because more explanation is necessary) and defeats the point of the review which is to point out corrections. I think one is the solution for the other. When you take some time to explain your code you see your code as someone else sees it, and often you see its problems. Or the new employee questions will lead you down paths that you wouldn't have explored on your own. That plus the advantage it gives in sharing tricks makes this experience too valuable to pass up.&lt;br /&gt;&lt;br /&gt;So take some time, use code reviews in this new light rather than as a verification process. Make sure your code changes are small enough that reviews are meaningful. Step up your new employees by expanding their minds with what you're working on. Keep learning, even from those new guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-5072855324027302911?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/5072855324027302911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=5072855324027302911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/5072855324027302911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/5072855324027302911'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/07/code-reviews-are-your-friend.html' title='Code Reviews are your friend'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-2754478930068769813</id><published>2008-05-16T09:05:00.000-07:00</published><updated>2008-05-16T09:32:09.119-07:00</updated><title type='text'>Problems with going dark</title><content type='html'>So as I said in my previous article I wanted to try going dark. Here are some of the problems I encountered&lt;br /&gt;&lt;br /&gt;1) Tor is slow... I like my internet instantaneous. Having time to get up and make tea while waiting for my websites to load just isn't going to cut it. Also because my IP address comes from a random location every time google tries to guess what language I speak. I was unable to determine how to assure google that I speak english... American english specifically. So I just had to deal with google being in Chinese, German, Dutch, and Italian. Poor show I feel.&lt;br /&gt;&lt;br /&gt;2) PGP has a fundamental flaw. You see PGP uses a public key-private key combo. I left my public key on my blog and kept my generated private key hidden on my Ubuntu Linux laptop at home. The trouble is that private key isn't something you can really carry around with you. (Because it's private). I spend more than half my waking hours at work... on a computer where they probably track my keystrokes and other terrible things. So even if I brought my private key encrypted (which it is by default thank goodness... with a passphrase...) that's totally not useful if you worry that someone has placed a keylogger on your system. So I can't use my private key to encrypt anything  when I'm at work... which is almost always.&lt;br /&gt;&lt;br /&gt;3) IM encryption can't work one way. There is a nice and easy PGP-like encryption plugin for Pidgin called pidgin-encryption, I just added the addon and was immediately able to chat encrypted. The problem is you can't chat encrypted to people who don't use the same encryption. I tested it out with my wife and it worked great. I even checked out my google chat logfiles to see what it looks like going across the wire. Here's a sample:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="display: block; padding-left: 6em; text-indent: -1em;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;me&lt;/span&gt;: &lt;b&gt;**&lt;/b&gt; Encrypted with the Gaim-Encryption plugin : Send Key &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="display: block; float: left; color: rgb(136, 136, 136);"&gt; &lt;/span&gt;&lt;span style="display: block; padding-left: 6em; text-indent: -1em;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Kelly&lt;/span&gt;: &lt;b&gt;**&lt;/b&gt; Encrypted with the Gaim-Encryption plugin : Key: Prot NSS 1.0: Len 249:Odw+YVVO3fV7d3cD/LISGDkAMIJ&lt;wbr&gt;DLFg8,MIGfMA0GCSqGSIb3DQEBAQUAA&lt;wbr&gt;4GNADCBiQKBgQDEEAQhm477bt1KnprV&lt;wbr&gt;lD/5nWH+deYoF2IjUxt/5sUOnJezCpW&lt;wbr&gt;sqRgRoDUxOUEBWkEpWSWJVV8yjPRr7i&lt;wbr&gt;2nnkWjpe3a+fQ+20pkIdI6qJqRFSU5P&lt;wbr&gt;2gJLXWl3p38rET6W8i7tE8F20m4Msk5&lt;wbr&gt;7jF4URSqAWjHtsZ0g4bjwpANXlLXkwI&lt;wbr&gt;DAQAB &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="display: block; float: left; color: rgb(136, 136, 136);"&gt; &lt;/span&gt;&lt;span style="display: block; padding-left: 6em; text-indent: -1em;"&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;me&lt;/span&gt;: &lt;b&gt;**&lt;/b&gt; Encrypted with the Gaim-Encryption plugin : Msg:Sf01f547677:R2687548b16: Len 512:N6DFKd+PciYkREHlpv1&lt;wbr&gt;/EzLYJ3HY2VCo/T30KU48Rqws0CqMPW&lt;wbr&gt;aAqU4z1dpTUYQWr81Uv3jakPfuB&lt;wbr&gt;+0tmyW1gVORQscW+SY84uAaovAZpjM0&lt;wbr&gt;HdtWT762jciqfUfmHs+9iT9mlczvXSk&lt;wbr&gt;1kFyfUUhKk8h6GPgPxxhUPAWxFFRr5i&lt;wbr&gt;W8wkMJ+ltUz+u9NsyUfTz8i4x4CqAu3&lt;wbr&gt;ZUQxGt1vYYzRn3ruzVhlw+mJkGMQA51&lt;wbr&gt;FsmN68bcUEq01d9fU/Q0cQJmADs6l1N&lt;wbr&gt;0l+RA5SZOrMDGJixCqrFLzDLQ8Tuv8S&lt;wbr&gt;K8UDvWS9x20zNIwop3KnJi+DUtk&lt;wbr&gt;+u1I2VoCSFYPe4qfhDfspXKDtuYc1vB&lt;wbr&gt;g/aSy+4mA8gLngOMwvCPwxNCEBzs1uV&lt;wbr&gt;rtYFwL2A630Ah+v2/cJP4qpWH2i7hMI&lt;wbr&gt;SnBXTcDFnQSEj0kVzeqN8FCR&lt;wbr&gt;/h8iq0yPHMYUM6P7ejKaQW46I&lt;wbr&gt;+S5X0QxxTr9Md3J4aimu374cI93VUps&lt;wbr&gt;9zRGe6TE1ImbtFAo48&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt; Super sexy huh? But for it to work generally I need all my friends to encrypt as well. I'll try to always allow encryption on my chats (just in case you're feeling like hiding your talks with me) since it doesn't affect anything else.&lt;br /&gt;&lt;br /&gt;4) Everyone uses cookies. I tried turning off cookies and I was immediately making exceptions. Google uses cookies for everything (which is dumb). My work website uses cookies. My comic slurper uses a cookie and that's all. Del.icio.us uses cookies. It's crazy. It's like turning off javascript for how many ill-concieved websites just shove crap on your harddrive. But I don't want to do without those sites so cookies are back on the menu.&lt;br /&gt;&lt;br /&gt;5) Https works great. I found that google was especially competent at running SSL. Hotmail fails at it by the way. Even though you can go to the login page on SSL it redirects you to a non-SSL page after login. And you can't even switch to SSL yourself... EPIC FAIL. I'm going to continue to use https on gmail and my google homepage, because I like imagining my communications with those places are only between me and them... regardless of how often they sell my communications to other companies and the government. Though I just checked and blogger fails its https check, though it does redirect you to the regular http, which is better than hotmail. I guess they want to make sure that everyone can watch what you type as you write your blog.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;br /&gt;&lt;span style="font-size:100%;"&gt;The interwebs are not ready for people to go dark. They still want to hook in and track you and prevent you from hiding. That's really a sad statement, I think that the internet foremost promoter of "anonymity=equality" should allow me to be anonymous. I know that after this experiment I will try to be more conscious of how I design my websites, just in case an uber-paranoid friend needs to contact me.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-2754478930068769813?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/2754478930068769813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=2754478930068769813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2754478930068769813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2754478930068769813'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/05/problems-with-going-dark.html' title='Problems with going dark'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-2565667621920964104</id><published>2008-05-12T23:32:00.000-07:00</published><updated>2008-07-10T14:25:03.938-07:00</updated><title type='text'>A little taste of 1984</title><content type='html'>So I read a book today called &lt;a href="http://craphound.com/littlebrother/download/"&gt;Little Brother&lt;/a&gt;. You should read it, it's only about 200 pages you can finish it in a few hours, I promise it's a good read. I'll even wait while you do it....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alright for those of you who don't have the time I'll give a brief synopsis. *SPOILERS WARNING: This post contains detailed information about the book Little Brother*&lt;br /&gt;&lt;br /&gt;The terrorists bomb the Bay Bridge, Department of Homeland security steps in and locks people up, this story follows a young hacker who gets swept up by DHS and debased. They let him free with an admonition to never tell anyone. And he watches as his city is turned into an Orwellian nightmare before his eyes. He fights back, the underdog, against the DHS... It's really much better to read the story.&lt;br /&gt;&lt;br /&gt;It got to me, made me a little wide-eyed, worrying about how this might come to happen.&lt;br /&gt;I got over it, I'm not ready to fight the government, I suppose if things get a little too 1984 for me I'll run away. It's just not a fight I want to enter, I don't want to fight against people I know and care about because they think it's right for a government to revoke our rights to peace and happiness. I'll just leave em to their own devices.&lt;br /&gt;&lt;br /&gt;But that doesn't mean I can't help passively. So I've decided to go dark. For me that means that this is my last traceable post... I thought it only fitting it be about this.&lt;br /&gt;&lt;br /&gt;So what kind of inconveniences am I going to run into?&lt;br /&gt;&lt;br /&gt;I've decided using the Tor onion routers for firefox and gaim. That will make things slower, but generally more anonymous.&lt;br /&gt;I've decided to make a conscious effort to use https in order to run over the secure socket layer when it's available (like in gmail).&lt;br /&gt;I've decided to try to remember to log out of gmail before surfing. Did you know that they can trace every google search you make while you're logged in.&lt;br /&gt;I'm gonna try to go without cookies&lt;br /&gt;I'm going to start encrypting my communications to certain people.&lt;br /&gt;&lt;br /&gt;Why am I doing this? Do I have something to hide?&lt;br /&gt;&lt;br /&gt;Nope. I don't have a single thing to hide. And probably never will. I'm totally boring.  But reading "Little Brother" it made me think, "What if there are people out there who need to hide, but there isn't enough encrypted traffic to hide in." So I can help them hide by going dark myself. And who knows maybe I will have to use it.&lt;br /&gt;&lt;br /&gt;So do I support the terrorists who bomb us?&lt;br /&gt;&lt;br /&gt;Not really. I don't think bombing people is a very neat way to express yourself. But I must admit I am very partial to privacy... So if it's a choice between not knowing when terrorists are going to bomb me, and being able to live my life privately. I'm gonna have to side with privacy. Terrorist bombers will find holes in the system... just like spammers...  just like media campaigns... just like any unwanted offense. I don't want the system to be tighter because the only person it's squeezing is me.&lt;br /&gt;&lt;br /&gt;Why won't you actively fight for your privacy rights?&lt;br /&gt;&lt;br /&gt;I'm busy. I want to build robots. And like I said before, fighting for people who don't want to be fought for is futile. If the people want cages... give them cages. Just count me out.&lt;br /&gt;&lt;br /&gt;I'll try to post something about living in the darknet later. Oh if any of you want to join me here's my Public Key:&lt;br /&gt;&lt;br /&gt;-----BEGIN PGP PUBLIC KEY BLOCK-----&lt;br /&gt;Version: GnuPG v1.4.6 (GNU/Linux)&lt;br /&gt;&lt;br /&gt;mQGiBEgpNdkRBACdkLqN3LoXfYJkk4qDWSNdzsLo/BQt/McsZ+4mLNRFmeSqnCOS&lt;br /&gt;RFGpj5tnjNzCK54E7kHjfYK3CBmYlnkbJPsb9vN4G6fShhV6f4YnVgwjW3kgemLL&lt;br /&gt;/j8LbMv6H9SpeAGm6xI3YCZZxz1Yphi5tTEj4noxJICIc0ISvA7InT1aHwCg0NPw&lt;br /&gt;RtoNzdLJ81EFvpw0ZVds1E0D/2XqUrbCJoCHFRy2rxTGLf8gFbCHvw6jkKnKTfvU&lt;br /&gt;26q40u3m2Cq+haulDGqX/NumlMndWA6dfz2LZjnaLt5hl3wKiNP7N9NFEQQc827w&lt;br /&gt;uMLBZz329vhV/QaLAznsq5glRosqmLiR5NbdWuJA61R4bODcXry5T0A6rcAjQS7m&lt;br /&gt;cQXxBACJKAlcoKS4dTXRQ1H8axvH0Aipmr0PUZKdxqpeXLV69cjLf9XeDCPYzDkh&lt;br /&gt;0/kdCc/JWYRK5rgAdXVuE3ylsNMaEJOsdHQPQXN1m84RjEj/6swpyfipEndII/9K&lt;br /&gt;eVRmPDLEO5jKAT60h3AteXottHK4Cz+r8yrQUjsMr8lHtWdAebQ9SmFzb24gU2No&lt;br /&gt;YWNodGVyIChFYXJ0aHMgV2FycmlvcikgPGphc29ub2ZlYXJ0aCtwZ3BAZ21haWwu&lt;br /&gt;Y29tPohgBBMRAgAgBQJIKTXZAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ&lt;br /&gt;Gonsm9xPhtmLKQCgqUKT0CswiGqw+MlsKgh+Bnc9Z1gAoLLEIe8aThnWJuStDa14&lt;br /&gt;dxm9nlU1uQINBEgpNf0QCACcjXjFxoH3HKPK9TfJs/vG0jmeUhR29NXe4R2YBFXg&lt;br /&gt;YE2y5qLx6e83OS31b6sgP092aLbW4yT44dztCObj1V02RhQrjf400wFCIYbAWWhd&lt;br /&gt;tW05kSerZCxUSWrAA8b96vOX/STIzrh74u3k4eqcStes30tmVeAXnh39VNMRb5mB&lt;br /&gt;XUst6/X2EFcXKvZesUebwFlTcU73harWelTtaJjOp5Vc5gTB9/0pX9jdvF0GSTGN&lt;br /&gt;5wAzOEl6gWPfdXg35E5cXPg1rxPXL5fuLomD1EcFl0EpzYhUb/wSGS3KOyrut8lS&lt;br /&gt;hDLMiYJ0qLl8w0FSLe8hNA8oZXyxcJgYI+G1Ze/ERt/HAAMFB/0V0uKRQ7Icrpkl&lt;br /&gt;CmtteN+4SnCvZaNpGHbRZEV9/Vx98raYOILYdL2tBiPukGDRRxce6pw9t7SbtTV1&lt;br /&gt;roEVISC8rULA4IWtdX38YkO48JEMh/3mB03H2yXuKLnbgakp6dUqA5g3QT/YQTHn&lt;br /&gt;5vc0QAHDKZfzZD17ljjBLy40WT+pGi/8cB2I1wcSnv4FqkSOwAJOUOMW7GSg1qLs&lt;br /&gt;rG6nMD8sfhltIPfCxoTvHvhNYvI24URL6t5v2NWR5nTxReDUlQD7Tu8afFLPrpnm&lt;br /&gt;odA2uyOpM4RW/Zb7t30xnlg7WvBU4cpTGOLeGtpYozwotymJMyg4qEGWCdDZPl7o&lt;br /&gt;WZc2kuFkiEkEGBECAAkFAkgpNf0CGwwACgkQGonsm9xPhtm60gCeLlN9KJ1ofbWM&lt;br /&gt;ftBh+bw4ZfgOT00AmgI/hQ9LkccqRHh+lK7KURvqbmNc&lt;br /&gt;=H3Nj&lt;br /&gt;-----END PGP PUBLIC KEY BLOCK-----&lt;br /&gt;&lt;br /&gt;Send me your public key and I'll consider you a friend. If you're really a secret DHS agent pretending to be my friend... well done... you've infiltrated a group of revolutionaries... I happen to be a pioneer in the art of sitting on my butt, doing nothing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-2565667621920964104?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/2565667621920964104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=2565667621920964104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2565667621920964104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2565667621920964104'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/05/little-taste-of-1984.html' title='A little taste of 1984'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-6037145120807901252</id><published>2008-05-09T12:06:00.000-07:00</published><updated>2008-05-09T12:46:32.506-07:00</updated><title type='text'>I want to work for you</title><content type='html'>Your company must be making a difference. I don't mean a difference in what kind of software an average engineer will use. I mean a difference in the path of technology of the world. If you are working on robots, or nanotechnology, or synthetic biology, or space exploration, or superconductivity, or brain augmentation, or extending lifespans. Any of the hundreds of applications that will be useful to bring us closer to the singularity. I want to work for you.&lt;br /&gt;&lt;br /&gt; I am a programmer, that means I know programming languages and how to use them. I am not an expert in any one language, but I have used almost all of them. I'm learning lisp to work on AI (I will keep doing that until you hire me). I studied Java and C++ in school, and continue to use it wherever I'm working now, they are unimportant languages unless used to solve complex dilemmas and no place I have worked has ever provided me with any.&lt;br /&gt;&lt;br /&gt;I am a simplifier, I take complex systems and break them down in order to create the simplest solutions. As a programmer this makes me exceptional at design, I use my abilities to force the creation of the simplest structure that will work. I don't believe complex and elegant work well together. Complexity makes things harder to work with and should be hidden behind abstraction so it does not spread. I think any lasting code (that will remain in production for more than 5 years) should value simplicity over clever hacks and creative solutions. Solutions to programming problems should not look creative in the end, it may take all your ingenuity to come up with the idea, but in the end it should look simple, like it always belonged where you put it.&lt;br /&gt;&lt;br /&gt;I am a creative thinker, however I am  not good at generating original plans. This means that if you provide me a framework I will work exceptionally creatively and design you the best possible solution to the problem posed. The tighter the framework the more elegant my solutions tend to be. If you tell me to make "something cool", I won't have anything for you.&lt;br /&gt;&lt;br /&gt;I am open. I believe in truth in communication. I am a facilitator, I work with all teams and value every well reasoned opinion. I refuse to "hang with the engineers", I am equally capable of discussing with product managers, designers, customers. I do not lie, I will not attempt to further my career at the expense of others, I will tell you about any aspect of my life if you ask.&lt;br /&gt;&lt;br /&gt;I am steadfast. To change my opinion you must make me agree with you. This is an impossible task unless you speak with logic and conviction. If you fail to convince me of a direction I will still follow your orders, but I will likely be slower and less creative in a direction that I don't agree we should go. I don't waver on opinions without solid backing, all of my choices are well reasoned to start with.&lt;br /&gt;&lt;br /&gt;I should work for you. You should pay me to learn, and build whatever you ask. I will go to school to learn more for you, I will work as hard as I can to help bring about the singularity before I die. You should harness my powers, rather than let me languish in a cubicled prison.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-6037145120807901252?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/6037145120807901252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=6037145120807901252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/6037145120807901252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/6037145120807901252'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/05/i-want-to-work-for-you.html' title='I want to work for you'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-1517534833828518821</id><published>2008-05-07T16:14:00.001-07:00</published><updated>2008-05-07T16:21:23.734-07:00</updated><title type='text'>My Kaizen List</title><content type='html'>I just found this &lt;a href="http://en.wikipedia.org/wiki/Kaizen"&gt;wiki article on kaizen&lt;/a&gt; through &lt;a href="http://lifehacker.com/"&gt;lifehacker&lt;/a&gt;, and it struck a good chord with me. Continual small improvement always seems doable to me. So I've decide to set up a kaizen list. Which I've decided will be a list of three things that I will attempt to continually improve. The list can shift but whatever is on the list should get some attention each day, even if it's just to think about or read an article about it. I can't cop out of the list by using blanket statements like "get better at programming" because that could mean anything and doesn't get to a really solid goal. My current list includes only two, but I will look for a third over the course of the week.&lt;br /&gt;&lt;br /&gt;My List:&lt;br /&gt;1) Lisp&lt;br /&gt;2) SCA swordfighting&lt;br /&gt;3) ???&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-1517534833828518821?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/1517534833828518821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=1517534833828518821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1517534833828518821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1517534833828518821'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/05/my-kaizen-list.html' title='My Kaizen List'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-1317582447076351479</id><published>2008-04-15T15:44:00.000-07:00</published><updated>2008-05-05T15:40:57.305-07:00</updated><title type='text'>Where is our Master of Orion?</title><content type='html'>&lt;blockquote&gt;    Last summer we discussed twin announcements from Intel and IBM/AMD about a new chip manufacturing technology dubbed &lt;a href="http://tech.slashdot.org/article.pl?sid=07/01/27/1614207&amp;amp;tid=118"&gt;high-k/metal gate&lt;/a&gt;. Intel is using the tech to improve speed and power consumption in its 45-nm chips. IBM, along with its manufacturing partners, just demonstrated chips it says show that &lt;a href="http://www-03.ibm.com/press/us/en/pressrelease/23901.wss"&gt;high-k/metal gate technology at 32 nm&lt;/a&gt; can result in performance gains up to 30% and power savings up to 50%, compared to 45-nm process. IBM plans to be manufacturing 32 nm parts by the end of 2009. (&lt;a href="http://www.computerworld.com.au/index.php/id;221893230;fp;;fpid;;pf;1"&gt;AMD is not using high-k/metal gate yet&lt;/a&gt;, but it has access to the technology by virtue of its agreements with IBM.)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I read that &lt;a href="http://hardware.slashdot.org/article.pl?sid=08/04/15/2027239"&gt;article summary from Slashdot&lt;/a&gt; and one thing stuck out to me:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AMD is not using high-k/metal gate yet, but it has access to the technology by virtue of its agreements with IBM.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Holy smokes. Did anyone else get Master of Orion flashbacks? Regular articles are considering technologies as commodities. Something to be traded between &lt;strike&gt;races&lt;/strike&gt; companies. I realize that companies have been trading "technologies" for a very long time. But this particular "high-k/metal gate" technology, is an actual technology in the true sense of the word. Developed independently by two different companies.&lt;br /&gt;&lt;br /&gt;Imagine what would have happened if they had been working on different aspects rather than competing to the same technology. Looking at it from a Master of Orion viewpoint when we bump up our electronics research we get no more research points because they're all researching the same thing.&lt;br /&gt;&lt;br /&gt;When you play Masters of Orion you get the sense that the whole race is working together to expand knowledge, and explore space. That there are teams of scientists inventing because that's what they're good at and what they produce is useful, to everyone. You probably didn't even imagine an internal currency for the planets you controlled. If the scientists wanted food the farmers would give it to them. If the factory workers needed ore the miners would get it for them. Not because they were paying internally but because they were working together as a whole. As a single race.&lt;br /&gt;&lt;br /&gt;I have heard theories that the human race won't band together until it faces an outside threat. Perhaps any extraterrestrial societies are merely waiting for us to destroy ourselves. It seems rather likely, because we don't have our own... Master of Earth.&lt;br /&gt;&lt;br /&gt;As I posit the position that the human race needs a leader, I'm not sure what that leader would be like.  Enough humans don't want to be led, or wouldn't like the direction of leadership, that I might say it was impossible. But without it I think we will limp along slowly, and might destroy ourselves before we find something to band together about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-1317582447076351479?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/1317582447076351479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=1317582447076351479' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1317582447076351479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1317582447076351479'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/04/where-is-our-master-of-orion.html' title='Where is our Master of Orion?'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-6744063346449018577</id><published>2008-04-10T09:47:00.000-07:00</published><updated>2008-04-10T10:15:25.472-07:00</updated><title type='text'>I thought robotics was stalled</title><content type='html'>How naive it turns out I was. I thought because robotics wasn't there, in my face, advancing all products, that robotics was dead. It turns out all the problems are being secretly solved. Oh it's no conspiracy, but you have to specifically look for them to see anything more than the Roombas around.&lt;br /&gt;&lt;br /&gt;That may just be because of my country, it seems huge leaps in robotics are occurring in Japan. As they say necessity is the mother of invention, it turns out Japan is suffering from too few children being born and so there will not be enough people in the workforce to support the retiring population (they call the problem the graying of Japan). And so they hope to replace a large portion of those retiring individuals with robots.&lt;br /&gt;&lt;br /&gt;I also thought robotics was still in the individual hobbyist phase. Programming started out that way as well. With most of the new development occurring as individuals figured out what these crazy "computers" could do. But it turns out I'm behind the times... behold:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx"&gt;The Microsoft Robotics Platform&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While I have had no experience with the robotics platform. Nor can I state for certain Microsoft is of any help, I can suggest this parable.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A young monk and an old monk approach a swift-flowing river. The young monk spies the river and begins picking up some hefty rocks to make a bridge. The old monk carries nothing but searches the riverbank as they approach. The young monk tosses his large rocks at intervals in the river, but just as swiftly as he tosses them they begin to be rolled downstream.&lt;br /&gt;    "Ahh, wise master how shall we cross the river," he cries. The old monk moves downstream a ways and begins to try to heave a heavy boulder into the river.&lt;br /&gt;    "Master, though I trust your wisdom, that boulder will do us no good, we cannot cross on just one boulder and we cannot lift enough of them to make a path. That is why I only chose large stones," the young monk sighs. Dutifully he helps the elder monk lift the rock and heave it into the river.  Then the old monk sits, tired from is effort.&lt;br /&gt;    The young monk remains standing and says, "Master what shall we do now?"&lt;br /&gt;    "Wait," suggests the old monk, a twinkle in his eye.&lt;br /&gt;    Hours pass and the young monk begins to notice that some of the rocks, rolling down from farther upstream, are lodging against the boulder. Into the next day they observe a growing outwelling of rocks. Until the old monk deemed it safe to cross.&lt;br /&gt;    As they left the far riverbank the old monk began lecturing.&lt;br /&gt;    "You see, all the work tossing large rocks could not solve the problem. Individually they were not strong enough to hold the tide, and they could not work together.  But one large effort on the boulder, though as you stated it would be impossible for us to use the boulder to cross, left a space for other rocks to cling. To work together and form the bridge, until even the boulder platform was unnecessary."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-6744063346449018577?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/6744063346449018577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=6744063346449018577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/6744063346449018577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/6744063346449018577'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/04/i-thought-robotics-was-stalled.html' title='I thought robotics was stalled'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-3409462171276106293</id><published>2008-04-02T14:15:00.002-07:00</published><updated>2008-04-02T14:38:14.322-07:00</updated><title type='text'>Universal Documentation</title><content type='html'>Wikipedia is amazing as it grows it is becoming something of my concept of a set of Universal Documentation.&lt;br /&gt;&lt;br /&gt;Did you know there is documentation on building &lt;a href="http://en.wikipedia.org/wiki/Alcubierre_drive"&gt;a FTL spaceship&lt;/a&gt;? If you dig in you'll see the reason they haven't built it is they need &lt;a href="http://en.wikipedia.org/wiki/Exotic_matter"&gt;exotic matter&lt;/a&gt;, but if you dig further than that you'll see that matter can be shown to &lt;a href="http://en.wikipedia.org/wiki/Casimir_effect"&gt;be exotic matter&lt;/a&gt;. Holy Crap!?! But I digress.&lt;br /&gt;&lt;br /&gt;There is a fundamental problem with wikipedia. The problem is people don't know everything. And wikipedia doesn't take them all the way back to something they know so they can hang the information somewhere.&lt;br /&gt;&lt;br /&gt;The problem illustrates itself  best in mathematics. Regardless of what level of mathematics you are comfortable with, there are certain portions you don't know. It's made even more tricky because of the symbols they use. Did you look at the wikipedia article on exotic matter? Did you notice Forward's Analysis? And the equations used there:&lt;br /&gt;&lt;br /&gt;P(sys) = (v x m) + (v x (-m))&lt;br /&gt;&lt;br /&gt;Do you know what v and m are for? I happen to know that P(sys) is talking about potential energy (but that's because I remember something from my physics classes).&lt;br /&gt;&lt;br /&gt;The trouble is wikipedia doesn't provide links for you to learn. It's a dead end, you can't understand what they're talking about so you quickly lose the knowledge. You might contend here that I could whip out my physics book and learn the requisite knowledge.&lt;br /&gt;&lt;br /&gt;Ever tried searching a physics book for a specific type of instruction? It's not easy, and I certainly wouldn't recommend it on a more regular basis than once a week. That combined with the fact that you may not even be able to learn from the textbook, leaves this a dead end.&lt;br /&gt;&lt;br /&gt;Imagine wikipedia articles where hovering over the variables in an equation tells you what they are describing and clicking on them takes you to documentation of what that thing is. Imagine being able to dig far enough down to find something you do understand and work your way up until you understand the math and physics they are describing.&lt;br /&gt;&lt;br /&gt;That is perfect Universal Documentation.&lt;br /&gt;&lt;br /&gt;The troubles I see with this are the same problems I have with physics books. They're not written by people who are good at getting their point across, they are written by people who are good at physics.&lt;br /&gt;&lt;br /&gt;I wonder if I could start at the bottom and work up. If I started with mathematics, branching for different types of mathematics, branching further for physics.&lt;br /&gt;&lt;br /&gt;What an insane idea, but just imagine if anyone in the world could contribute to scientific discussions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-3409462171276106293?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/3409462171276106293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=3409462171276106293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3409462171276106293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3409462171276106293'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/04/universal-documentation.html' title='Universal Documentation'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-2408580423012343302</id><published>2008-03-12T15:24:00.000-07:00</published><updated>2008-05-05T16:54:54.993-07:00</updated><title type='text'>I [heart] open source</title><content type='html'>Some people might say that as a programmer loving open source I am embracing the end of my career. I've never met anyone who has an informed opinion about it, but I assume that there are people saying Open Source is about doing work without getting payed. I imagine critics look at Open Source developers as if they're out of their minds to be creating things that corporations just steal from them.&lt;br /&gt;&lt;br /&gt;I also think corporations should ensure they only use open source code. Woah... back up the train, if they do that then how will I get payed. Here's the magic, if they use open source code they'll pay me to make it better (or at least better for them). And what's more since it's Open Source, I'm making it better for everybody.&lt;br /&gt;&lt;br /&gt;So a question comes to mind. How is that better than the current state of software design? To answer that you must understand what the current state is. Currently a software engineer (or a team of them) is hired either by an independent software company or by a company that does something else (like making tires). There are two distinct patterns that are followed depending mostly on the size of the programming department.&lt;br /&gt;&lt;br /&gt;If an programmer works for a large programming department typically he spends a significant ramp up period learning the &lt;span style="font-style: italic;"&gt;coding practices&lt;/span&gt;, which is way "this company makes code". This set of &lt;span style="font-style: italic;"&gt;coding practices&lt;/span&gt; is entirely different from any practices he's used before (if he's worked for another company his skills at that companies &lt;span style="font-style: italic;"&gt;coding practice&lt;/span&gt; are useless). The problem is these practices grew organically with generations of programmers before him making their stamp in trying to enforce rigidity and fault tolerance into the chaotic programming world. No company does it the same, and thus the code and the practices are one off products.&lt;br /&gt;&lt;br /&gt;If an programmer works for a small programming department typically they just ask him to "make some programming happen". The engineer works his best (or sometimes his laziest) to set up a framework and build what the boss wants. Normally the code is buggy and barely conforms to what is necessary because the programmer created it himself with very little input. Then he continues to grow his team while creating a list of &lt;span style="font-style: italic;"&gt;coding practices&lt;/span&gt; so that he can get others to work on the same system he's working on without messing it up too badly.&lt;br /&gt;&lt;br /&gt;It's a pretty dystopian world where no programs will ever work together and every company is reinventing the wheel (poorly).&lt;br /&gt;&lt;br /&gt;With Open Source you get thousands of eyes looking at code, looking for faults and fixing them. With Open Source you get hundreds of new programs that evolve and grow into something everybody can use. With Open Source you can pay a fraction of the price (just the price to pay some programmers to tweak the program to your specifications). Or pay whole teams of engineers to develop brand new exciting programs.&lt;br /&gt;&lt;br /&gt;Now a company might question why they have to be the ones to "pay money" to Open Source. The other companies aren't paying, so why should they. They can just continue making their proprietary code and steal Open Source stuff when it does what they want it to.&lt;br /&gt;&lt;br /&gt;First, if you do that open source will die. Eventually these programmers and hackers will not have the fortitude to keep making programs for ungrateful businesses. They may even make a new copyright so that no company with proprietary code can use their source, if they got angry enough.&lt;br /&gt;&lt;br /&gt;Second, you limit the amount of open source you can use. Because you wouldn't want to "waste time" working on open source code that other people would get to use for free. So when you could have just tweaked &lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt; you end up rewriting the whole thing. Only more buggy.&lt;br /&gt;&lt;br /&gt;Right now companies are taking the fruit that fall from the open source tree because it's free. Some companies are tending the tree, because they understand the advantage in the long run. Others are still buying programmers and forcing them to create the same fruit that could be had from Open Source, and those programmers, though they try their hardest will be no match for what Open Source brings to the table. You try being one programmer against hundreds, see how it feels. To have to find all the bugs on your own, to code without having other people to watch and help.&lt;br /&gt;&lt;br /&gt;I can't wait until all code is Open Source and companies hire me to make programming advances in the direction they want to go. Think of the conversation like this:&lt;br /&gt;&lt;br /&gt;"I'm glad you could come in, tell me what code bases have you worked in."&lt;br /&gt;"Well I've been working inside Mozilla (I did a change for Ford that allowed them to open up 3D models). I've done some work on E-Term at home because I wanted to embed it in my desktop. I've made some changes to compiz-beryl to allow ATT to flip between 3D renderings of network maps in real time."&lt;br /&gt;"That's great. I can't tell you much at this stage but we'll need your 3D expertise on some modifications to Gnome."&lt;br /&gt;&lt;br /&gt;You stand there happy as a clam knowing that while you are working for one company you're providing a service to humanity as a whole by making their programs stronger and more capable with no strings attached.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-2408580423012343302?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/2408580423012343302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=2408580423012343302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2408580423012343302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/2408580423012343302'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/03/i-heart-open-source.html' title='I [heart] open source'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-7819381460094949655</id><published>2008-01-18T10:27:00.000-08:00</published><updated>2008-01-18T15:34:12.958-08:00</updated><title type='text'>Certainty of Motion</title><content type='html'>It has been noted that I often get my way in things.  This shows in many different ways. I don't get cut off as often; people don't get in my way, even in crowded areas; corporate peons tend to see my side of things and help me out. This has been explained to me as a reality distortion field that forces others to see my way in things. In trying to quantify that ability so others could learn it I found that one of the aspects necessary is what I call: Certainty of Motion.&lt;br /&gt;&lt;br /&gt;The important aspect of leading others to accept your conclusion is to determine the direction you are headed, including where you might end up. I find it's easier to do this if you choose two options, the desired outcome and the worst case option. We'll discuss how to choose the two options and why there are only two in the examples. After you've chosen your outcomes start walking towards the desired outcome and don't stop until you reach either the desire or the worst case option.&lt;br /&gt;&lt;br /&gt;Now for this to work properly the worst case option has to be terrible, and you have to be capable of reaching it. It has to be bad enough that the other person won't let you get there, that way they'll help you to your desired outcome. Also you have to be certain of the desired outcome, and of why you deserve to go there. If you waver at all in your certainty they will stop you. If you are unsure that you deserve to go where your desired outcome is, change until your certain.&lt;br /&gt;&lt;br /&gt;Lets look at some examples:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Narrow Street&lt;/span&gt;&lt;br /&gt;Lets say you were walking down a narrow street and a stranger begins walking towards you such that you two will run into each other if something doesn't happen. In this instance your desired outcome is for him to get out of your way, and in this example you don't want to break your stride. You must understand the two outcomes 1) You pass and he stops. 2) You crash into each other. Some of you might be saying "But there's a third option! Just both of you move". That's the key, there is no third option if you don't allow there to be one. If you won't budge then only the two options exist. Then start moving towards your desire with full certainty that the worst case could happen too.&lt;br /&gt;&lt;br /&gt;Some of you might be saying, "but that's just rude behavior you're advocating." And in this scenario it's true, you have no reason to hog the whole street and working together neither of you will be inconvenienced. But now assume you're pushing a stroller with your babies in it, if you don't have certainty of motion, you will be stopped and have to wait. This gets worse in crowded areas, just look at how bus drivers handle it. Others might say, "but I could get hurt". You're absolutely right, very often the worst case scenario is bad for you also. Either be certain or don't do it, there is no in between.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Decision&lt;/span&gt;&lt;br /&gt;A friend you've known for a while has begun to do things that are offensive, and you're feeling used. A common response is to discuss with the friend the feelings you are having and hope that they understand and can change themselves. This lacks certainty of motion, and leaves open a continuity of being used because you were indecisive. Again find your desired option, "I don't want to be used". Find your worst case scenario "I will no longer have this friend". Note that there are other things people might have said for the worst scenario:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; "I will hurt this person" - will you really? And is it worth it? A general rule of thumb is have every worst case scenario be something that only deals with you.&lt;/li&gt;&lt;li&gt;"I will sue this person" - Will you? Sometimes that is the path you will take, but don't do it unless you're willing to finish that outcome. Remember if the desire fails you must take the worst. There is no middle ground.&lt;/li&gt;&lt;li&gt; "I will write them an angry letter" - It is important that whatever the final outcomes are they mean you'll try never come up against this problem again. A letter is not enough of an end so you're not doing yourself justice in finding the &lt;span style="font-weight: bold;"&gt;worst&lt;/span&gt; scenario.&lt;/li&gt;&lt;/ul&gt;Then inform the friend, tell them this is how you feel and this is what you will do. Then remain certain, don't allow loopholes. If you feel they violated the spirit of what you wanted, move to the worst scenario.&lt;br /&gt;&lt;br /&gt;You might say, "but that person could really have been worth it". That means you were unsure of your desired outcome, you didn't really want to "not be used anymore", you wanted that person to be good. It always come down to the choices for your life. Making sure you're the only person who makes them is part of the certainty.&lt;br /&gt;&lt;br /&gt;I hope this helps you understand how I move through the world. Since I'm not really able to manipulate others I rely on this to get me through life. Moving like a rolling boulder with little room for compromise. It may be this requires you to feel like you're stronger than other people, or more deserving. But if you want to try it, remember &lt;u&gt;you are deserving&lt;/u&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-7819381460094949655?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/7819381460094949655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=7819381460094949655' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7819381460094949655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7819381460094949655'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/01/certainty-of-motion.html' title='Certainty of Motion'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-3728609454484166230</id><published>2008-01-11T16:36:00.000-08:00</published><updated>2008-01-11T17:19:30.182-08:00</updated><title type='text'>Open Source: The Copying</title><content type='html'>I just read an odd article from Joel on Software on &lt;a href="http://www.joelonsoftware.com/articles/FiveWorlds.html"&gt;different types of software&lt;/a&gt; I'm kind of ambivalent about his point in the article (I hyperLinked my way into it from the &lt;a href="http://www.codinghorror.com/"&gt;Coding Horror&lt;/a&gt; blog which is really excellent). I was only inspired to write when I read this off-hand comment:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;/strong&gt;As a result geographically dispersed teams [Open Source software has] done far better at cloning existing software where little or no design is required.&lt;/blockquote&gt;Immediately the open-source advocate in me  sprang into action with a mighty, "That can't be true". Which began a rather heated debate... with myself.&lt;br /&gt;&lt;br /&gt;This debate resolved itself into two points, one interesting the other not so much. The not so interesting point (because I know you're curious) is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Most commercial software has done nothing better than cloning existing software, heck Microsoft has been cloning itself for years. Hah! How's that for a witty rebuttal.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The second, more "reason for the blog", point:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Open Source software centers itself around a need. Normally one person's need. That need has to be communicated to others enough to make them feel the need.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So it's no wonder some of the first collective needs are software they see but can't have.  I say "can't have" as a recent college escapee who was so happy that Open Office and Gimp prevented me from writing my papers in Notepad. No, before you ask, I couldn't afford to pay those &lt;span style="font-style: italic;"&gt;payed&lt;/span&gt; employees at Microsoft with my college "salary".&lt;br /&gt;&lt;br /&gt;Given this train of thought I'm excited to see what comes from open source next. Because what they'll seek next are things they &lt;span style="font-weight: bold;"&gt;WANT&lt;/span&gt;. I imagine the works coming from Open Source will be a honed nugget (remember they have to communicate the need to others) of desire made into reality. As an added bonus there is no incentive to do extra, because that will just take longer. A single desire formed whole as software, perfect.&lt;br /&gt;&lt;br /&gt;I'm not saying I'm expecting the sourceforge help wanted boards to suddenly be filled with anything other than "Good Programmer wanted for totally new amazing MMoRPG". But when a programmer finds a desire for something real, he can build it in this open source vehicle, and as he distills the idea and gets others on board a unique focused software will emerge.&lt;br /&gt;&lt;br /&gt;I compare this to the drivel of things the megacorp thinks you might like all packaged in one easy &lt;strike&gt;to pay for&lt;/strike&gt; package and it is no wonder I'm nearly completely an Open Source shop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-3728609454484166230?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/3728609454484166230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=3728609454484166230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3728609454484166230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/3728609454484166230'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/01/open-source-copying.html' title='Open Source: The Copying'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-1015274897777677549</id><published>2008-01-07T15:10:00.000-08:00</published><updated>2008-01-07T15:34:39.168-08:00</updated><title type='text'>You're looking with your mouth</title><content type='html'>I realized just now that the reason people believe I am smart is that they rarely see me displaying my ignorance. I always perform as much of a search on a subject as I can before requesting another person's aid.&lt;br /&gt;&lt;br /&gt;All of this can be traced back to when I was five.&lt;br /&gt;&lt;br /&gt;It was time for school, and as usual I couldn't find my shoes. It's not that we lived in an unclean house, it's just that I had a habit of tossing them somewhere as soon as I got home. I yelled with all my five year old frustration, "I can't find my shoes!" To which my mother promptly responded "That's because you're looking with your mouth." And demonstrated by showing me my shoes were out in plain sight.&lt;br /&gt;&lt;br /&gt;Now you might be tempted to think that it was from this that I learned the lesson to look first. If you think that you have never had children. This story repeated for months, sometimes the subject matter changed, it moved from shoes to toys to sweaters. But the refrain remained the same.&lt;br /&gt;&lt;br /&gt;My poor haggard mother forced me to learn by modifying her catch-phrase. Moving to "You're looking with your mouth, and if I come in there and find them I'm going to swat your butt". Genius that my mother is she realized that I hated to be punished (even though her swats had stopped hurting when I was 6). So I learned to look exhaustively before ever requesting aid.&lt;br /&gt;&lt;br /&gt;This is not just a skill to prevent your girlfriend from getting annoyed when you ask where the remote is. Very often the information other people give us is incomplete, but before you go back to get clarification give it a go. Other people are always impressed to know you tried and can show where you looked before bothering them. Imagine how often you've asked your boss "How do I do this?" Only to have him point you to the email he sent you when you started the project.&lt;br /&gt;&lt;br /&gt;Sometimes there are things you just couldn't know, but you'd be amazed what you can find (or do) if you force yourself to look. You'd be even more amazed to find the number of things you can figure out all on your own if you try to do everything yourself first. Just imagine how smart you'll look when you figure out everything (including how to do things simpler), and begin doing things better than your boss.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-1015274897777677549?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/1015274897777677549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=1015274897777677549' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1015274897777677549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/1015274897777677549'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2008/01/youre-looking-with-your-mouth.html' title='You&apos;re looking with your mouth'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7394391783603547236.post-7321355853300988841</id><published>2007-06-05T16:10:00.000-07:00</published><updated>2007-06-05T16:14:26.222-07:00</updated><title type='text'>Why is my blog black?</title><content type='html'>This blog might look like I'm just another depressingly emo boy in search of love. But in fact it was a design choice having to do with the fact that white is bad on your eyes. Staring at a white screen with little bits of text is probably the worst plan ever. So now you can look at this dark blog for hours on end just trying to figure me out. Bear this in mind when you create your next big bucks website: Color is good, but white is too much of a good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7394391783603547236-7321355853300988841?l=jasonhasalife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonhasalife.blogspot.com/feeds/7321355853300988841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7394391783603547236&amp;postID=7321355853300988841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7321355853300988841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7394391783603547236/posts/default/7321355853300988841'/><link rel='alternate' type='text/html' href='http://jasonhasalife.blogspot.com/2007/06/why-is-my-blog-black.html' title='Why is my blog black?'/><author><name>Jason</name><uri>http://www.blogger.com/profile/16551520897134774622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
