<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Serious Business</title>
	<atom:link href="http://qr7.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://qr7.com</link>
	<description>nerd rage central</description>
	<lastBuildDate>Tue, 31 May 2011 09:14:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OHHHHKAY</title>
		<link>http://qr7.com/2011/05/ohhhhkay/</link>
		<comments>http://qr7.com/2011/05/ohhhhkay/#comments</comments>
		<pubDate>Tue, 31 May 2011 09:01:10 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=199</guid>
		<description><![CDATA[I'm alive.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m back. For real this time.</p>
<p>Quick up date: I work in NYC now building out <a title="lofty.com" href="http://lofty.com" target="_blank">lofty.com</a>. Life has been chaos as usual.</p>
<p>Coming up:</p>
<ul>
<li>updates to django-simple-history</li>
<li>will include adding the current user to a change</li>
<li>news about my new job @ lofty.com</li>
<li>have a lot of thoughts do dump about startups and python&#8217;s place in that world</li>
<li>a few tools to release (some are p. nifty)</li>
<li>new side projects starting up</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2011/05/ohhhhkay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>django-simple-history FTW!</title>
		<link>http://qr7.com/2010/10/django-simple-history-ftw/</link>
		<comments>http://qr7.com/2010/10/django-simple-history-ftw/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 06:18:26 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[django-simple-history]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=173</guid>
		<description><![CDATA[Eight months! Apparently that is the magic number when it comes to the amount of time it takes for me to talk about work I&#8217;ve done and get motivated to polish it up a bit. That said, lets talk about django-simple-history! One of my bigger projects at work is a monstrous django project that I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Eight months! Apparently that is the magic number when it comes to the amount of time it takes for me to talk about work I&#8217;ve done and get motivated to polish it up a bit. That said, lets talk about <a title="django-simple-history" href="https://bitbucket.org/q/django-simple-history/">django-simple-history</a>! One of my bigger projects at work is a monstrous django project that I&#8217;ve built from the ground up that does a bunch of enterprise type nitty-gritty (yay CRUD). At time of inception, one of the big feature requests was to have tracking of _all_ changes to the database. This request included needs for the following:</p>
<ul>
<li> change type (create, update, delete)</li>
<li> change time</li>
<li> change user</li>
</ul>
<p>I looked around and saw some basic implementations of different historical record attempts, including <a href="http://code.djangoproject.com/wiki/AuditTrail">AuditTrail</a> but had a requirement of needing models.OneToOneField &amp; models.ForeignKey fields to work (store that there was a relation and not fail on lookups). I had read about something similar in Marty Alchin&#8217;s <a href="http://prodjango.com/">Pro Django book</a> (highly recommend), so I dug that up and was sad to see that it also didn&#8217;t work with the relation fields. I reached out to Marty to see if he had a solution and it seemed that at the time he had not even thought about it too much past his initial work. I asked him if he&#8217;d be OK with me expanding upon his initial source and creating a project out of his work with changes to support the relation fields and he agreed. The one aspect that had to be left out for now is the tracking of the user who made the change. This _can_ be done. I do it with an extra field added to the history model. That said, hopefully soon I can release that code with a patch to django-simple-history so you can easily do this. For now please contact me for more details about tracking the current user making changes. That said, everything else was free game so I threw it all together and put it on bitbucket.</p>
<p>Thus <a href="https://bitbucket.org/q/django-simple-history">django-simple-history</a> was born.</p>
<p>I kinda threw the code up after i got it working and totally forgot about it. I&#8217;m sad to admit that I didn&#8217;t do it due diligence, even if I never planned to make it a package. That was until someone actually forked my code! *SHOCK* They had added a setup.py, so I pulled it in and expanded on it (it was pretty simple at first). Now there is a fully installable app with example code in the README and an actual package uploaded to make <a href="https://bitbucket.org/q/django-simple-history/downloads/simple_history-1.0.tar.gz">django-simple-history 1.0</a>!</p>
<p>Here&#8217;s the basic rundown on how you use it using the django tutorials Poll and Choice models (used django 1.2.3 for these tests):</p>
<pre class="brush: python; highlight: [1,2,8,9,16]; title: ; notranslate">from django.db import models
# import the HistoricalRecords model
from simple_history.models import HistoricalRecords

class Poll(models.Model):
    question = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')

    # create an instance of HistoricalRecords on any model you want to track
    history = HistoricalRecords()

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()

    history = HistoricalRecords()</pre>
<p>That&#8217;s it! Once you&#8217;ve done this, when you <code>$ ./manage.py syncdb</code> you will get the following:</p>
<pre class="brush: sql; highlight: [1,16]; title: ; notranslate">BEGIN;
CREATE TABLE &quot;test_historicalpoll&quot; (
    &quot;id&quot; integer NOT NULL,
    &quot;question&quot; varchar(200) NOT NULL,
    &quot;pub_date&quot; datetime NOT NULL,
    &quot;history_id&quot; integer NOT NULL PRIMARY KEY,
    &quot;history_date&quot; datetime NOT NULL,
    &quot;history_type&quot; varchar(1) NOT NULL
)
;
CREATE TABLE &quot;test_poll&quot; (
    &quot;id&quot; integer NOT NULL PRIMARY KEY,
    &quot;question&quot; varchar(200) NOT NULL,
    &quot;pub_date&quot; datetime NOT NULL
)
;
CREATE TABLE &quot;test_historicalchoice&quot; (
    &quot;id&quot; integer NOT NULL,
    &quot;poll_id&quot; integer,
    &quot;choice&quot; varchar(200) NOT NULL,
    &quot;votes&quot; integer NOT NULL,
    &quot;history_id&quot; integer NOT NULL PRIMARY KEY,
    &quot;history_date&quot; datetime NOT NULL,
    &quot;history_type&quot; varchar(1) NOT NULL
)
;
CREATE TABLE &quot;test_choice&quot; (
    &quot;id&quot; integer NOT NULL PRIMARY KEY,
    &quot;poll_id&quot; integer NOT NULL REFERENCES &quot;test_poll&quot; (&quot;id&quot;),
    &quot;choice&quot; varchar(200) NOT NULL,
    &quot;votes&quot; integer NOT NULL
)
;
CREATE INDEX &quot;test_historicalpoll_4a5fc416&quot; ON &quot;test_historicalpoll&quot; (&quot;id&quot;);
CREATE INDEX &quot;test_historicalchoice_4a5fc416&quot; ON &quot;test_historicalchoice&quot; (&quot;id&quot;);
CREATE INDEX &quot;test_historicalchoice_763e883&quot; ON &quot;test_historicalchoice&quot; (&quot;poll_id&quot;);
CREATE INDEX &quot;test_choice_763e883&quot; ON &quot;test_choice&quot; (&quot;poll_id&quot;);
COMMIT;</pre>
<p>* <code>test</code> was my app name for use in testing&#8230; poor choice.</p>
<p>The two historical db&#8217;s were created with the extra fields needed to track them historically:</p>
<ul>
<li>test_historicalpoll</li>
<li>test_historicalchoice</li>
</ul>
<p>Now to use, fire up the django shell <code>$ ./manage.py syncdb</code> and try this!</p>
<pre class="brush: python; highlight: [21,22,35,36,41,42]; title: ; notranslate">In [2]: from poll.models import Poll, Choice

In [3]: Poll.objects.all()
Out[3]: []

In [4]: import datetime

In [5]: p = Poll(question=&quot;what's up?&quot;, pub_date=datetime.datetime.now())

In [6]: p.save()

In [7]: p
Out[7]: &lt;Poll: Poll object&gt;

In [9]: p.history.all()
Out[9]: [&lt;HistoricalPoll: Poll object as of 2010-10-25 18:03:29.855689&gt;]

In [10]: p.pub_date = datetime.datetime(2007,4,1,0,0)

In [11]: p.save()

In [13]: p.history.all()
Out[13]: [&lt;HistoricalPoll: Poll object as of 2010-10-25 18:04:13.814128&gt;, &lt;HistoricalPoll: Poll object as of 2010-10-25 18:03:29.855689&gt;]

In [14]: p.choice_set.create(choice='Not Much', votes=0)
Out[14]: &lt;Choice: Choice object&gt;

In [15]: p.choice_set.create(choice='The sky', votes=0)
Out[15]: &lt;Choice: Choice object&gt;

In [16]: c = p.choice_set.create(choice='Just hacking again', votes=0)

In [17]: c.poll
Out[17]: &lt;Poll: Poll object&gt;

In [19]: c.history.all()
Out[19]: [&lt;HistoricalChoice: Choice object as of 2010-10-25 18:05:30.160595&gt;]

In [20]: Choice.history
Out[20]: &lt;simple_history.manager.HistoryManager object at 0x1cc4290&gt;

In [21]: Choice.history.all()
Out[21]: [&lt;HistoricalChoice: Choice object as of 2010-10-25 18:05:30.160595&gt;, &lt;HistoricalChoice: Choice object as of 2010-10-25 18:05:12.183340&gt;, &lt;HistoricalChoice: Choice object as of 2010-10-25 18:04:59.047351&gt;]</pre>
<p>The highlighted lines show how to access the history of each object:</p>
<ul>
<li> the first and second being the specific history of an instance (p &#8211; Poll, c &#8211; Choice)</li>
<li> the third is the history of an entire model (Choice)</li>
</ul>
<p>Please leave a comment if you have any questions about this, or drop a bug report on bitbucket. I&#8217;m open to suggestions and/or more help to fill out some of the other relational field types (ManyToMany).</p>
<p><strong>tl;dr &#8211; Use <a title="django-simple-history" href="https://bitbucket.org/q/django-simple-history/">django-simple-history</a>, it&#8217;s epic.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2010/10/django-simple-history-ftw/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>give me a vision to believe in&#8230;</title>
		<link>http://qr7.com/2010/10/give-me-a-vision-to-believe-in/</link>
		<comments>http://qr7.com/2010/10/give-me-a-vision-to-believe-in/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 04:29:06 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[career suicide]]></category>
		<category><![CDATA[fml]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[job hunt]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=162</guid>
		<description><![CDATA[Not wanting to be left out in the cold, I took Monday off along with all the other lucky souls who were giving it off to relax and enjoy some R&#038;R. Despite that, early on in the day I got pulled into helping a friend with some time critical work. The better part of my [...]]]></description>
			<content:encoded><![CDATA[<p>Not wanting to be left out in the cold, I took Monday off along with all the other lucky souls who were giving it off to relax and enjoy some R&#038;R. Despite that, early on in the day I got pulled into helping a friend with some time critical work. The better part of my afternoon and night was spent doing research and testing out different technologies that really sparked a fire in me. It brought me back to place I had almost forgot existed; where work becomes fun. It didn&#8217;t even matter that I wasn&#8217;t getting paid or that it was my day off, I truly enjoyed tackling the problem and planning out / implementing solutions. Throughout the day and even now the only thought in my head is &#8220;why cant I make that a career?&#8221;</p>
<p>When I think back to early 2009 when I put this site up, I remember how hopeful I was at the prospect of a fresh start in my career. I was spending my days happily coding away on whatever project I pleased producing really awesome tools and generally getting back to the roots of my love for all things tech. I cant remember a time when I was happier (or poorer). In my bliss I imagined that &#8216;this could be every day of my life&#8217;. Work with some really cool tech with the freedom to explore, learn, and succeed all on my own? Yes please.</p>
<p><em>Then the real world caught up with me.</em></p>
<p>It&#8217;s a shame how life works out sometimes, but we take it in stride and push forward. I&#8217;ve fallen into a job that had a lot of similarities to the last job I had, yet at the same time is still very different. The people I have the pleasure of working directly with are truly passionate about the work they do day in an day out. As refreshing as it was to see my coworkers seemly enjoy their work, it made me realize that my love for that type of task was quickly fading. Today, I can feel those times in the days when work becomes <em>work</em>. To be honest, I cant remember a day where the office gave off any sense of drive other than emergency issues which really just equates to enormous amounts of stress. I hear the comments like &#8220;you should find new problems to keep yourself interested&#8221; or &#8220;self motivation is key&#8221; and I just shake my head. &#8220;What world do they live in?&#8221; is all I can think in response. I have all the negatives of having someone above me in a management roll without any of those really important perks.</p>
<ul>
<li>Yes my hours are somewhat flexible.</li>
<li>No I cant spend a few hours to make system A instantly more useful.</li>
<li>Yes I&#8217;m not overly micro-manged.</li>
<li>No we cant just get something done, we need to play the office politics game and drag this out _years_.</li>
</ul>
<p>&#8220;Oh but ____ is shielding you from _____.&#8221;<br />
*rant* Really? Did I ask for that? Do I need that? I&#8217;m a big boy, I can handle myself. I don&#8217;t need you to speak for me. In most cases, <strong>I don&#8217;t want you to</strong>. How about you ask me what my thoughts on a subject are? How about we talk <em>at all</em>. In a year and a half, I&#8217;ve never really had a one on one with my manager. I&#8217;ve never really had more than a handful of three minute group discussions with them. I&#8217;m not an incapable human being; I can produce and clearly present well informed opinions and ideas. Please, if you must sit on that tier above me in the or chart and insist of directing my work, do me the kindness of talking to me. Thank you. */rant*</p>
<p>Every day is a constant reminder as to how unimportant we (the employees) are to my company. As I suspect it is with most companies, I generally feel that the higher-ups do not care one way or the other about anyone below them and to some extent I suspect many of them make the majority of their decisions based on how it helps them personally, not their people. My belief is that my current job is to develop tools and processes to make the lives of other employees easier so that they can work more effectively. If I do my job well everyone prospers all the way up the chain. I could do this in a number of places, but at this point I go into meetings (not that we have any) with suggestions that I&#8217;m already expecting to get shot down. It&#8217;s depressing and over the course of my tenure has inspired a level of cynicism that I didn&#8217;t know I was capable of.</p>
<p>I&#8217;m not oblivious to the fact that this is most likely what I can expect this from a lot of places. I believe our entire industry is plagued with poor or just outright bad management personnel and practices. I know I&#8217;m not alone in saying that there is a growing subdivision of young companies that are challenging the way the workplace looks and operates. I look and see these other companies; their team building events and employee benefits, their general &#8216;do good&#8217; attitudes and well meaning company visions that give their people a reason to want to go to work every day. They recognize that they&#8217;re asking someone to dedicate a part of their life for the companies success; in turn, if it works out they take care of their people. Everyone wants the company to succeed. It&#8217;s no longer &#8216;just a job&#8217;, it&#8217;s what they <em>want</em> to be doing every day.</p>
<p><strong>I want that.</strong></p>
<p>ps: if this post doesn&#8217;t say have &#8216;career suicide&#8217; stamped all over it, i don&#8217;t know what will.</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2010/10/give-me-a-vision-to-believe-in/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>here, take these django-piston decorators</title>
		<link>http://qr7.com/2010/01/here-take-these-django-piston-decorators/</link>
		<comments>http://qr7.com/2010/01/here-take-these-django-piston-decorators/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 01:35:49 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[django-piston]]></category>
		<category><![CDATA[foss]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=128</guid>
		<description><![CDATA[I&#8217;ve been using Jesper Noher&#8217;s django-piston project for some projects at work and home and I must say, I _really_ love it. Sadly, I don&#8217;t think the project gets as much credit as it should. If you&#8217;re looking to add REST to django, you really cant go wrong with piston. That said, as I started [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://noehr.org/">Jesper Noher&#8217;s</a> <a href="http://bitbucket.org/jespern/django-piston/">django-piston</a> project for some projects at work and home and I must say, I _really_ love it. Sadly, I don&#8217;t think the project gets as much credit as it should. If you&#8217;re looking to add REST to django, you really cant go wrong with piston.</p>
<p>That said, as I started to use it more and more, I hit some roadblocks that I had to come up with solutions to.</p>
<p><strong>TLDR;</strong> Checkout my additions to django-piston here <a href="http://hg.qr7.com/django-piston/">http://hg.qr7.com/django-piston/</a>.</p>
<p>The @validate decorator in piston.utils worked great for creating new objects (POST), but didn&#8217;t really work at all when trying to update models (PUT). I extended this function to accept a model reference and define which fields are passed in through the url for existing object lookup. Yea, thats not clear, lets throw together an example (figure out your own imports). ***I haven&#8217;t tested this at all&#8230; let me know if i screwed up somewhere.</p>
<p>The model (models.py:</p>
<pre class="brush: python; title: ; notranslate">class MyModel(models.Model):
    testfield = models.CharField(max_length=50, unique=True)</pre>
<p>And a form for validation (forms.py):</p>
<pre class="brush: python; title: ; notranslate">class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel</pre>
<p>Cant work without urls&#8217;s (urls.py):</p>
<pre class="brush: python; title: ; notranslate">basic_auth = HttpBasicAuthentication(realm='My Realm')
basic_mymodel = Resource(handler=MyModelHandler, authentication=basic_auth)
urlpatterns = patterns('',
    url(r'mymodel/$', basic_mymodel),
    url(r'mymodel/(?P&lt;testfield&gt;[^/]+)/$', basic_mymodel),
)</pre>
<p>Finally, the handler (handlers.py):</p>
<pre class="brush: python; highlight: [21,22,35,36]; title: ; notranslate">class MyModelHandler(BaseHandler):
    &quot;&quot;&quot;
    Authenticated entrypoint for MyModel entries.
    &quot;&quot;&quot;
    model = MyModel
    anonymous = 'AnonymousMyModelHandler'
    fields = ('testfield',)
    allowed_methods = ('GET', 'POST', 'PUT')

    def read(self, request, *args, **kwargs):
        base = self.model.objects.all()
        if args != () or kwargs != {}:
            try:
                return base.get(*args, **kwargs)
            except self.model.DoesNotExist:
                return rc.NOT_FOUND
            except self.model.MultipleObjectsReturned:
                return rc.BAD_REQUEST
        else:
            return base

    @no_params()
    @validate(MyModelForm, 'POST')
    def create(self, request, *args, **kwargs):
        if not hasattr(request, &quot;data&quot;):
            request.data = request.POST
        attrs = self.flatten_dict(request.data)
        try:
            mymodel = self.model(testfield=attrs['testfield'])
        except:
            return rc.BAD_REQUEST
        else:
            mymodel.save()
        return mymodel

    @essential(['testfield'])
    @validate(MyModelForm, 'PUT', ['testfield'], MyModel)
    def update(self, request, *args, **kwargs):
        if not hasattr(request, &quot;data&quot;):
            request.data = request.POST
        try:
            instance = self.queryset(request).get(fqdn=kwargs['mymodel'])
        except self.model.DoesNotExist:
            return rc.NOT_FOUND
        except self.model.MultipleObjectsReturned:
            return rc.BAD_REQUEST
        except:
            return rc.BAD_REQUEST
        attrs = self.flatten_dict(request.data)
        for k,v in attrs.iteritems():
            setattr(instance, k, v)

        instance.save()
        return instance</pre>
<p>As you can see on the highlighted lines, I&#8217;ve modified <code>@validate</code> to accept more params, and added the <code>@no_params</code> and <code>@essential</code> decorators. The three break down like this:</p>
<ul>
<li><code>@validate</code> now takes in an optional list of lookup fields, these should map to your urls.py as the inputs. In the example i have </li>
<li><code>@no_params</code> is used to ensure that no parameters have been passed in, in this example, I want only POST&#8217;s to <code>mymodel/</code> to be accepted for object creation. Without this, sometimes <code>@validate</code> will return weird errors that you I didn&#8217;t want the user to see. Doing the check in the actual <code>create</code>  function wouldn&#8217;t work because <code>@validate</code> wraps it first and takes precedence.</li>
<li><code>@essential</code> is used to ensure that the passed in list of parameters have been passed in to the request. In this case, <code>testfield</code> is essential for the existing object lookup (ok ok this is a bad example, I&#8217;m modifying a unique identifier, but thanks to django&#8217;s form validation, the new <code>testfield</code> should be checked for uniqueness as well!). Once we&#8217;ve ensured that <code>testfield</code> exists as a param, we can then validate against the form. I guess this is somewhat of a bad example, as the form will bitch that testfield is needed, but there are cases where the form bitches without any helpful information. I like having the option of presenting bad requests to users before the form displays errors. This serves that purpose very well.</li>
</ul>
<p>All of this work was pretty straight forward. I went ahead an forked django-piston and made my changes to utils.py. You can find it all here: <a href="http://hg.qr7.com/django-piston/">http://hg.qr7.com/django-piston/</a>. I&#8217;ve issued a pull request to trunk and hopefully some/all of these will get added with any hope. If not, there here if you find yourself bumping up against the same problems. I&#8217;d be interested in anyones thoughts/contributions on all of this. Please drop me an email, comment, or PM me on bitbucket/twitter/wherever.</p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2010/01/here-take-these-django-piston-decorators/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Take my money FreeBSD&#8230; plox?</title>
		<link>http://qr7.com/2009/10/take-my-money-freebsd/</link>
		<comments>http://qr7.com/2009/10/take-my-money-freebsd/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 06:41:35 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[OS]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[dbags]]></category>
		<category><![CDATA[elitist]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[lol]]></category>
		<category><![CDATA[neckbeards]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=121</guid>
		<description><![CDATA[A brief story about OSS foundations, money, and why I hope FreeBSD dies a quick death. Let me start by saying: every day I have to deal with FreeBSD. Through an unfortunate combination of circumstances, a co-worker has been blinded by the lies of FreeBSD and now swears by its superiority over other operating systems. [...]]]></description>
			<content:encoded><![CDATA[<p>A brief story about OSS foundations, money, and why I hope FreeBSD dies a quick death.</p>
<p>Let me start by saying: every day I have to deal with FreeBSD. Through an unfortunate combination of circumstances, a co-worker has been blinded by the lies of FreeBSD and now swears by its superiority over other operating systems. Thus most of our servers that have been installed by him in recent years run the shit. Since I started this has been the subject of many day-to-day jokes/jabs in our small part of the floor.</p>
<p>Don&#8217;t get me wrong here; I know FreeBSD works on servers. I know it works well. However, I think FreeBSD is about as useful on the desktop as any Linux distro is (&#8216;what a POS&#8217;). To this end, Gordon (a coworker) decided to surprise me with the following (which I only received after the fact):</p>
<blockquote><p>Gordon wrote:</p>
<p>Hello FreeBSD Foundation,</p>
<p>I would like to make two donations.  One from myself and one from a<br />
co-worker.  My donation isn&#8217;t a problem.  However, the one for my<br />
co-worker might be a problem.  The donation from the co-worker has<br />
to appear from him &#8212; but I would be paying for it.</p>
<p>(It&#8217;s a bit of a practical joke on my part.  The coworker doesn&#8217;t<br />
much care for FreeBSD.  He&#8217;s one of those filthy Debian users.  Seeing<br />
his name appear as a donor for FreeBSD would result in much comedy at work)</p>
<p>Can this be arranged?</p>
<p>Regards,</p>
<p>-Gordon</p></blockquote>
<p>Son of a bitch.</p>
<p>This f&#8217;n guy. Do you see what this  guy is doing to me? KILLING ME SLOWLY.</p>
<p>_Well_Fucking_Played_Gordon_</p>
<p>So this letter gets sent to deb@freebsdfoundation and board@freebsdfoundation. One would think that Gordon&#8217;s going to slay with this one, right? <strong>WRONG</strong>.</p>
<p>Instead of taking the free money, although slightly underhanded, in pretty good faith / kind gesture, the FreeBSD foundation replies to him with this:</p>
<blockquote><p>Dear Gordon,</p>
<p>Thank for your interest in making a donation to the foundation. I<br />
understand your intent on playing a practical joke on your co-worker.<br />
We all try to have a good sense of humor here. But, our donors list is<br />
extremely important to us. This is where we have a chance to acknowledge<br />
and show our appreciation to our donors. The names listed there are<br />
FreeBSD&#8217;s biggest advocates. And, BTW, we do have a policy that we only<br />
list the name as documented on the check or donation service.</p>
<p>I hope you understand why we can&#8217;t support you with your request.<br />
Thank you for your support of FreeBSD.</p>
<p>Sincerely,</p>
<p>Deb Goodkin<br />
Director of Operations<br />
The FreeBSD Foundation</p></blockquote>
<p>Wut?</p>
<p>Really?</p>
<p>_Really?_</p>
<p>Listen guys. FreeBSD isn&#8217;t so hot nowadays. When someone offers you money for your shitty work, take it. Take it and fucking run. Use it to get that stick shoved up your ass surgically removed. What if he was going to donate hundreds of dollars? You wont add 12 letters to a web page because someone might be butthurt if they found out the true story behind it? This is whats wrong with these shitty fucking OSS projects.</p>
<p>For future reference FreeBSD foundation: NO ONE GIVES A FUCK.</p>
<p>Idiots.</p>
<p>Anyway, I will be making a donation to some shitty OSS project other than the FreeBSD project and forwarding the receipt on to Deb in reply to her message in the near future. Thanks for the laughs.</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/10/take-my-money-freebsd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>new kitties</title>
		<link>http://qr7.com/2009/10/new-kitties/</link>
		<comments>http://qr7.com/2009/10/new-kitties/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 06:36:53 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[cattes]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=114</guid>
		<description><![CDATA[Check out my awesome new cattes! They are great]]></description>
			<content:encoded><![CDATA[<div id="attachment_113" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-113" title="kitties!" src="http://qr7.com/wp-content/uploads/2009/10/img2086gi-300x225.jpg" alt="skwisgaar and blitzkrieg" width="300" height="225" /><p class="wp-caption-text">skwisgaar and blitzkrieg</p></div>
<p>Check out my awesome new cattes! They are great</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/10/new-kitties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sometimes life crushes you</title>
		<link>http://qr7.com/2009/10/sometimes-life-crushes-you/</link>
		<comments>http://qr7.com/2009/10/sometimes-life-crushes-you/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 04:07:23 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[cattes]]></category>
		<category><![CDATA[fml]]></category>
		<category><![CDATA[fuck my life]]></category>
		<category><![CDATA[job]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=111</guid>
		<description><![CDATA[Yikes. It&#8217;s been almost 4 months since my last update; shit has changed. A lot. Job Soon after my last post, I took a job with an ISP as a developer in a fault monitoring / tools group. It wasn&#8217;t really what I was looking for was looking for when I left my last job, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Yikes</strong>. It&#8217;s been almost 4 months since my last update; shit has changed. A lot.</p>
<h3 style="text-align: center;">Job</h3>
<p>Soon after my last post, I took a job with an ISP as a developer in a fault monitoring / tools group. It wasn&#8217;t really what I was looking for was looking for when I left my last job, but as I had mentioned back in July, I needed a job. The job really breaks down like this: we are a small “go-to” team for all issues / tasks that come up. Tool development and maintenance / solutions provider / network monitoring / netcool administration / system rollouts and maintenance / firewall administration / network issues (BIG network) / and on top of all that throw in some security issues as well. You name it, we do it, for the most part. It’s pretty brutal day in / day out. This team doubled in size the week I joined if that gives any indication of the workload we’re facing.  Thankfully I’m working with guys who I can really respect on a technical level and generally enjoy the team dynamic we have going.</p>
<h3 style="text-align: center;">Projects</h3>
<p>With the job came the loss of the one thing I really didn’t want to give up: free time. My outside of work activities / energy has been cut to a sliver of what it was 4 months ago and I find myself constantly fighting to squeeze an extra hour out of every day wherever possible. The job has been real rough on all aspects of my life. There’s not a whole lot I can do about it right now, so I’m hoping things get better in this regard, or at the very least I’m trying to learn to unplug from work before I end up in the same state of mind I got into at my last job. At this point I’m not really sure how I feel about all of that though.</p>
<p>Work has somewhat stalled on a lot of the projects I was working on before I started the job. This is really something I’m trying to figure out how to work around. I put a lot of time and effort into a lot of things this past year and I’d really like to have the opportunity to finish / see through to completion at least a few of them. This is currently one of my main driving points and long term goal.</p>
<h3 style="text-align: center;">Summer</h3>
<p>This whole past summer came and went in flash. It was one disappointment after another it seems. I finally got my teeth fixed by the most incompetent dentist I’ve ever met (I swear he did more harm than good). Only now has it almost come to an end after 3 root canals (they fucked one up), two crowns, and 1 filling. Along with that headache, the only things I hold truly near and dear, my cattes (Pudge and Pipper), both got very sick this summer. My birthday came and went as I worked through it.  I finally had to say goodbye to one of my cats, Pudge, in what has to have been the hardest thing I’ve ever gone through. It put me in a real bad state of mind for a few weeks.  However, life continues on…</p>
<h3 style="text-align: center;">The Good</h3>
<p>On the plus, I’ve recently become the new owner of two kittens who are adorable. I’ve named them the most metal names I could come up with without offending everyone; Blitzkrieg (Blitz) and Skwisgaar (Skwis). I just signed a lease on a place to live for the next year out in Herndon. It’s a pretty big place to give the cats some room to roam and I’ll have it all to myself which will be nice for a change. I’ve also been doing some really great work on some projects at the office which have made me feel a little better. It’s something right?</p>
<p style="text-align: right;">Here’s hoping things get better.</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/10/sometimes-life-crushes-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>life. ick.</title>
		<link>http://qr7.com/2009/07/life-ick/</link>
		<comments>http://qr7.com/2009/07/life-ick/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 08:09:47 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[cattes]]></category>
		<category><![CDATA[fuck my life]]></category>
		<category><![CDATA[insurance]]></category>
		<category><![CDATA[job hunt]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=106</guid>
		<description><![CDATA[Went through all the effort to get this up, then realized it was hard to keep my focus on a blog when I was working on so many other cool things. That said, I figure its time for an update and hopefully more frequent ones from now on. My life has been slowly spiraling out [...]]]></description>
			<content:encoded><![CDATA[<p>Went through all the effort to get this up, then realized it was hard to keep my focus on a blog when I was working on so many other cool things. That said, I figure its time for an update and hopefully more frequent ones from now on.</p>
<p>My life has been slowly spiraling out of control this past month or so; both of my cattes got very ill, one of my teeth cracked pretty hardcore on a carrot and I have no dental insurance, and MD decided to totally fuck me on my car registrations and suspended it. My one skinny catte, Pipper, has kidney disease which requires this awful process of giving her fluids twice a week + other meds. The other catte (Pudge) got a clot in his front foot which led to xrays (which showed possible lung cancer) and an ultrasound of his heart (which is healthy). $1000 and 6 hours later we were told &#8216;good luck&#8217; and he is now on blood thinner meds and still needs to get checked out about his lungs. I love them to death and have had them since they where a few days old. I cannot imagine what it will be like to not have them around. This next year (if that) is going to be emotionally brutal.</p>
<p>All of this shit was all followed by a giant chunk of my tooth just cracking off on a Friday night eating  a carrot. Needless to say this pretty much puts me in a super shitty position of <em>having</em> to take a job simply to get dental insurance. I cannot afford to get it fixed any other way, and after two weeks of living with it, I&#8217;m starting to really freak out about it&#8230; wish things didn&#8217;t always cost so much money.</p>
<p>I&#8217;m still “funemployed” after being turned down for the only job I really wanted because of computer stuff I did a long time ago. Got back in touch with the jobs I turned down earlier this year and I&#8217;m now slowly working my way through the process of figuring out which one I&#8217;ll be happiest at. I just need to take one and get back on my feet. Hopefully it wont be so bad and I&#8217;ll enjoy the work I&#8217;m doing. It&#8217;s truly amazing to me that I cannot find a job doing security (it would appear that without a clearance this is impossible) or some awesome development position. At this point I figure i&#8217;ve got <em>something</em> good comming my way in the near future. Life cant possibly continue to shit on me after this, can it?  Wish me luck.</p>
<p>I&#8217;ve got a couple projects in the pipe that I&#8217;m going to talk about this week and maybe a presentation or two to give in the near future. Time will tell.</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/07/life-ick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOAR XBOX!!!</title>
		<link>http://qr7.com/2009/05/moar-xbox/</link>
		<comments>http://qr7.com/2009/05/moar-xbox/#comments</comments>
		<pubDate>Sun, 31 May 2009 08:48:13 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[360]]></category>
		<category><![CDATA[mods]]></category>
		<category><![CDATA[theft_of_service]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=100</guid>
		<description><![CDATA[Sadly, 5 of these are mine. HALP!]]></description>
			<content:encoded><![CDATA[<div id="attachment_99" class="wp-caption alignnone" style="width: 522px"><img class="size-full wp-image-99" title="10 xbox 360's awaiting my love" src="http://qr7.com/wp-content/uploads/2009/05/xbox360s.png" alt="xbox overload!" width="512" height="384" /><p class="wp-caption-text">xbox overload!</p></div>
<p>Sadly, 5 of these are mine. HALP!</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/05/moar-xbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xecuter Connectivity Kit 3 (ck3) &#8211; Drivers and Windows 2003</title>
		<link>http://qr7.com/2009/05/ck3-drivers-and-win-2k3/</link>
		<comments>http://qr7.com/2009/05/ck3-drivers-and-win-2k3/#comments</comments>
		<pubDate>Sun, 31 May 2009 08:29:12 +0000</pubDate>
		<dc:creator>q</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[toys]]></category>
		<category><![CDATA[xbox]]></category>
		<category><![CDATA[360]]></category>
		<category><![CDATA[ck3]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[mods]]></category>
		<category><![CDATA[windows 2003]]></category>

		<guid isPermaLink="false">http://qr7.com/?p=94</guid>
		<description><![CDATA[Maybe I&#8217;m the only one, but I&#8217;ve got spare box running 2k3 that I &#8216;fix&#8217; Xbox360&#8242;s with. Been doing it the old fashioned way for just about 3 years now (Should I be sad or happy about this?) but finally ran into a Lite-On drive that required a little extra help. So I buy a [...]]]></description>
			<content:encoded><![CDATA[<p>Maybe I&#8217;m the only one, but I&#8217;ve got spare box running 2k3 that I &#8216;fix&#8217; Xbox360&#8242;s with. Been doing it the old fashioned way for just about 3 years now (Should I be sad or happy about this?) but finally ran into a Lite-On drive that required a little extra help. So I buy a ck3 and run into a world of trouble getting windows 2003 to recognize this thing. A good hour of my life was wasted on failed attempts with the &#8216;official&#8217; drivers from Xecuter. This is more for those helplessly searching for answers. Eventually I got it; this should help you out.<span id="more-94"></span></p>
<p>Things pretty much went a little like this:</p>
<ul>
<li> Install official ck3 drivers.</li>
<li> Plug ck3 in.</li>
<li> Watch windows tell me it can&#8217;t find suitable drivers.</li>
<li> Attempt in vain to extract the drivers from the installer.</li>
<li> Attempt to track down / modify / force driver after install to work.</li>
<li> Hate everything.</li>
<li> Search the net for 0 answers.</li>
</ul>
<p>My current internet situation is&#8230; let&#8217;s just say it&#8217;s slow. Installing XP+patches+.Net (needed in this case) was just not an option. After some digging (aka: &#8216;the ck3 should show up as the COM3 port&#8217;), I realize the ck3&#8242;s just got a Prolific USB-&gt;serial adapter. Specifically the &#8216;drivers&#8217; are just a wrapper for the PL-2303 drivers.</p>
<p>So I head on over to Prolific&#8217;s <a title="Prolific" href="http://www.prolific.com.tw/" target="_blank">website</a> where I find the following: <a title="Updated Prolific drivers link for xecuter ck3 and windows 2003" href="http://www.prolific.com.tw/eng/downloads.asp?ID=31" target="_blank">Drivers</a> released 2009/04/21 that address an issue with the driver not working in windows 2003!</p>
<p>Once installed, upon plugging in the ck3, everything worked as intended! COM3 comes up, xbox gets &#8216;fixed&#8217; without a hitch, life can continue!</p>
<p>So if by some small chance you find yourself in this position, I hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://qr7.com/2009/05/ck3-drivers-and-win-2k3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

