<?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-3548273165051172931</id><updated>2012-01-27T01:19:43.114-08:00</updated><category term='ruby'/><category term='apache'/><category term='FreeMind'/><category term='PyCSP'/><category term='mod_wsgi'/><category term='javascript'/><category term='gunicorn'/><category term='redis'/><category term='shock'/><category term='Nerd Level 1'/><category term='indie'/><category term='Windows'/><category term='open source'/><category term='newsqueak'/><category term='class based views'/><category term='django'/><category term='Programming'/><category term='virtualhost'/><category term='beta'/><category term='alpha'/><category term='GTD'/><category term='Nerd Level 10'/><category term='new site.'/><category term='Reflection'/><category term='bpython'/><category term='agile'/><category term='fabric'/><category term='python'/><category term='software'/><category term='readthedocs'/><category term='XMind'/><category term='rails'/><category term='tech support'/><category term='IRC'/><category term='nodejs'/><category term='server'/><category term='interviews'/><category term='nerds'/><category term='phusion'/><category term='foss'/><category term='Internet Explorer'/><category term='redmine'/><category term='work'/><category term='Synput'/><category term='hardware'/><category term='Nerd Level 2'/><category term='CSP'/><title type='text'>The Blaggin' Wraith</title><subtitle type='html'>A nerd talking about nerdy things.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.wraithan.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3548273165051172931.post-6030627994884840409</id><published>2012-01-27T01:19:00.000-08:00</published><updated>2012-01-27T01:19:43.125-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='readthedocs'/><title type='text'>Read the Docs</title><content type='html'>Over the last few months I've really started to love &lt;a href="http://readthedocs.org/"&gt;Read the Docs&lt;/a&gt;. Several of my favorite projects are hosted on there. Projects such as &lt;a href="http://docs.fabfile.org/en/1.3.4/index.html"&gt;Fabric&lt;/a&gt;, &lt;a href="http://requests.readthedocs.org/en/latest/index.html"&gt;Requests&lt;/a&gt;, and &lt;a href="http://celery.readthedocs.org/en/latest/"&gt;Celery&lt;/a&gt; are all hosted on there. The list keeps growing, which is great. Read the Docs is a fantastic project that is promoting and unifying documentation even across language boundaries, both human and programming.&lt;br /&gt;&lt;br /&gt;I got involved with Read the Docs during the sprints of DjangoCon 2011 as I have mentioned before on my blog. So my opinion isn't entirely unbiased, but I wouldn't have gotten involved if I didn't believe in it and what goals it is pressing towards. I strongly urge others to also contribute, which can come in many forms, such as spreading the word on using Read the Docs, writing docs and posting them on there, filing bug reports on things you find wrong or feature requests for things you think could be done better, or finally by contributing your coding or design skills.&lt;br /&gt;&lt;br /&gt;Something that is pretty interesting is there have been a number of projects that aren't software libraries that have found their way on to Read the Docs. There have been &lt;a href="http://readthedocs.org/docs/little-books-of-r/en/latest/"&gt;a few books&lt;/a&gt; written using &lt;a href="http://sphinx.pocoo.org/"&gt;Sphinx&lt;/a&gt; and then posted on Read the Docs. &lt;a href="http://pydanny-event-notes.readthedocs.org/en/latest/index.html"&gt;Notes&lt;/a&gt; from various talks and conferences. And recently I stumbled upon &lt;a href="http://resume.readthedocs.org/en/latest/index.html"&gt;a resume&lt;/a&gt; that is hosted on there and it got me thinking that I should do the same.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wraithan.readthedocs.org/en/latest/index.html"&gt;My resume&lt;/a&gt; is now hosted on there, though a warning, it is a work in progress. It looks really nice though, and I have access to multiple &lt;a href="http://readthedocs.org/projects/wraithan/?fromdocs=wraithan"&gt;file types&lt;/a&gt; of it that sphinx and Read the Docs have generated, including a &lt;a href="http://media.readthedocs.org/pdf/wraithan/latest/wraithan.pdf"&gt;PDF&lt;/a&gt;. I highly recommend it to anyone that wants to write their resume, have it stand out a bit, but still look really nice.&lt;br /&gt;&lt;br /&gt;Basically, this post is just to talk about how much I have come to depend on Read the Docs and to also to encourage people to use and help out in various ways. I love this project and if have ever come across horrible documentation, so should you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-6030627994884840409?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/6030627994884840409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2012/01/over-last-few-months-ive-really-started.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6030627994884840409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6030627994884840409'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2012/01/over-last-few-months-ive-really-started.html' title='Read the Docs'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-5562176802365150510</id><published>2012-01-22T17:40:00.000-08:00</published><updated>2012-01-23T02:06:01.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='class based views'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django Generic Class Based View Tip</title><content type='html'>Those reading this via a feed reader will have to view the page on my blog as I am using embedded gists. I'll find a solution for that in the future. &lt;br /&gt;&lt;br /&gt;So say you have a base template that looks something like:&lt;script src="https://gist.github.com/1659579.js?file=base.html"&gt;&lt;/script&gt;&lt;br /&gt;And a template that looks like either of these:&lt;script src="https://gist.github.com/1659579.js?file=home.html"&gt;&lt;/script&gt;&lt;script src="https://gist.github.com/1659579.js?file=other.html"&gt;&lt;/script&gt;&lt;br /&gt;It used to be that you could write something like this:&lt;script src="https://gist.github.com/1659579.js?file=old_urls.py"&gt;&lt;/script&gt;&lt;br /&gt;But generic function based views are deprecated and the world is being strongly urged to move to generic calls based views. If you would like to get extra_content working with the &lt;a href="https://docs.djangoproject.com/en/dev/ref/generic-views/#django-views-generic-simple-direct-to-template"&gt;direct_to_template&lt;/a&gt; replacement &lt;a href="https://docs.djangoproject.com/en/dev/ref/class-based-views/#django.views.generic.base.TemplateView"&gt;TemplateView&lt;/a&gt;, you can use a view like the following:&lt;script src="https://gist.github.com/1659579.js?file=views.py"&gt;&lt;/script&gt;&lt;br /&gt;And a urls.py like the following using it:&lt;script src="https://gist.github.com/1659579.js?file=urls.py"&gt;&lt;/script&gt;&lt;br /&gt;The code used in this blog post can be found in &lt;a href="https://gist.github.com/1659579"&gt;this gist&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-5562176802365150510?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/5562176802365150510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2012/01/django-generic-class-based-view-tip.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5562176802365150510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5562176802365150510'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2012/01/django-generic-class-based-view-tip.html' title='Django Generic Class Based View Tip'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-5068202446666747606</id><published>2012-01-21T14:53:00.000-08:00</published><updated>2012-01-22T14:18:02.629-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='IRC'/><category scheme='http://www.blogger.com/atom/ns#' term='nodejs'/><category scheme='http://www.blogger.com/atom/ns#' term='redis'/><title type='text'>Gut Reaction</title><content type='html'>I've always preferred working on the backend of applications, especially web apps. This stems from my lack of confidence in trying to make functional, and pretty, interfaces. This had lead to, by proxy, a strong dislike of &lt;a href="http://en.wikipedia.org/wiki/Javascript"&gt;JavaScript&lt;/a&gt;. Over time I had come to dislike it less, especially with things like &lt;a href="http://jquery.com/"&gt;jQuery &lt;/a&gt;to make the &lt;a href="http://en.wikipedia.org/wiki/Document_Object_Model"&gt;DOM&lt;/a&gt; less painful to work with.&lt;br /&gt;&lt;br /&gt;This recently changed when I started using &lt;a href="http://nodejs.org/"&gt;Node&lt;/a&gt; for little projects here and there. It gave me access to the &lt;a href="http://en.wikipedia.org/wiki/Reactor_pattern"&gt;reactor pattern&lt;/a&gt; without having to convolute the syntax of a language I like, such as what &lt;a href="http://twistedmatrix.com/trac/"&gt;Twisted &lt;/a&gt;does to &lt;a href="http://python.org/"&gt;Python&lt;/a&gt;. It took me a couple weeks to find a project that I could start using Node for, the answer was an &lt;a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat"&gt;IRC&lt;/a&gt; bot that I have named &lt;a href="https://github.com/wraithan/zenircbot"&gt;ZenIRCBot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The design of this bot takes the reactor pattern to heart. Using an asynchronous IRC library called &lt;a href="https://github.com/martynsmith/node-irc"&gt;node-irc&lt;/a&gt; to connect and manage its IRC session it connects and provides me with various events I can listen for and react to. But that is just the core bot, it just takes whatever messages it sees and puts them in a &lt;a href="http://redis.io/"&gt;Redis&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern"&gt;pub/sub channel&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This allows the core bot to remain very simple and just implement a &lt;a href="http://zenircbot.readthedocs.org/en/latest/services.html#writing-your-own"&gt;protocol&lt;/a&gt; that I have come up with. Then I have services that implement the protocol as well but run as separate processes. This allows me to add or remove functionality to the bot without ever having to log the bot out or restart it. This makes development of services rather rapid as I can write the service, start it, test it, edit it, restart it, and not have to wait for the time it takes the bot to do a full connection.&lt;br /&gt;&lt;br /&gt;This also leads to the ability to write services (or in as &lt;a href="http://ericholscher.com/"&gt;Eric Holscher&lt;/a&gt; did, &lt;a href="https://github.com/wraithan/zenircbot/blob/master/bot.py"&gt;the core bot&lt;/a&gt;) in any language, as long as it implements the protocol. Letting anyone who knows at least one programing language that is listed on &lt;a href="http://redis.io/clients"&gt;this list&lt;/a&gt; or can implement a Redis client for the language they are using, can use and contribute to this bot.&lt;br /&gt;&lt;br /&gt;The end result of all of this is that I have a new found like for JavaScript, and got better at some skills like using the reactor pattern. If you haven't tried Node out, I strongly suggest you go play with it, maybe write a service or two for my bot while you're at it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-5068202446666747606?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/5068202446666747606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2012/01/gut-reaction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5068202446666747606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5068202446666747606'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2012/01/gut-reaction.html' title='Gut Reaction'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-7413779777524793106</id><published>2011-11-21T15:50:00.001-08:00</published><updated>2012-01-21T00:57:16.982-08:00</updated><title type='text'>Teaching the next generation</title><content type='html'>Over the last two weeks I have both observed and taken part in the learning process of a new software developer. This post will be mostly regarding the things I noticed and saw while hanging out with my friend who is learning.&lt;br /&gt;&lt;br /&gt;We developers who have been doing it for a while have abstracted away and taken for granted the various concepts that we had to learn, understand, and use on a daily basis. Some of these concepts are relatively easy to explain: a string vs a number, you have to declare/define something before you can use it. Others are more difficult: scope, functions, callbacks, recursion. And it also depends on the student what concepts will be harder than others. Functions and abstracting to variables is easy for someone with a heavy math background. This has made me realize just how much knowledge I not only have gathered over the years, but don't even have to think about or consider as I use it.&lt;br /&gt;&lt;br /&gt;This is a blessing and a curse though. This makes it really easy for us to discuss and implement very complex things. Systems that without all of this base knowledge would be near impossible. On the other hand we are horribly unqualified to teach the up and coming generation of coders. We assume a vast fountain of knowledge with simple statements, we tend to be detail orientated so we try to explain everything to the depth of our knowledge because all of that knowledge is useful to us. We forget that at one point in time we had no clue that our Python or JavaScript weren't being natively executed but first interpreted by an intermediary. Nor did we know why that would be a good thing.&lt;br /&gt;&lt;br /&gt;I rant and rave commonly that the education system failed me when it came to trying to learn more about software development. Over time I am finding that even worse than that structure being a failure, is none of us have answers that will fix it. There are lots of efforts in this vein, and they work in certain situations, but they are not generally applicable to the masses. While we are very concerned with making better software all the time, I think we, as a field need to start looking inward and toward the future.&lt;br /&gt;&lt;br /&gt;One step in that direction are things like &lt;a href="http://www.codecademy.com/"&gt;CodeAcademy&lt;/a&gt; which are exploring how we can use modern technologies to get a new programmers up and running in seconds. What I think may be needed as well is a better QA model to determine what we are doing right and wrong, as well as people with a background in education.&lt;br /&gt;&lt;br /&gt;I hope things get better in time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-7413779777524793106?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/7413779777524793106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/11/teaching-next-generation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7413779777524793106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7413779777524793106'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/11/teaching-next-generation.html' title='Teaching the next generation'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-2953177045362097099</id><published>2011-10-30T17:12:00.000-07:00</published><updated>2012-01-22T14:26:57.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='readthedocs'/><title type='text'>Being a Contributor</title><content type='html'>When I attended &lt;a href="http://djangocon.us/"&gt;DjangoCon&lt;/a&gt; I decided I needed to work a bit less on my own projects and start putting more time into contributing to other projects. I use so many free and open libraries both in my work and my personal code, and it is time to start contributing again.&lt;br /&gt;&lt;br /&gt;The first project I decided to try to contribute to was &lt;a href="http://readthedocs.org/"&gt;Read the Docs&lt;/a&gt;. The choice was pretty easy since I know &lt;a href="http://ericholscher.com/"&gt;Eric Holscher &lt;/a&gt;and it is a project I benefit from on a regular basis. So at the DjangoCon sprints I sat down near him and asked him if there were any particularly valuable tickets I could take and start hacking on. He gave me a list of issues and I started in.&lt;br /&gt;&lt;br /&gt;By the end of the day I had a patch for RTD, granted it didn't fully work but it was a start. Added some unit tests and fixed up the code and soon I had a complete contribution that was added and it made me smile. And smile even more to be added to the &lt;a href="https://github.com/rtfd/readthedocs.org/blob/master/AUTHORS.rst"&gt;AUTHORS&lt;/a&gt; file. Couple more patches later and Eric asked if I wanted to help out with the servers and get access to them. I said yes and now I am part of the RTD ops team as well as a contributor.&lt;br /&gt;&lt;br /&gt;I used to contribute to a couple projects a few years ago. In recent history I've spent my time scratching my own itches and working on proprietary code for work. Going through the process of contributing has made me excited to do it some more on various projects. And &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; makes it so easy to just send a pull request, comment a couple times back and forth and get patches accepted.&lt;br /&gt;&lt;br /&gt;I am far from the first to talk about how easy it is to contribute to projects compared to the old days of sending patches to mailing lists. I just want to be another voice in the crowd, if even one person decides to contribute because of this, or it makes a person happy and continues contributing this was a success.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-2953177045362097099?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/2953177045362097099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/10/being-contributor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2953177045362097099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2953177045362097099'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/10/being-contributor.html' title='Being a Contributor'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-2567112251799047353</id><published>2011-09-13T01:36:00.000-07:00</published><updated>2011-09-13T01:36:30.090-07:00</updated><title type='text'>Direction, Motivation, and Manifestation</title><content type='html'>I have recently been reading about &lt;a href="https://github.com/blog/920-how-github-works"&gt;GitHub&lt;/a&gt; the atmosphere they create for their developers. A completely flexible schedule, working remote, creativity is encouraged in multiple forms. All around it sounds like a rather ideal environment.&lt;br /&gt;&lt;br /&gt;I work at a company that doesn't afford me all of the pleasures that GitHub allows their developers, and while I'd love it if they did, I understand why they don't. In order to give myself this environment I think I am going to make my work day a bit more flexible. I need to be more disciplined in parts of my life to make that happen though.&lt;br /&gt;&lt;br /&gt;There are a number of things, a better sleep schedule where I get to bed by a decent hour (midnight or so). Getting things like laundry done (preferably) before I run out of clothes to wear. Getting to the gym as well as training on my bike more.&lt;br /&gt;&lt;br /&gt;One would not associate those things with being able to be more creative, but these are things I constantly worry about. They bog me down while I am hacking, socializing, existing. I want a sort of hybrid Getting Things Done system. Doing the things that I need to do each day, keeping track of them and trusting myself to complete them, but also leaving space for me to be creative.&lt;br /&gt;&lt;br /&gt;The plan is to take the whole work day and use that as my creative space. I'll have priorities of course, urgent things in our work code base, things other people are waiting on me to finish, etc. But I'll also allow myself to work on other projects if I am just burnt out on the work code base and need a break as well as if I have an idea burning and I want to write some code to express it.&lt;br /&gt;&lt;br /&gt;I have to track my hours at work so it isn't like I'll be spending all my time I am being paid to work on other projects. The biggest problem I could see in this is that I'll work too few hours and my paycheck will be a bit light. I think it will be a valuable experiment though, will be interesting to see how it all pans out.&lt;br /&gt;&lt;br /&gt;-Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-2567112251799047353?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/2567112251799047353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/09/direction-motivation-and-manifestation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2567112251799047353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2567112251799047353'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/09/direction-motivation-and-manifestation.html' title='Direction, Motivation, and Manifestation'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-6064755444082812148</id><published>2011-08-12T20:19:00.000-07:00</published><updated>2011-08-12T20:19:00.242-07:00</updated><title type='text'>Mesh Networks</title><content type='html'>I've read about them, but I don't know enough about them to implement one without lots of headaches and research. They have been on my mind more and more though with the happenings in &lt;a href="http://en.wikipedia.org/wiki/Internet_in_Egypt#2011_Internet_shutdown"&gt;Egypt&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Communications_in_Libya#The_Internet_and_the_civil_war"&gt;Libya&lt;/a&gt;, and now on home turf in &lt;a href="http://sfappeal.com/news/2011/08/bart-cell-fcc.php"&gt;San Francisco&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We all carry around these devices which can both broadcast and receive on multiple frequencies, the two of primary interest being &lt;a href="http://en.wikipedia.org/wiki/Bluetooth"&gt;Bluetooth&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Wi-Fi"&gt;802.11 Wi-Fi&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/Bump_%28application%29"&gt;Bump&lt;/a&gt; has proven that we can use Bluetooth to transfer point to point, sure they do some authentication on their servers and require users to accept the transaction but a proof of concept is already there. Combined with one of the several mesh routing techniques and perhaps something like &lt;a href="http://en.wikipedia.org/wiki/Onion_routing"&gt;onion routing&lt;/a&gt; where only the destination node can read the message... sounds like a feasible &lt;a href="http://en.wikipedia.org/wiki/Mesh_network"&gt;mesh network&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Without the onion routing you have the same problem as &lt;a href="http://en.wikipedia.org/wiki/Citizens%27_band_radio"&gt;CBs&lt;/a&gt; one can sniff all the traffic on the network and learn what is going on. Protesters use &lt;a href="http://en.wikipedia.org/wiki/Scanner_%28radio%29"&gt;police scanners&lt;/a&gt; to do the same thing that police could do with CBs to monitor traffic. The alternative is to use something like &lt;a href="http://en.wikipedia.org/wiki/Private-key_cryptography"&gt;public/private key&lt;/a&gt;, which only works if you have set it up ahead of time, unlikely in the ideal use cases like protests.&lt;br /&gt;&lt;br /&gt;Another potential problem is the needing a rooted phone for broadcasting a wireless node, limiting non-rooted phones to single point to point communication, or connecting as an end node to a Wi-Fi network that someone else is broadcasting, or using Bluetooth which I don't know the limitations on whether they can &lt;a href="http://en.wikipedia.org/wiki/Multicast"&gt;multicast&lt;/a&gt; or would have to connect to each other phone individually.&lt;br /&gt;&lt;br /&gt;Yet another potential problem is battery life. When I tether it drains my battery quickly. I have not confirmed that this is purely the broadcasting and not the combination of broadcasting as well as connecting on 3g. Bluetooth appears to be more battery efficient and newer versions of the protocol/hardware is getting better/more efficient.&lt;br /&gt;&lt;br /&gt;A note to those who will read this and rip it apart, I've not done any research for the piece directly, just reading about things when they peaked my interest months ago. If you have any corrections please add them (preferably with source) to the comments and I'll gladly update the post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-6064755444082812148?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/6064755444082812148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/08/mesh-networks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6064755444082812148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6064755444082812148'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/08/mesh-networks.html' title='Mesh Networks'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-956005504316578691</id><published>2011-06-12T23:28:00.000-07:00</published><updated>2011-06-12T23:28:52.420-07:00</updated><title type='text'>What's in a name?</title><content type='html'>I am strongly considering abandoning my christian, as it is refered to, and go by my handle on the 'net. Which part of me says "That is fuckin' rediculous!" And indeed, it does seem silly, but today I met some new people, and I started to introduce myself and Chris and it didn't feel right, these are my fellow nerds, we choose our own names and what our names mean to us.&lt;br /&gt;&lt;br /&gt;I am Wraithan, I have a big tattoo of a wraith, it's me. When I told people my name is Wraithan I felt slightly awkward but when I didn't bother saying my name was Chris but some people call me Wraithan people hardly blinked. I loved it.&lt;br /&gt;&lt;br /&gt;I'm going to give it a go for a while, fuck it if people don't approve, why can't I choose my own name without changing my legal name. It's a good name as any, and has been mine for 13 years, the "real world" should know it too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-956005504316578691?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/956005504316578691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/06/whats-in-name.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/956005504316578691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/956005504316578691'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/06/whats-in-name.html' title='What&apos;s in a name?'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-8994148159396433511</id><published>2011-06-05T03:40:00.000-07:00</published><updated>2011-06-05T03:40:13.374-07:00</updated><title type='text'>Another Blog!</title><content type='html'>I have a difficult time sometimes with what I want to keep in this blog and what I want to either just write about for myself or perhaps start a new blog. This time I decided to start a new blog. Currently it is empty, but hopefully tomorrow night I'll be posting my first entry into it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cookwraith.blogspot.com/"&gt;http://cookwraith.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-8994148159396433511?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/8994148159396433511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/06/another-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8994148159396433511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8994148159396433511'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/06/another-blog.html' title='Another Blog!'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-7558240199686482152</id><published>2011-05-01T22:06:00.000-07:00</published><updated>2011-05-01T22:06:14.903-07:00</updated><title type='text'>Goals and planning</title><content type='html'>So here I sit, after a one of the most physically demanding days of my life pondering what and how I want to proceed with things in my life. Just two days ago I did a 75 mile ride from Sherwood to Lincoln City. I wasn't as physically or mentally prepared for this as I could and should have been. I was dead tired, and ready to give up at 50 or 55 miles, when I was climbing over the coastal range.&lt;br /&gt;&lt;br /&gt;I had the time to prepare for this, I even started preparing but went off track a couple weeks ago after taking a week off to let my calves recover. Lesson learned though, I have three weeks to prepare for Reach the Beach, a 103 mile ride from Portland to Pacific City, and you better believe I'll be spending my free time preparing in several way, from time at the gym to time in the saddle, to fixing my diet.&lt;br /&gt;&lt;br /&gt;One of the realizations of this weekend is that I have no overarching goals for my life. I have a couple goals that have been put together ad-hoc but nothing that ties it all together, nor prioritization between those goals. That is part of the reason I didn't end up as ready as I could have been for my ride. It is also part of the reason a lot of my software projects are abandoned and subject to bit rot.&lt;br /&gt;&lt;br /&gt;I don't have an overarching scheme for my life yet, but I do have a couple things that once I figure out a bit more about myself I can turn into one. Those things are the pursuit of a more healthy life style. This is more regular exercise, discipline, and a better diet. Continuing my learning in several fields, focusing on software development, but making more room for other types of learning in life. As well as the re-evaluation of the things I have periodically put time into, like linguistics, and deciding if I should put time/money/effort into them.&lt;br /&gt;&lt;br /&gt;Something that I have a tendency to loose then over indulge in is relaxation and socialization, so making it a goal, so it stays in mind and I remember to call/email/hang out with my friends regularly, as well as taking occasional days off of everything and perhaps just laying in the park and reading.&lt;br /&gt;&lt;br /&gt;Over time, those of you who tend to read this blog (who are likely real life friends) will see the changes, and I'll try to post when I notice some of the better changes.&lt;br /&gt;&lt;br /&gt;-Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-7558240199686482152?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/7558240199686482152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/05/goals-and-planning.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7558240199686482152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7558240199686482152'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/05/goals-and-planning.html' title='Goals and planning'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-8490470293578259023</id><published>2011-03-28T02:04:00.001-07:00</published><updated>2011-03-28T02:05:57.521-07:00</updated><title type='text'>Separation of Concerns</title><content type='html'>So the realization that I had due to &lt;a href="http://twitter.com/#!/tylergillies"&gt;Tyler&lt;/a&gt;. He made a comment about how he doesn't really write big websites or all in one bundles but rather uses and writes smaller services that talk to each other.&lt;br /&gt;&lt;br /&gt;I had been thinking about how I wanted to integrate with &lt;a href="http://dailymile.com"&gt;DailyMile&lt;/a&gt; but couldn't decide on how I wanted to pull down the data. After hearing how Tyler works I decided I'd just write a simple daemon in Lisp that could pull down my data and store it in the PostgreSQL database I planned on using. This made it far simpler to (start) writing both sides.&lt;br /&gt;&lt;br /&gt;I am currently spending time on the daemon and how/what I want to store the entries in the database (so I don't have to request them every time) the benefits of being able to focus solely on the communication between my daemon and the DailyMile service have made it so I am not solving problems like how to display the information or how to aggregate it or the features I'll have in the web side of the app.&lt;br /&gt;&lt;br /&gt;Once I have it pulling down and saving the basics of the entries consistently I can start into the web site side of things, which since it only has to read from the database not pull down data from a foreign server, it will simplify the site and I can focus on the features and processing the data.&lt;br /&gt;&lt;br /&gt;Sure there are still plenty of problems to solve in this space and with what I want to do, but separation of concerns like this results in easier to maintain, extend and reuse services.&lt;br /&gt;&lt;br /&gt;-Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-8490470293578259023?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/8490470293578259023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/03/separation-of-concerns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8490470293578259023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8490470293578259023'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/03/separation-of-concerns.html' title='Separation of Concerns'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-943149119904103661</id><published>2011-03-28T01:17:00.000-07:00</published><updated>2012-01-21T00:59:36.437-08:00</updated><title type='text'>DailyMile</title><content type='html'>Those of you who read my blog will notice the new widget on the side. That is a widget from &lt;a href="http://dailymile.com/"&gt;DailyMile&lt;/a&gt; as I have several goals right now. Ride a century (100 miles) on my bike, jog for 30 minutes straight without slowing to a walk or stopping, and finally to swim a mile straight without resting.&lt;br /&gt;&lt;br /&gt;Now you, most of you who read this are going 'wtf this is a tech blog' 'tis the truth, this is a tech blog. First I wanted to give a shout out to the folks at DailyMile. Their site is pretty awesome, works (so far) without any noticeable bugs or flaws, and they are nice enough to provide a RESTful API that returns JSON (yay no XML-RPC). Heck, I've even contacted them about donating or paying for some pro-mode if they decide to add one. I know they offer shirts but those have an overhead cost to them and they aren't really my style.&lt;br /&gt;&lt;br /&gt;More on the API, it is a pretty decent setup, uses OAuth2, returns JSON, and is pretty intuitive. I am going to be building out some software of my own that uses it to track smaller goals with end dates and such which their 'challenge' system doesn't really support in a robust way. The details of that along with a recent realization thanks to a fellow Portland Nerd will be coming in the next post. For now, I just wanted to show my love for this site that is already making my life a little better.&lt;br /&gt;&lt;br /&gt;-Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-943149119904103661?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/943149119904103661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/03/those-of-you-who-read-my-blog-will.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/943149119904103661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/943149119904103661'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/03/those-of-you-who-read-my-blog-will.html' title='DailyMile'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-5791238969398345638</id><published>2011-03-21T03:17:00.000-07:00</published><updated>2011-03-21T03:17:19.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='fabric'/><category scheme='http://www.blogger.com/atom/ns#' term='gunicorn'/><title type='text'>Fabric and why it makes me happier to work on side projects</title><content type='html'>Tonight I set out for two goals, to start an app for tracking my progress in preparation for a &lt;a href="http://bicycling.about.com/od/trainingandfitness/a/century.htm"&gt;Century Ride&lt;/a&gt; in the next few months, and to organize my &lt;a href="http://fabfile.org/"&gt;fabfile.py&lt;/a&gt; to be more generic. I've started the app, though all it does is let you log into the admin section of the site (using django-admin) which is some success. But the real technical success tonight is my fabfile and how far it has come.&lt;br /&gt;&lt;br /&gt;I had a monolithic &lt;a href="https://github.com/wraithan/reciblog/blob/master/fabfile.py"&gt;fabfile&lt;/a&gt; that I have been copying between projects and just search and replacing in, it could (potentially) do a full install of an app, at a push of a button. Really those steps are things that are done (for me at least) once a blue moon. The more valuable part is push button releases. So I reworked it to only include the things I need for development and releases this is the result: &lt;a href="https://github.com/wraithan/century/blob/master/fabfile.py"&gt;Century fabfile.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The lower the bar, the better for releasing new version of a site I am working on. In the past I had found myself editing python on the live server, then committing back to github as things work. This is poor practice for many reasons... Now, I can finish a feature, close a bug, or clean up code and easily deploy it to the live server with a simple `git push &amp;amp;&amp;amp; fab deploy` The only reason the git push isn't part of the deploy is that sometimes I unpushed code that is not ready for live, and I'd like to be able to deploy without having to worry about that.&lt;br /&gt;&lt;br /&gt;I highly recommend that you guys check out Fabric, it is really simple to use and will make your life better in many ways.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-5791238969398345638?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/5791238969398345638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/03/fabric-and-why-it-makes-me-happier-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5791238969398345638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/5791238969398345638'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/03/fabric-and-why-it-makes-me-happier-to.html' title='Fabric and why it makes me happier to work on side projects'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-6688342604177602888</id><published>2011-03-17T12:14:00.000-07:00</published><updated>2011-03-17T12:14:53.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>What to do with a huge backlog...</title><content type='html'>So, here at my company we've been slowly adopting a more agile-like process. Which started with adding lots of tests and using CI to run the full test suite. As well as continual refactoring of code (once it is tested) to both make it fit the new requirements and to make it simpler. We have several release windows per week and attempt to utilize at least 1 or 2 of those, so the customer is getting our improvements as we complete them rather than in giant releases every few months.&lt;br /&gt;&lt;br /&gt;And as we are integrating more and more agile practices into our work flow, we are hitting a problem that I have seen at a couple companies and have yet to see much that tackles this issue. Now this is nothing agile specific... it seems to happen with any sufficiently large application.&lt;br /&gt;&lt;br /&gt;The problem is we have a backlog that is growing faster than we close tickets. Our first solution to this problem was to start having what we call 'Bug Fridays' and that has helped.&lt;br /&gt;&lt;br /&gt;A Bug Friday is where we (as a company) can work on low hanging fruit, regardless of what our current projects are and how much value the low hanging fruit is worth. Since we are getting a lot of tickets done, the value adds up quickly, it makes both developers happy (because they closed a lot of bugs, especially old ones) and the client happy (because while it isn't their highest priority stuff, often this are mild annoyances that they deal with every day)&lt;br /&gt;&lt;br /&gt;This has had a positive effect and has even got us with a net decrease in bugs since we started them a month ago. The first one was most effective, the second one was less effective, and I am betting our third one (tomorrow) will be less effective than the second. We are doing them every two weeks and the amount of low hanging fruit in the backlog is decreasing each time. So long term I am not sure how valuable it is, it may need to become a once a month thing instead of every two weeks to allow for more low hanging fruit to accumulate.&lt;br /&gt;&lt;br /&gt;From there, I am not sure what to do to stave off this growth of open tickets vs closed. I'd love to hear some suggestions and hear what other companies and projects are doing to attempt to win this battle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-6688342604177602888?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/6688342604177602888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/03/what-to-do-with-huge-backlog.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6688342604177602888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6688342604177602888'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/03/what-to-do-with-huge-backlog.html' title='What to do with a huge backlog...'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-1006539654279877298</id><published>2011-02-20T05:21:00.000-08:00</published><updated>2011-02-20T05:21:01.813-08:00</updated><title type='text'>grub2 and a gamer's problem.</title><content type='html'>As some of you may know, I am a gamer. Also, I am a software developer. I use Windows 7 for my gaming and Arch Linux for my dev work.&lt;br /&gt;&lt;br /&gt;The problem I've ran into, and some of my friends have complained about as well, is that when you go to reboot to your Windows install you have to sit around and wait for the grub prompt, then select the right entry, then you are clear to walk away while it boots.&lt;br /&gt;&lt;br /&gt;This is no longer a problem.&lt;br /&gt;&lt;br /&gt;If you are running Grub2, there is a simple solution, if you are not, I recommend switching to it (Archers, the installer installs Grub1 there is a nice wiki page about Grub2 if you'd like to switch).&lt;br /&gt;&lt;br /&gt;The solution makes it so we can choose what menu entry to boot before rebooting, then have it go back to the default before we set that on the next boot after that.&lt;br /&gt;&lt;br /&gt;The start of this solution is enabling saving of defaults for grub. This requires changing /etc/default/grub:&lt;br /&gt;&lt;pre class="brush: bash"&gt;GRUB_DEFAULT=0&lt;/pre&gt;to &lt;br /&gt;&lt;pre class="brush: bash"&gt;GRUB_DEFAULT="saved"&lt;/pre&gt;&lt;br /&gt;Some distros have a update-grub command, Arch Linux is not one of them, so then you reinstall grub which is as simple as a: (replace sda with your boot drive)&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo grub-install /dev/sda&lt;/pre&gt;&lt;br /&gt;Then you can do: (replace 3 with the number or name of your windows menu entry 0 indexed)&lt;br /&gt;&lt;pre class="brush: bash"&gt;sudo grub-reboot 3&lt;br /&gt;sudo reboot&lt;/pre&gt;&lt;br /&gt;And there ya go, you will boot into windows, and when you reboot it will go back to linux.&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-1006539654279877298?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/1006539654279877298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/02/grub2-and-gamers-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/1006539654279877298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/1006539654279877298'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/02/grub2-and-gamers-problem.html' title='grub2 and a gamer&apos;s problem.'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-7422369835823935559</id><published>2011-02-16T20:38:00.000-08:00</published><updated>2011-02-16T20:38:47.849-08:00</updated><title type='text'>Back !</title><content type='html'>So here I am, back on blogger. Though I have my own domain name it still feels like a bit of a cop out.&lt;br /&gt;&lt;br /&gt;I wrote my own blogging software, which seems like it should be an achievement and as a software developer I could customize it all I ever wanted etc, etc. The thing is, making things pretty is hard. I am not aesthetically talented, so when it comes to stylizing things, I get frustrated, and in the case of personal projects, give up.&lt;br /&gt;&lt;br /&gt;I have been wanting to write again, blog about different technical hurdles I have overcome, at home and at work. Share things like how I got org-mode setup with org-protocol or the nginx setup I have switch to because of how much cleaner it feels than using apache. Things like that.&lt;br /&gt;&lt;br /&gt;So you can look forward to updates on this blog, though I don't know how often I will update it, and I wont make a promise for every day, every week or even every month. But every time I feel like writing about something technical or nerdy you can bet I'll do it here (or rant on IRC)&lt;br /&gt;&lt;br /&gt;Wraithan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-7422369835823935559?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/7422369835823935559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2011/02/back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7422369835823935559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7422369835823935559'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2011/02/back.html' title='Back !'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-725923987264329959</id><published>2010-04-13T01:02:00.000-07:00</published><updated>2010-04-13T01:03:25.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new site.'/><title type='text'>Moving</title><content type='html'>I wont be moving the content (yet?) but I am moving to posting on my new blog that I wrote software for. It is located at &lt;a href="http://www.lessthanthreesoftware.com/"&gt;http://www.lessthanthreesoftware.com/&lt;/a&gt; I have feeds for those of you who &amp;lt;3 your feeds and the rest it isn't as pretty but it will get better and I have full control over it which is nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-725923987264329959?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/725923987264329959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2010/04/moving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/725923987264329959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/725923987264329959'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2010/04/moving.html' title='Moving'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-9056247626611893729</id><published>2010-02-17T16:00:00.000-08:00</published><updated>2011-02-20T04:51:53.859-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='redmine'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mod_wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualhost'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='phusion'/><title type='text'>Django, Redmine both on the same vhost in apache</title><content type='html'>I've spent a good portion of my day messing with this, asking questions in various channels on irc.freenode.net, and generally trying to not let my head explode.&lt;br /&gt;&lt;br /&gt;What 'this' is exactly is this:&lt;br /&gt;&lt;br /&gt;I wanted my django app to run on / of my domain. Since I don't own my domain it would be easiest(or so I thought) to setup redmine on /redmine of my domain. This way it is only one domain and I can run my bug/project tracker on the same place as my website.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://synput.thruhere.net/"&gt;http://synput.thruhere.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://synput.thruhere.net/redmine"&gt;http://synput.thruhere.net/redmine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That shows that I have it all working, now how did I do it... It will be simple for you but was not a simple process for me due to a couple settings I had tweaked without realizing the effect.&lt;br /&gt;&lt;br /&gt;First off lets get the django app setup, I use mod_wsgi for my django apps, and run them in daemon mode so I can easily update the app without taking down the server at all.&lt;br /&gt;&lt;br /&gt;My wsgi file (should look pretty typical for those who have seen one before):&lt;br /&gt;&lt;pre class="brush: python"&gt;import os&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))&lt;br /&gt;sys.path.append(root_dir)&lt;br /&gt;&lt;br /&gt;os.environ['DJANGO_SETTINGS_MODULE'] = 'recipes.settings'&lt;br /&gt;&lt;br /&gt;import django.core.handlers.wsgi&lt;br /&gt;application = django.core.handlers.wsgi.WSGIHandler()&lt;/pre&gt;You'll need to toss &lt;br /&gt;&lt;pre&gt;LoadModule wsgi_module modules/mod_wsgi.so&lt;/pre&gt;into your httpd.conf&lt;br /&gt;&lt;br /&gt;Here is my vhost stuff without the Redmine stuff in it:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;virtualhost 80=""&amp;gt;&lt;br /&gt;ServerName synput.thruhere.net&lt;br /&gt;ServerAdmin xwraithanx@gmail.com&lt;br /&gt;&lt;br /&gt;Alias /media /srv/wsgi/recipes/media&lt;br /&gt;&lt;br /&gt;&amp;lt;directory srv="" wsgi="" recipes="" media=""&amp;gt;&lt;br /&gt;Order allow,deny&lt;br /&gt;Options Indexes FollowSymlinks&lt;br /&gt;Allow from all&lt;br /&gt;&amp;lt;/directory&amp;gt;&lt;br /&gt;&lt;br /&gt;WSGIDaemonProcess recipes python-path=/srv/wsgi/recipes/lib/python2.6/site-packages display-name=%{GROUP}&lt;br /&gt;WSGIProcessGroup recipes&lt;br /&gt;WSGIScriptAlias / /srv/wsgi/recipes/recipes.wsgi&lt;br /&gt;&lt;br /&gt;&amp;lt;directory srv="" wsgi="" recipes=""&amp;gt;&lt;br /&gt;Order deny,allow&lt;br /&gt;Allow from all&lt;br /&gt;&amp;lt;/directory&amp;gt;&lt;br /&gt;&amp;lt;/virtualhost&amp;gt;&lt;/pre&gt;So far this should look pretty typical for anyone who has ever setup a django vhost with apache.&lt;br /&gt;&lt;br /&gt;Now for Redmine I chose to use Phusion, why you might ask? Well sycopomp uses it and when I asked him why, because he found a guide somewhere that made it easy and his memory usage isn't very high. So basically, not for any good reason.&lt;br /&gt;&lt;br /&gt;Go ahead and symlink your redmine/public directory into your DocumentRoot for me that was /srv/http.&lt;br /&gt;&lt;br /&gt;You'll have to install Phusion:&lt;br /&gt;&lt;pre class="brush: bash"&gt;gem install passenger&lt;br /&gt;passenger-install-apache2-module&lt;/pre&gt;That will toss up a helpful wizard to do the installation for you with a couple of prompts. You will need to copy the lines from the wizard into your httpd.conf, they should look something like:&lt;br /&gt;&lt;pre class="brush: xml"&gt;LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-2.2.9/ext/apache2/mod_passenger.so&lt;br /&gt;PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-2.2.9&lt;br /&gt;PassengerRuby /usr/bin/ruby&lt;/pre&gt;Next we need to add a line to our vhost and change another one, first line we'll add tells the server where to find and put redmine:&lt;br /&gt;&lt;pre class="brush: xml"&gt;RailsBaseURI /redmine&lt;/pre&gt;And secondly we need to change out:&lt;br /&gt;&lt;pre class="brush: xml"&gt;WSGIScriptAlias / /srv/wsgi/recipes/recipes.wsgi&lt;/pre&gt;Add put in the following instead since that will make django not catch /redmine:&lt;br /&gt;&lt;pre class="brush: xml"&gt;WSGIScriptAliasMatch ^\/(?!redmine(.*)) /srv/wsgi/recipes/recipes.wsgi&lt;/pre&gt;Restart the server and we should be good.&lt;br /&gt;&lt;br /&gt;I didn't make this page/code as generic as I could have but hopefully you can get the meaning from it, if not the kind folks in #httpd on irc.freenode.net can help you. They'll understand this if you don't. Also, do what some like to call frobbing, play with it, break it, whatever it takes so you understand it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-9056247626611893729?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/9056247626611893729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2010/02/django-redmine-both-on-same-vhost-in.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/9056247626611893729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/9056247626611893729'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2010/02/django-redmine-both-on-same-vhost-in.html' title='Django, Redmine both on the same vhost in apache'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3548273165051172931.post-8687056816994301340</id><published>2010-02-13T14:47:00.000-08:00</published><updated>2012-01-22T14:26:39.209-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='bpython'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>bpython and django</title><content type='html'>There are a few posts out there to get basic support for django inside of bpython but I as far as I have seen they ignore the virtualenv stuff that most of us django users do.&lt;br /&gt;&lt;br /&gt;virtualenv is a must when doing development on django projects, especially when you have several projects going on the same machine or you want to involve other developers. It allows for a clean environment with known versions of every package that is installed inside of the virtualenv.&lt;br /&gt;&lt;br /&gt;The first part of this is a known hack or method (take your pick) to make bpython recognize the django project.&lt;br /&gt;&lt;br /&gt;First you need to modify your ~/.bashrc or ~/.bash_profile (system dependent as to which is used) and add the following line to it:&lt;br /&gt;&lt;pre&gt;export PYTHONSTARTUP=~/.pythonrc&lt;/pre&gt;&lt;br /&gt;What this does is it tells python to run '~/.pythonrc' before it does anything else in the interpreter, this is a python specific thing not bpython specific thing.&lt;br /&gt;&lt;br /&gt;Next you need to create the ~/.pythonrc file and put the following into it:&lt;br /&gt;&lt;pre&gt;try:&lt;br /&gt;   from django.core.management import setup_environ&lt;br /&gt;   import settings&lt;br /&gt;   setup_environ(settings)&lt;br /&gt;except:&lt;br /&gt;   pass&lt;/pre&gt;&lt;br /&gt;Now if we didn't care about virtualenv we'd be completely done. If you go the less strict route and don't use --no-site-packages (the switch means that system wide packages are to be ignored in the virtualenv) then you will need to edit your bpython binary, most commonly located at /usr/bin/bpython or /usr/local/bin/bpython and change the shebang from:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/python&lt;/pre&gt;(it may be /usr/local/bin/python)&lt;br /&gt;to:&lt;br /&gt;&lt;pre&gt;#!/usr/bin/env python&lt;/pre&gt;&lt;br /&gt;This makes bpython use the value of the environment variable python instead of using a specific binary, the environment variable gets set by virtualenv so you are good to go after this.&lt;br /&gt;&lt;br /&gt;If you use --no-site-packages then you will have to install bpython in each virtualenv that you want to use it in.&lt;br /&gt;&lt;br /&gt;If you have any questions toss them in the comments or find me on freenode as Wraithan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-8687056816994301340?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/8687056816994301340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2010/02/bpython-and-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8687056816994301340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8687056816994301340'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2010/02/bpython-and-django.html' title='bpython and django'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-4371520765054332373</id><published>2009-09-14T17:47:00.000-07:00</published><updated>2012-01-22T14:27:56.676-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='nerds'/><category scheme='http://www.blogger.com/atom/ns#' term='tech support'/><title type='text'>Habits, past jobs to present.</title><content type='html'>Something that has been a big part of each job I have had (excluding Ross and Taco Bell) was that I would always find something I could fix with software (well actually I could've fixed the Taco Bell stuff but they wouldn't let me) so I begin coding away on the problem.&lt;br /&gt;&lt;br /&gt;At first just taking a small portion of each day working on it, then progressively ramping up the amount of development time I take at work, along with spending more time on the project at home. I've always chocked this up to me wanting to be a professional programmer, along with my drive to fix problems I see, especially problems that inconvenience me.&lt;br /&gt;&lt;br /&gt;Each of these times people asked me why I would work on work related stuff at home when I wasn't getting paid for it and I would tell them it fun or it will make work easier, or in the case of working at Retail Imaging it was to get off the phones and into the IT department. &lt;br /&gt;&lt;br /&gt;It gave me experience, made work easier, though I was working at home so there was no net lessening of work, in fact there was probably an increase. Be that as it may, it was a fun increase in work, it let me relax and gave me a sense of accomplishment.&lt;br /&gt;&lt;br /&gt;Now I am programming for a living, I love it, I get to come in and work my way through problems and challenge myself. I have already begun fixing things and am getting that sense of accomplishment, along with the experience and with each thing work seems to get a bit easier.&lt;br /&gt;&lt;br /&gt;But I am still doing my old habit. We have these data files at work (YAML) that are unweildly and not very fun to edit, add to, or create. There is no validation that the type of information put in for a value will actually go into the database until it blows up when trying to shove it all in there.&lt;br /&gt;&lt;br /&gt;I decided I wanted to write a tool for this, now it isn't a bid deal for everyone else it seems, even the QA folks don't seem to care too much about this. For me though this is a big deal, so I spoke to my boss to see if he knew if there were any existing tools, and he gave me a detailed explanation about why not.&lt;br /&gt;&lt;br /&gt;So I have now started development on a tool to do this task, that I am working on at home, and now I have no excuses, it is just fun for me and if my friends and family insist on questioning it and warning me I am going to burn out, I am just going to ignore them.&lt;br /&gt;&lt;br /&gt;Programming is a passion for some of us, sure there is too much of a good thing, but that is why there are many programming languages, design models, domains, and environments to program in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-4371520765054332373?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/4371520765054332373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/09/habits-past-jobs-to-present.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4371520765054332373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4371520765054332373'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/09/habits-past-jobs-to-present.html' title='Habits, past jobs to present.'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-8051722841370657126</id><published>2009-09-12T05:02:00.001-07:00</published><updated>2009-09-12T06:22:55.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='nerds'/><title type='text'>Coding for fun vs 9-5 coders.</title><content type='html'>In an interview with founder of WordPress Matt Mullenweg he said "...I don't think like, dentists go home at night and like want to do more dentistry for fun, but engineers do! You know, it's what we love and what we're passionate about."&lt;br /&gt;&lt;br /&gt;There are probably lots of posts on this topic out in the world... but I wanted to share my thoughts on it too.&lt;br /&gt;&lt;br /&gt;This is a topic that comes up now and then, mostly among programmers who code outside of work (likely at a gathering of them) talking about current or past co-workers and/or peers at school. Some cite how these programmers burn out quickly and find another profession, others comment on how their quality tends to be lower...&lt;br /&gt;&lt;br /&gt;Mostly it is talks of how people like me, who can go to a job where they program all day, then come home, and code more on personal projects, are superior and those who code during work hours only then go home and don't touch a line of code until 9am the next day should leave our industry.&lt;br /&gt;&lt;br /&gt;I was thinking about this a lot at my last &lt;a href="http://www.pdxpython.org/"&gt;PDX Python&lt;/a&gt; meeting, a friend of mine Michael did a talk on packaging python scripts for distribution. If I recall correctly he had started into this subject because he needed to do packaging at work and was looking into the different tools. But in order to do this talk he had to gather his notes and spend considerable time outside of work researching this subject.&lt;br /&gt;&lt;br /&gt;The research will likely be really useful for him at work, but the fact that after his shift was over, he was still concerned something work related and wanted to pursue it further is something you see in some fields but not many.&lt;br /&gt;&lt;br /&gt;Does this want to pursue knowledge that is work related, while we are in the comfort of our homes, a sanctuary that most use to forget about or at least, not think about work, and/or the lack of this pursuit by our 9-5 peers make us the only ones suitable for the job and them not acceptable at all? I don't think so, those of us that seek more knowledge while away from the work place may be better programmers, but that doesn't mean those who don't are horrible programmers. &lt;br /&gt;&lt;br /&gt;What people do outside of work is their business, the people who are 9-5 programmers are just as entitled to not spending their evenings coding as those of us who code for fun are entitled to working on our projects. We will likely stay in the business longer but switch jobs more often because for a lot of us, it is the pursuit of knowledge and problem solving that drives us, whereas our 9-5 counterparts tend to stay at the same company longer and they will end up mentoring the new hires since they will have the most experience with the code base.&lt;br /&gt;&lt;br /&gt;It is really a symbiotic relationship, even thouh most of my kind have less than kind things to say about the 9-5ers keep in mind the times these guys have helped you out in the office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-8051722841370657126?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/8051722841370657126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/09/coding-for-fun-vs-9-5-coders.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8051722841370657126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8051722841370657126'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/09/coding-for-fun-vs-9-5-coders.html' title='Coding for fun vs 9-5 coders.'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-4747172414376710068</id><published>2009-09-12T04:48:00.000-07:00</published><updated>2009-09-12T05:31:33.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='interviews'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='indie'/><title type='text'>Interviews, and my dream to be an entrepreneur</title><content type='html'>Lately I've taken to listening to lots of those podcasts, interviews, and tech talks. It started when I started watching/listening to Google talks more often. I linked one in my earlier posts about CSP and since have watched a whole slew of them.&lt;br /&gt;&lt;br /&gt;My latest ones I've been listening to is &lt;a href="http://mixergy.com/"&gt;Mixergy&lt;/a&gt; interviews. The ones I care about and listen to are about folks that start a business from open source software, and/or how popular websites have come into existence.&lt;br /&gt;&lt;br /&gt;Lots of my ideas and projects fall by the wayside but these interviews have had me thinking about if any of those projects would be viable to start a business from. I think to be able to make money from a project that you really enjoy and get to work on it all day is great.&lt;br /&gt;&lt;br /&gt;The biggest problem with trying to make money from these things is multifaceted. I love open source and writing code I can't share sucks but it is what sustains me right now so I can't knock it too much. But any code that I would be passionate enough to want to turn into a business I would have to either dual license (free for personal, pay for commercial) which in a lot of cases wouldn't work (little to no commercial interest) or need a pay for service portion (which could also be free personal/pay commercial)&lt;br /&gt;&lt;br /&gt;The dual license option is moderately common but lots of my projects and libraries I create are for my own enjoyment and I can't see folks paying to include code in their commercial product, nor can I see many ways to do things as a service while maintaining a full open source product other than maybe commercial tech support like some Linux distros use, again that would require lots of commercial interests to be viable though.&lt;br /&gt;&lt;br /&gt;The other options I have is that I could write closed source code for companies using my open source libraries. That way I could build a framework, set of libraries, and/or tools to manage and write the end application (be it web or otherwise). This way a good portion of the reusable stuff is open source and available to the community but I could still make money by writing software using it.&lt;br /&gt;&lt;br /&gt;I can do that with my current job to an extent, if I want a tool I can code it up at home, make a release of it, and then use it at work and see if the boss is cool with me spending company time on any other changes/bug fixes it needs. Should it prove useful enough I could see him easily approving that.&lt;br /&gt;&lt;br /&gt;In closing, I hope to someday have my own business, maybe I will focus on that a bit in college, but for now, I am pretty happy with being able to code all day for money, even if the majority of the code is not open source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-4747172414376710068?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/4747172414376710068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/09/interviews-and-my-dream-to-be.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4747172414376710068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4747172414376710068'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/09/interviews-and-my-dream-to-be.html' title='Interviews, and my dream to be an entrepreneur'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-954752736387220631</id><published>2009-08-10T08:41:00.000-07:00</published><updated>2009-08-10T09:44:27.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nerd Level 2'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet Explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='shock'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='tech support'/><title type='text'>Tech support (NL2)</title><content type='html'>I spent a good portion of the morning working on my little brother's computer. It was an unpleasent experience to say the least.&lt;br /&gt;&lt;br /&gt;This all started when he wanted to start playing World of Warcraft again. It was locking up really often so I told him to upgrade his video card drivers. So he went back to his room, and came back a little bit later and said he couldn't even get on the internet anymore. My first question was of course: What did you do to it? You see, us techies while even we think computers use dark magicks to operate, we know that most of the time when something breaks, it is the user's fault.&lt;br /&gt;&lt;br /&gt;He informed me he tried to upgrade his video drivers but that failed, so he tried to upgrade his other drivers, including his network drivers. So I tell him to run to the store and get me a soda and I will fix his computer.&lt;br /&gt;&lt;br /&gt;My initial reaction when I sat down:&lt;br /&gt;&lt;img class="centeredImage" src="http://pix.motivatedphotos.com/2008/6/20/633495987683532308-what-has-been-seen.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;First thing I see is IE6 up on the screen... quickly hunt for Firefox, Chrome, hell, I would have taken Opera at that point. So I go to windows update to grab IE8, since he likes his IE I figure I would leave it and just update that. No dice, it looked like when he upgraded network drivers it crapped out and didn't fully install them. So I check his windows version and again I am horrified. Windows XP SP1. Last time I checked it was 2009, not 2002. But ok I go to my room, hug my computer and grab SP2 and 3 and burn them to CD to install on his system.&lt;br /&gt;&lt;br /&gt;I go back to his room, install SP2, only a little trouble, ended up removing most of his drivers and XP let it install. Then I attempt to get his network card back online, installing the newer drivers he downloaded. This is the first thing that works first try on his system. Now I have internet and a moderately updated system, I am starting to feel better about this. I go online to windows update, grab IE8 and start installing it.&lt;br /&gt;&lt;br /&gt;Once again I get fun errors, it is having a hard time reading or removing a file (go go ambiguous error messages) so I wipe out all his temprary internet files, cookies, still no go. Remove his bookmarks and it works! Ok, now I have IE8, SP2, working internet. I install SP3 and it goes on without a hitch, ask him what video card he has so I can get the proper drivers... I get ATI' from him. I ask what model? 'Um, ATI?' is his response. So now I get to pull the side of his case off to see what video card he has.&lt;br /&gt;&lt;br /&gt;&lt;img class="centeredImage" src="http://members.arstechnica.com/x/spungy/DoNotWant.jpg" align="center" /&gt;&lt;br /&gt;&lt;br /&gt;I don't think it has ever been cleaned or blown out... I go out to the garage and turn on the compressor, blow out his computer get the model number and install it all.&lt;br /&gt;&lt;br /&gt;That was pretty much it, couple other drivers got installed no problem. In the end there is a lesson for both types of friends, the ones who give tech support and those who recieve it. For those that give tech support, check up on you friend's and family's computers now and then, do the regular maintence or teach them whichever is easier. For those that recieve tech support, when you hurt your computer, you hurt your local techies, please, please, please keep things up to date and clean. If done incrementally over time, these updates do not cause these kind of problems, it is when you try and do ALL of them at once.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-954752736387220631?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/954752736387220631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/08/i-spent-good-portion-of-morning-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/954752736387220631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/954752736387220631'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/08/i-spent-good-portion-of-morning-working.html' title='Tech support (NL2)'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-7684761760414977925</id><published>2009-07-21T05:54:00.000-07:00</published><updated>2009-07-21T06:28:54.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newsqueak'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerd Level 10'/><category scheme='http://www.blogger.com/atom/ns#' term='CSP'/><category scheme='http://www.blogger.com/atom/ns#' term='PyCSP'/><title type='text'>Exciting Introduction to Newsqueak, for me at least. (NL10)</title><content type='html'>&lt;a href="http://blog.sykosomatic.org/"&gt;Sykopomp&lt;/a&gt; and I have been speaking on concurrency a lot lately.&lt;br /&gt;&lt;br /&gt;I've used concurrency in several applications, the largest of which was a bot for EQ that used an &lt;a href="http://en.wikipedia.org/wiki/Actor_model"&gt;Actor&lt;/a&gt; based concurrency system. Other that have used concurrency haven't used any of the larger patterns, and honestly were just off the cuff and likely would not have worked well at all when scaled up.&lt;br /&gt;&lt;br /&gt;Sykopomp pointed out &lt;a href="http://en.wikipedia.org/wiki/Communicating_sequential_processes"&gt;Communicating Sequential Processes&lt;/a&gt;. I read about it and it seemed like a really good idea, but implementing it was still a bit beyond what I could imagine. He then clued me in on a Google Talk done by Rob Pike, &lt;a href="http://www.youtube.com/watch?v=HmxnCEa8Ctw"&gt;Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After watching this, I am really excited for this style of concurrency. I am looking to use it with Python but I have yet to find a library that implements it. I have considered using newsqueak directly but the problem there is the small community and even smaller amount of libraries available.&lt;br /&gt;&lt;br /&gt;If I can not find such a library, I may take it upon myself to implement this, possibly as a wrapper on python. Sykopomp would just as soon I learned lisp and used the lib he found for lisp using this, but I am going to stick with my python for now.&lt;br /&gt;&lt;br /&gt;EDIT: Found a library for pyhton: &lt;a href="http://code.google.com/p/pycsp/"&gt;PyCSP&lt;/a&gt;. Going to install and play with it today, I am really excited. I'll report back my experience as soon as I have enough code written to decide on if I really like it or not&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-7684761760414977925?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/7684761760414977925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/exciting-introduction-to-newsqueak-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7684761760414977925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7684761760414977925'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/exciting-introduction-to-newsqueak-for.html' title='Exciting Introduction to Newsqueak, for me at least. (NL10)'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-7726531767643175151</id><published>2009-07-20T17:32:00.000-07:00</published><updated>2009-07-20T23:01:38.209-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nerd Level 2'/><category scheme='http://www.blogger.com/atom/ns#' term='GTD'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Read it later (NL2)</title><content type='html'>I tend to get a lot of links on IRC about various topics, often I'd like to read them but I don't have the time or the focus to do it just that moment. I've tried several methods of saving links to read them later, Emailing the pages to myself, adding it to reader with the tag 'look at later' and none has worked as effectively as I would have liked.&lt;br /&gt;&lt;br /&gt;I stumbled upon the &lt;a href="http://readitlaterlist.com/firefox/"&gt;Read It Later Firefox extension&lt;/a&gt; and strongly considered it, but I use a mod on Firefox that makes it so that extension is pretty much useless, I'll go into why my Firefox looks like &lt;a href="http://omploader.org/vMjBmMw"&gt;this&lt;/a&gt; another day. I'd recommend this extension if your UI isn't as minimal as mine.&lt;br /&gt;&lt;br /&gt;But my search was not hopeless, I found that the site that did Read It Later, also did a set of &lt;a href="http://readitlaterlist.com/bookmarklets/"&gt;bookmarklets&lt;/a&gt; which are great. You have to sign up to use them, since they send the URL to the site for your list, allowing you to generate a read it later list on the fly, then you can hit the read bookmarklet to mark it as read and remove it from the list. And there is of course a bookmarklet to bring you to your list.&lt;br /&gt;&lt;br /&gt;This solution was nice enough as it was, but they also provide a RSS feed of your list, those of us who use feed readers continue on, those who don't, go &lt;a href="http://www.google.com/reader"&gt;here&lt;/a&gt; and start using them. They are great.&lt;br /&gt;&lt;br /&gt;So I set it up in my feed reader so when I am going through my reader, I am reminded of my list, and can read them as needed, or I can jump straight to my list via the bookmarklet. This allows me to not think about the articles until I have time to read them (like when I am checking my reader)&lt;br /&gt;&lt;br /&gt;This solution is great for me, hope y'all like it too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-7726531767643175151?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/7726531767643175151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/read-it-later-nl2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7726531767643175151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/7726531767643175151'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/read-it-later-nl2.html' title='Read it later (NL2)'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-4766468301086783788</id><published>2009-07-19T16:02:00.000-07:00</published><updated>2009-07-19T16:24:00.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerd Level 1'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Nerd levels (Nerd Level 1)</title><content type='html'>&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;16:00:09 Wraithan | I can't decide on how technical I want to go&lt;br /&gt;16:00:23 [C]Niall | Meh. Wing it.&lt;br /&gt;16:00:29 [C]Niall | Write crap if you want to write crap.&lt;br /&gt;16:00:35 Wraithan | sometimes i feel like just diving in and fuck those who don't get it, other times I feel bad and want to make it so everyone an understand&lt;br /&gt;16:00:46 [C]Niall | Do it all.&lt;br /&gt;16:00:56 Wraithan | Maybe I should put a level as part of the name&lt;br /&gt;16:00:56 Wraithan | haha&lt;br /&gt;16:01:21 [C]Niall | Yeah.&lt;br /&gt;16:01:23 [C]Niall | Good plan.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Alright, from now I plan on tagging each title with a nerd level. Sometimes I want to go in-depth on programming topics and well, most of my friends wont get it. Other times I am doing light hearted posts and/or explaining different technical things in ways I hope the majority can understand.&lt;br /&gt;&lt;br /&gt;Not going to list all the levels, just going to put tiers.&lt;br /&gt;Nerd Level 1: This will be stuff anyone can understand, or hopefully anyone can, ping me on IM/IRC/comments if something doesn't make sense in one of these, so I can improve my writing.&lt;br /&gt;&lt;br /&gt;Nerd Level 5: This will be moderately technical stuff, such as computer parts and linux software and what not.&lt;br /&gt;&lt;br /&gt;Nerd Level 10+: This will be more in-depth programming concepts, examinations into how hardware works, stuff like that.&lt;br /&gt;&lt;br /&gt;Hopefully this will help, and allow me to explore whatever topics I want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-4766468301086783788?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/4766468301086783788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/nerd-levels-nerd-level-1.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4766468301086783788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/4766468301086783788'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/nerd-levels-nerd-level-1.html' title='Nerd levels (Nerd Level 1)'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-6631644015665137986</id><published>2009-07-18T11:49:00.000-07:00</published><updated>2009-07-19T15:38:53.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='IRC'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><category scheme='http://www.blogger.com/atom/ns#' term='alpha'/><title type='text'>Alpha and Omega</title><content type='html'>More experimental software exploits.&lt;br /&gt;&lt;br /&gt;I spent 2-3 hours last night troubleshooting a crash in the latest nightly (an alpha or beta version that is built from the code base each evening) version of Firefox.&lt;br /&gt;&lt;br /&gt;I went to http://commons.wikimedia.org/wiki/File:Weechat.jpg when looking around for some screen shots of how the IRC client used to look in the previous version (was helping someone on IRC to make the current version look more like the older version) it turns out some Javascript (code that runs on your browser to make things dynamic.)&lt;br /&gt;&lt;br /&gt;What did this get me by running the nightly and finding a bug and reporting it. Not much, surely the bug would have been discovered before live without me. But this is just the inverse of the poison vial in the river. If all of us who test out software thought that same way, that it would be found before release so why bother even using a alpha/beta/rc piece of software and reporting bugs, it would increase the burden on the developer and allow for more edge case bugs to slip through.&lt;br /&gt;&lt;br /&gt;If you have the time and the will, I recommend that you use beta software, just be sure you are willing to go to their website and file a bug report if/when it crashes or glitches or whatever else.&lt;br /&gt;&lt;br /&gt;Tips for filing bug reports though, attempt to reproduce the bug, if you can, then give the full reproduction steps in the bug report, if not, say that you couldn't reproduce it, just because you can't doesn't mean that the developer wont have an idea of why it happened and be able to force the bug to show its face.&lt;br /&gt;&lt;br /&gt;Make sure you are up to date, if you are running a beta version that is 2-3 versions old, the first thing the developer is going to say is 'can you reproduce it in the most recent version?'&lt;br /&gt;&lt;br /&gt;And last but surely not least, at least give it a half assed attempt at searching their bug database to see if the bug has already been posted, if it has, and you have similar reproduction steps then add them in the comment (or if you can reproduce but the original bug poster can't) along with any other information you have. If the bug is in there, but you have vastly different reproduction steps, then post in a separate bug report.&lt;br /&gt;&lt;br /&gt;Hopefully this will encourage some of you to run beta software, and help the developers while you are at it.&lt;br /&gt;&lt;br /&gt;Note: The bug reporting tips apply to release software as well. If the program has a website, look for a bug database (may be labeled as known issues) if they don't have a bug database, find the contact email address and send them the bug report via email (even if you think it is common enough for others to have already reported it)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-6631644015665137986?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/6631644015665137986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/alpha-and-omega.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6631644015665137986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/6631644015665137986'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/alpha-and-omega.html' title='Alpha and Omega'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-8882843000313894160</id><published>2009-07-14T12:50:00.000-07:00</published><updated>2009-07-14T13:21:48.115-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='IRC'/><category scheme='http://www.blogger.com/atom/ns#' term='shock'/><category scheme='http://www.blogger.com/atom/ns#' term='nerds'/><title type='text'>Nerding Out</title><content type='html'>I have a tendency to do some things that others consider odd... among those things is my computer habits. I like to run my IM through my IRC client... which is a text mode client (aka no pretty pictures) It works great for me, and allows me to connect remotely into my session and talk to folks.&lt;br /&gt;&lt;br /&gt;For this I was using coLinux on my windows gaming machine. Which allows me to run Linux as a daemon process. But this grew tiresome as sometimes I like to turn off that beast since it is so loud. So at about midnight last night I decided I should just build a always on server. At first this seemed like it was destined for failure.&lt;br /&gt;&lt;br /&gt;I didn't have a spare network port on my router to even connect another computer. So I found extra network cards to plug into my always on server to use it as a router. Ok that problem solved, then I realized I didn't have a PC-PC network cables (crossover cables) and thought that would end my fun, but turns out modern NICs have auto-mdix which can flip one side to a router port instead of a normal computer port, thus fixing the problem.&lt;br /&gt;&lt;br /&gt;So I pull out my biggest baddest computer that is sitting around collecting dust, find out that I had given away the heat sink and didn't have any spares for it. Next computer... didn't have any RAM for it, same with the next two. I pull out the bottom of the bucket, a AMD Duron 800MHz, it is i686 so I can run Archlinux on it, but I couldn't find ram for it either... digging and digging though my parts box I finally found two sticks of SD-RAM, 32MB each.&lt;br /&gt;&lt;br /&gt;So I put all these parts together on my bed to test them, find they are all working including a rather iffy 8GB hard drive I found. I install Archlinux on it, get it all setup for headless running, power it off, remove the video card, and move to it's new home:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VdW3SLYWB44/SlzksCLwSrI/AAAAAAAAABc/xfR20GOB3W4/s1600-h/serversmall.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_VdW3SLYWB44/SlzksCLwSrI/AAAAAAAAABc/xfR20GOB3W4/s400/serversmall.JPG" alt="" id="BLOGGER_PHOTO_ID_5358409101815597746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yup, that's right, no case, here are some quotes about that:&lt;br /&gt;&lt;br /&gt;05:24:31 jelly12gen | Wraithan: woo it's bare boned&lt;br /&gt;05:25:59 tigrmesh | you were serious!  it really is just sitting on a shelf&lt;br /&gt;05:26:45 [F]LillianYIM | it's like all open air and such&lt;br /&gt;05:27:26 tigrmesh | it never occurred to me that a case is 'merely' an accessory&lt;br /&gt;05:49:06 DigitalKiwi | I hope that's not running like that &gt;.&gt;&lt;br /&gt;06:01:35 DigitalKiwi | well it could explode!&lt;br /&gt;&lt;br /&gt;I have a throttle on the fan making it near silent. overall this system should be REALLY low power making it ideal for an always on system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-8882843000313894160?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/8882843000313894160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/nerding-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8882843000313894160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/8882843000313894160'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/nerding-out.html' title='Nerding Out'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VdW3SLYWB44/SlzksCLwSrI/AAAAAAAAABc/xfR20GOB3W4/s72-c/serversmall.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3548273165051172931.post-9213619274815540468</id><published>2009-07-10T11:05:00.000-07:00</published><updated>2009-07-10T12:03:53.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='nerds'/><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><category scheme='http://www.blogger.com/atom/ns#' term='indie'/><title type='text'>Beta Software and Nerds.</title><content type='html'>Second post, maybe I will keep up with this.&lt;br /&gt;&lt;br /&gt;Beta software, something I use an above average amount of. In fact most applications I directly use on a regular basis are in alpha, beta, or release candidate state.&lt;br /&gt;&lt;br /&gt;Why you may ask? I like to be on the cutting edge, talk to my friends about how cool this new feature or having that bug fix really makes things better, and the speed, you wouldn't believe the speed of the new version!&lt;br /&gt;&lt;br /&gt;What I don't tell you is the 10 bugs in the new feature, the 3 resulting bugs from the bug fix, and how despite the runtime speed, it crashes so much it is the same, if not slower.&lt;br /&gt;&lt;br /&gt;Nerds tolerate a lot more problems with their software and hardware than the average person, if we find a bug we post something into the bug tracker, and/or we just deal with it, a small portion will look to see if they can fix the bug and maybe submit a patch, but an even smaller portion will actually be able to, and even then, the bug doesn't typically get fixed until the developer fixes it.&lt;br /&gt;&lt;br /&gt;Whereas your standard computer user will do one of three things should they encounter a problem with a piece of software. First is just give up and abandon the project, second would be to try to work around the problem and probably call their IT friend to see if they can help, or finally they just go find a different piece of software to use. This isn't the wrong way to go about things, but it certainly isn't the nerd way.&lt;br /&gt;&lt;br /&gt;Funny thing is, like the &lt;a href="http://questionablecontent.net/view.php?comic=126"&gt;indie movement&lt;/a&gt; where a band is only cool until you tell someone about it, using beta software is cool because we are an exclusive group that gets to see all the cool new features before you mundane stable version users do, but that doesn't stop us from insisting you should use the beta version, which is just sabotaging ourselves, since more will be using it and we will have to provide tech support on it.&lt;br /&gt;&lt;br /&gt;It reminds me of the &lt;a href="http://vladdolezal.com/blog/2008/the-real-reason-we-use-linux/"&gt;The REAL reason we use Linux&lt;/a&gt; especially number 2.&lt;br /&gt;&lt;br /&gt;It has taken me years to understand that most people don't share my love of technology. They may embrace the fact that they have to use it but they aren't interested in using things that may break, or digging deep into why it works. Even in workplaces with lots of computer nerds (like when I was programming or doing QA) I was still a minority, most of them used their computers as a tool to get a job done, not caring about the intricacies. It sucks at times, because when I discover something I think is really neat, I have almost no one to share with.&lt;br /&gt;&lt;br /&gt;Not sure if any of you guys have hobbies that you feel you can't share with your friends, but that is unfortunately the place a lot of us nerds get pushed into. We dive deeper into different technologies, have a great time doing it, then when one of our friends ask what we did last night, we simplify it down to &lt;i&gt;Played on my computer&lt;/i&gt;, or maybe for those friends who are a little more tech savvy, &lt;i&gt;I was programming&lt;/i&gt; (and maybe even share the project name). They may be kind and ask how that project is going, and you will again simplify greatly and say &lt;i&gt;Well&lt;/i&gt; or &lt;i&gt;There are a few problems.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-9213619274815540468?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/9213619274815540468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/07/beta-software-and-nerds.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/9213619274815540468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/9213619274815540468'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/07/beta-software-and-nerds.html' title='Beta Software and Nerds.'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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-3548273165051172931.post-2237644646610752804</id><published>2009-06-23T13:13:00.000-07:00</published><updated>2009-06-23T13:38:17.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synput'/><category scheme='http://www.blogger.com/atom/ns#' term='IRC'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='GTD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeMind'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='XMind'/><title type='text'>Giving it a go</title><content type='html'>Doubt many will follow this but sometimes I have observations about the world, software, and sometimes stuff only I think is funny or cool and I want to share those with some who may also enjoy it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Niall, Bailey, both of y'all said I should start a blog when I mentioned it so here I go:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have been paralyzing myself when writing larger than trivial software for a long time, since I first started reading about good design.  How you should modularize everything and abstract it so when one part changes another doesn't have to.  This fundamental part of programming is easy to comprehend, even non-techie friends can understand the basic premise of why &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;writing&lt;/span&gt; code so that you only have to change it in one place rather than dozens when adding/removing features is a good thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am in fact rather good at partitioning applications into managable parts. Where my flaw becomes very evident is the over-engineering of those individual parts. I have a hard time letting go of a module and calling it good enough for now. I finally break out of a module, get a good portion of work done on others, feel like I am on a roll then see a flaw in the design of a central module that may change its interface to other modules, therefor calling for a redesign of a lot of the code and pushing everything back.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently that application that is killing me is &lt;a href="http://wiki.github.com/wraithan/synput"&gt;synput&lt;/a&gt; my application that will make todoist available to me offline as well as creating a command line interface for it so I can quickly add things to it without disrupting what I am currently doing. All too often I think of things I would like to develop then when it comes time for me to choose a project to do, I draw a blank. This will hopefully fix that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In an effort to thwart this behavior I am trying out different mind mapping applications and deciding on some rules to get myself to a version 0.1.0 (first testing release) from which I can work on, change, and otherwise iterate over the application and not have the same guilt or problems I am running into, since as long as the application is usable and hasn't lost functionality I can just release a new version.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first application I tried was &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;FreeMind&lt;/a&gt; it has a very nice keyboard layout, allowing one to add ideas without having to really stop. I was loving it until I tried to drill down on one part of the thought process and just focus on it. Turns out this is not a needed feature by lots of people and I had to explain why I would even want it with detail on IRC. So I will also explain here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Drilling down is to take a part and focus on it removing all parts that aren't stemming from it. This way you get an uncluttered view where you can put notes about the part, add lots of detail and generally flesh it out without the distraction of the whole map being there. I need this because of the same reason why I am using this, I am easily distracted and if it is there for me to think about I will.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.kde.org.uk/apps/kdissert/"&gt;Kdissart&lt;/a&gt; was recommended to me, as I was asking in a linux channel, first problem is it is linux only, second is that it still didn't have the drilling down that I needed. So I immediately scrapped it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.xmind.net/"&gt;XMind&lt;/a&gt; was then mentioned in another IRC channel that I had asked. This piece of software is amazing. It has the intuitive key bindings like FreeMind had, a cleaner interface, the feature I needed, the ability to drill down on a idea and flesh it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have now begun mapping the software out so I have set goals for each part to do, once that part satisfies those goals, I will move on not to touch it until the next iteration over the software. I plan on taking notes during whenever I think of how I could improve other sections and just dumping them into a list to be fleshed out and sorted later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is much in the GTD way, which I hadn't thought of applying to software development but it seems to be what I need so I am going to give it a go.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3548273165051172931-2237644646610752804?l=blog.wraithan.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.wraithan.net/feeds/2237644646610752804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.wraithan.net/2009/06/giving-it-go.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2237644646610752804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3548273165051172931/posts/default/2237644646610752804'/><link rel='alternate' type='text/html' href='http://blog.wraithan.net/2009/06/giving-it-go.html' title='Giving it a go'/><author><name>Wraithan</name><uri>http://www.blogger.com/profile/02240170325331978729</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></feed>
