zanee is currently certified at Journeyer level.

Name: Christopher Warner
Member since: 2002-02-10 22:44:54
Last Login: 2015-07-30 17:33:40

FOAF RDF Share This


Notes: About


Articles Posted by zanee

Recent blog entries by zanee

Syndication: RSS 2.0

Haven't posted in a little while because i've been busy being a father, husband, contracts and other things. Recently i've been doing work with AWS and working at a company not directly free-software related however recently i've been working on an automated image build pipeline, where you can also kick off and manage images in a consistent way. As well as exposing an endpoint that can then be used with other internal applications. Pretty straight-forward non exciting stuff.

Today I came across this tech paper over at Google on automated image building with jenkins and kubernetes. This process is just overly convoluted and need not be for creating an automated image pipeline.

I'll provide a short synopsis of a better way to approach this problem and hopefully follow up with something a little bit more concrete when I get the chance to get my blog back up:

Realistically the problem with images at the end of the day is three-fold. One, it takes a very long time to provision a standard image, so you're dealing with time. Two, the image that has been provisioned eventually becomes stale meaning that the software associated with it needs security patches, bugfixes etc. Three, once you have more than 2 or 3 images, you need a lifecycle for managing the retiring, promoting, validating, testing and etc of images.

So your build process has to revolve around the lifecycle of whatever you need an image for. The best way to achieve this is to completely decouple the build process by itself and the best way to do that is to use a message broker. So you have a message broker, and in front of that you build a web client that is primarily used for publishing of what you'd like for your image and finally have the consumer processes sitting in the background getting ready to chew on the workflow of building an image.

There is obviously a lot more to it than this (what's in an image?, how do we manage these images? retire them? archive them? etc) and I'll hopefully get some time to expound on all of this as was done above. However the most anyone should have to care about are the steps involved in provisioning. Meaning "this is what I want installed on my image" or "this is what I want my image to look like". So in the above example it would be whatever the chef-solo steps involve. In my specific case i'm using ansible (because it's better than chef; yeahhhhh wanna fight?!). Then you don't want to poll github because, well.. why? Even if you wanted an image whenever there was a change in your repo it would be an inefficient way to handle building in a pipeline. What happens if you publish a very trivial change, do you do a full rebuild just because of it? No, you don't want to do that, so just use git webhooks. I'm not sure but it looks like Hashicorp's Atlas has a similar approach. Anyway, this with publishing a simple message to a broker and letting a consumer process do the work is a better approach. Especially because things will definitely fail in an image building pipeline, often enough that you simply need a way to handle this gracefully. All this combined with the fact that no one wants to sit around looking at build output of software installing makes for not a fun time.

So yeah, let me get my shit together and post a more simple approach you can do this with packer, rabbitmq, some python pub/consumer code, ansible and github webhooks (if you're using github). I'll do it with AWS and GCE.. I can't link to a repo because it's private unfortunately BUT the method itself can be disclosed.

Management Culture

Over the course of some odd years now, and in my own dealings I never really understood management. I mean, you always have a boss. Whether it be the board of trustees, share holders, your lawyer, the IRS, your husband/wife, Mom, squad leader, customers or some such. Inevitably you're always answering to someone for the decisions that you make on a daily basis and in that way I've always understood it. However to the extent that one has a boss that tells them to do xyz I never understood until now. It just simply never made sense to me.

I was always under the guise that one applied for a job and with that job came duties. So long as those duties were done, one was free to go about their business in whatever manner they felt necessary. This is how I've always operated, in almost all regard, feel free to ask any of my umpteen bosses. There may come a time where things change and so does the job and/or one moves to fit their needs of career growth or whatever one needs at the time. This always made perfect sense to me and in practice, this works. Trust me, I have learned, it simply works well when you hire the right people for the job. Unfortunately, I have seen many a person as of late take the context of management and put such a nasty and unhealthy spin on it that it's as if I am almost watching some episode of reality tv.  Expecting someone to pop-out at the end and say, "GOT YA!"

On recollection of my peers, friends, colleagues and how they used to ramble on about how horrible their job was I simply could not believe it. This has nothing to do with politics, passive aggressiveness, water cooler talk, all of that even in my own situations it was never really that bad. In the most sincerest form I always thought there were bits of embellishment in order to paint an entertaining picture. Now, that I'm in a different position and have almost a complete 360-degree view of the situation I can say there is a definite tone-deafness i've noticed through-out my career. Sadly this odd behavior is within my own ranks and sans any response from legal by the end of this I feel the need to speak on it, obviously no particulars.

I'm not sure what MBA's are learning in school right now, as I don't have an MBA myself and don't actually have any need for one, don't plan on getting one and think it's a worthless degree. Before the hate, please, I have several MBA degree family members. However, when it comes to managing people, persons who are hired to do a job there is an art that I feel has been lost. Part of this is just common courtesy. The whole, treat people as you'd like to be treated bit and the other part of this at its most basic form happens to be manners. An employee of a company needs to feel empowered to do their job in a way that is conducive to the overall productivity of the company which is respectful towards not just the job, but the company as a whole. This is called, good business. It promotes a positive energy and allows open door policies to work, it also quells incessant water cooler talk and allows for honest and open fighting about work. A good fight over work promotes ideas and healthy competition it also helps to cycle out poison. I particularly love a good heated argument every now and then over a problem, it shows passion and without passion, you have nothing. Probably get into some sort of heated discussion at least once a week, good for the blood pressure.

Anything opposite of this and that is called, bad business. When business is bad, it's bad for everyone and when it's bad for everyone it's bad for the bottom line and culture. As such, we wouldn't go into business to see bad bottom lines so reorganization is necessary and it involves placing the blame on poor management. Management is not about shoveling work to someone, or sitting on their shoulder to make sure they do it, or telling them how to do what it is you hired them to do. For myself, proper management has always involved letting the person you hired for the job... Do the job. Seeing strengths and making synergies that allow for delivery of product. Whatever they need to do the job, is what the role "management" calls for. Sometimes this is easy, sometimes it is not, especially if you feel the job isn't being done adequately or to your liking. Sometimes you have people problems (trust me, I have had these in such a way you would not believe). Sometimes the person just isn't the right cultural fit. Sometimes you have strong urges to meddle, or try to pitch in where you don't understand the underlying problem, but think you do. It is best to refrain at these points and leave it to the person you hired, to do it. If it's not getting done, that's a different yarn-ball. One can't fix everything and it is at that point, you respectfully let the person go with no hard feelings if it can be avoided.

If you're at the top of the food chain, sometimes it requires taking the pulse of your core and making sure it's protected from any bad business. The day-in, day-out core of your organization, company, squad, team or etc needs protecting and you should remove or polarize correctly those who practice any form of bad business. This is an old learned lesson presenting itself anew to me within these last couple of weeks and I plan to go ahead and do just that. Lets get back to the core tenets of good business, courtesy and respect for our peers, colleagues, employees and even at the end of the day our enemies.

Nooooo response but then again it's 11:53pm est... politely, fuck legal, this is my personal blog, had it way before anything else and I'm sure i've used much more explicit profanity laced delivery around these parts.. Posting.


Syndicated 2012-02-16 04:53:57 from Christopher Warner » Advogato

Cognitive Bias and The Mary Protocol

I have lots of questions

Everything you look for and all that you perceive has a way of proving whatever you believe.

Every now and then I am reminded of cognitive bias as presented by Kruger-Dunning in the paper Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments. As I have been active in the opensource community for close to 18 years now in some form or fashion the first lesson I learned is that if you have never done it before. You don't know. It's just that simple, and this lesson tends to stick with you with in almost every facet of life. It affects ones approach to problems such that every problem starts with one question. Quickly and summarily followed by a series of questions that need to be answered. My standard trajectory usually begins to branch off in a series of questions leaving me with few answers and even more questions to which I simply don't have the answer. Early on this led to a slight madness as I would start down some rabbit hole and end up working on some esoteric issue that affected a handful of people. In retrospect, I was young and dumb, back then I thought that so long as you plugged away at it. No matter how long it took you, you would be able to answer anything. Now that I'm slightly older, and know how dumb I still am and how valuable it is in choosing the right question, I am able to avoid madness. Of course, sometimes it will sneak up on me and I find myself doing something that makes absolutely no sense at all. This is obviously why we call it madness, but I'm much better at avoiding it or tolerating it depending on my needs or condition. I'm of the mindset that madness can't be cured, only managed.

Usually if I receive an email or a critique of work furnished that needs a sign-off, peer review or some such. I'm wholly open to it because my first assumption is that if I'm treading new or unfamiliar water then I obviously don't know what I am doing. Secondly, the more eyes the better. While treading familiar waters I am much less open to critique or suggestion unless I feel it will beneficial, primarily to avoid rabbit holes but also due to a lack of time. New variables mean risk and if there is no gain by adding the element of risk to something that has been tried and true. I'm unlikely to entertain or even respond to it. This is not necessarily always the case but largely this behavior I feel has strengthened my ability to stay focused on the right question and to avoid rabbit holes.

I think proponents and participants in opensource operate within the same vein and mindset for the most part. It's more of a behavioral mindset or lifestyle, propelled by the some itch, urge, quest to solve a given problem and find the right answer. Whether it be for fortune, fame, enjoyment or some other facet. You work the problem until you are tired and move on to some other problem whether it be in the same domain or somewhere else. Hopefully you were able to answer a question or two and because it's opensource inevitably someone at some point will continue finding answers to questions old or new.

I'd appreciate much more answers however

Lately though with my own interactions I feel as if this isn't the case, partly because I suspect their is a racial and gender tinge to cognitive bias that is ripe for exploration. This brought up in a couple of discussions on gender recently. Specifically in regards to women in opensource and generalizations of women by men in general. Before these discussions a couple of weeks earlier I had recently finished reading a post by Daniel Stenberg titled "Three out of one hundred" (which I recommend you read) so the conversation and ideas were fresh in my head. Also, I had a heated discussion about some work where I can only make the assumption that because of my skin color this person thought that somehow they knew better and would simply do the exact opposite of what I said. To be brutally honest, sometimes this works in my own favor, and to be blunt, I'm a capitalist and love money so cleaning up a mess may work out for me in monetary fashion. I mean, ignorance is costly, but let me be clear. Unlike agile salesmen, I try my best to offer clear and abrupt warning.

On the whole though the idea is that men on average will make the incorrect assumption that they are more capable at a technical subject than their female counterparts no matter how qualified they may be. Women having to deal with this their entire lives tend to see the bigger picture and avoid what they consider to be rabbit holes. As a woman I would ask why? Why even bother going down that route if every time I do someone is going to offer to second guess me? This coalesced quite nicely with another discussion I had on generalizing untrue statements as applied to women. So, let us take for example the statement, "all women are batshit insane" as clearly being a gross generalization. Amongst a group of men shooting the shit  it may be viewed as an off-cuff remark, in a mix of women, it will still be viewed as an off-cuff remark but it will be normally tolerated, at least to your face. However, this one statement in and of itself subtly reaffirms subconsciously that there must be some bit of truth to that statement. Thus, most women are indeed insane, maybe not batshit insane but a mild course of irrational behavior is expected. Of course this statement is simply ridiculous! I don't have the actual data to back any of this up and saying I believe it to be true isn't enough for an idiot, I realize. That aside, I am ashamed to admit that I am guilty of remarks like this myself. I've tried to rationalize the comments with "it's about context" but I can't qualify that as an "african-american" male. Is the statement "black people no jack shit about computers" any different? It's generalistic, and is again ridiculous but do we subconsciously hold onto these ridiculous generalist statements and again subconsciously use them to validate our own cognitive bias? Of course if that is actually the case there will be less women in opensource because all the men seem to think they are superior. Can you really blame someone that can't get a word in edgewise, everything they do is second guessed, or felt to be inferior? Doesn't sound fun to me at all, especially when you are paid less and have to doubly prove yourself answering harder questions. In short, fuck that noise. So of course, there will be less of any group that isn't already in the majority. Which means we have much less answers to our questions. This is unacceptable and we must try harder not just in our professional but personal lives as well.

The Mary Protocol

In response to my own behavior and to help me realize when I may be making a generalist statement that I may not consider hurtful, insulting or a turn-off to someone. I've implemented the Mary protocol. It's a simple procedure that will help me, help myself.

  1. The moment I may have said something and/or heard someone else say something that sounds ridiculous enough to either retract with an immediate apology or to pause the conversation with a "not cool". I will do so.
  2. I will not argue about my position beyond stating that i'm invoking something known as the Mary protocol to help myself from reinforcing my subconscious with nonsense and to allow for open discussion if the offending party would like to hear more.
  3. I will do my best to keep any proceeding conversation succinct and within reason.

The protocol is to be like a bit of a tase to correct my behavior. Not because I want to become some righteous feminist with a penis but because should I have a daughter someday I'm quite sure i'd take high offense to anyone calling her batshit insane, or treating her in inferior manner in anyway shape or form. So much so that I pray to never see it occur in my presence for the safety of the offending party. Off-cuff or not, it's not acceptable behavior and I will not continue it. It is my hope, that you do the same.


Syndicated 2011-12-15 19:49:38 from Christopher Warner » Advogato

Issue Department Detector for Roundup

Could find no samples for immediate team/department email on issue creation for Roundup. There used to be one that was shipped with it but that code is broken. Anyway, I needed it so I had to waste my morning writing it. The roundup api is a bit hairy but this example is simple. You’ll need to modify your tracker schema and it will send an email on creation of a ticket or issue to a specific department or team address. Obviously if you change the order or mapping you’ll need to update that in the detector code. Cheers!

  # Copyright (c) 2011 Christopher Warner - (
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#   The above copyright notice and this permission notice shall be included in
#   all copies or substantial portions of the Software.
from roundup.anypy.sets_ import set
from roundup import roundupdb, hyperdb

def deptissue(db, cl, nodeid, oldvalues):

    # get all message info
    create = cl.generateCreateNote(nodeid)
    dept_id = cl.get(nodeid, 'department')
    print dept_id

    # You have to know the id mapping
    #  technically we could find this

    if dept_id == '1':
        for msgid in cl.get(nodeid, 'messages'):
                print "Alerting Building Engineering Department"
                cl.send_message(nodeid, msgid, create, [''])
            except roundupdb.MessageSendError, message:
                raise roundupdb.DetectorError, message

    elif dept_id == '2':
        for msgid in cl.get(nodeid, 'messages'):
                print "Alerting Technology Department"
                cl.send_message(nodeid, msgid, create, ['Technology EMAIL ADDRESS HERE'])
            except roundupdb.MessageSendError, message:
                raise roundupdb.DetectorError, message

    elif dept_id == '3':
        for msgid in cl.get(nodeid, 'messages'):
                print "Alerting Research Department"
                cl.send_message(nodeid, msgid, create, ['RESEARCH EMAIL ADDRESS HERE'])
            except roundupdb.MessageSendError, message:
                raise roundupdb.DetectorError, message
        print "Department doesn't exist"

def init(db):
    # check on create of ticket
    db.issue.react('create', deptissue)


Syndicated 2011-07-21 17:19:48 from Christopher Warner » Advogato

Specification Pepsi Openindiana Build 148 – FAQ

I’m going to try in earnest to keep this post updated with relevant information about Specification Pepsi – Openindiana Build 148 as i’m now calling it.

  1. How much energy does the entire machine use?

    On initial boot with the Samsung Optical SH-223L/BEBS spinning up we hit 95 watts, the system then drops to about 50watts and as it idles out drops to between 47 and 48 watts. While pushing the machine using all 4 drives as stated in the spec, we fluctuate between 50 and 57 watts.
  2. Why the 750w ATX Power supply?

    Based on the above data the 750w would seem to be overkill but in my specific case I have multiple units plugged into the motherboard. If one doesn’t plan on adding more than 4-6 hard drives you could easily get away with a 200-250 watt power supply. I’m going to search around for one and update the original specification.
  3. Do you need to have the optical drive?

    Not necessarily, you could technically remove the optical drive after install of the specification if you wanted to save on initial start up power. However the unit spins up only on start-up and considering it will be rarely if ever used, it’s pretty much a complete non-issue.
  4. No ECC memory, will that be an issue?

    In the original specification I noted the addition of ECC memory. Well, the Intel D5x doesn’t support ECC memory most likely to save as much energy as possible. It also doesn’t support Dual Channel memory, again for the same reason. Not the biggest deal in the world for this machine as it’s primarily used for storage and technically speaking the likelyhood of getting severe degradation or errors are low. Still, it would of been a nice to have. To my knowledge I don’t know of any mini-itx motherboard manufacturers that support ECC memory. At least not yet.
  5. Instead of the D510, why not the D525?

    Well, if we take a quick look at a comparison between the D510 and the D525 we see that we gain a minute speed bump in processing and DDR3 instead of DDR2 and wattage remains unchanged. None of this quite frankly mattered to me at the time as the D510 was roughly $20.00 USD less. None of the stated improvements would significantly speed up the function of archival and storage. This obviously changes if you plan to do compression or encryption with ZFS in which case it may then become useful. In reality though it would make much more sense to apply that extra $20.00 USD to a proper gzip or encryption off-board card.
  6. How much will it cost you to operate this unit?

    I pay roughly 9 cents per kwh off the top of my head. I’ll have to update with exacts next time I check but based on that number we are looking at close to $3.05 USD per month with the machine running at an average of 0.47kw/h or roughly $37.00 USD a year. Not such a horrible price for the machine that backs up my lively hood. Not that bad at all.


Syndicated 2011-03-15 02:48:39 from Christopher Warner » Advogato

217 older entries...


zanee certified others as follows:

  • zanee certified Zaitcev as Master
  • zanee certified salmoni as Journeyer
  • zanee certified zx80user as Journeyer
  • zanee certified lerdsuwa as Journeyer
  • zanee certified Uraeus as Journeyer
  • zanee certified Akira as Master
  • zanee certified slamb as Journeyer
  • zanee certified nymia as Journeyer
  • zanee certified dwmw2 as Master
  • zanee certified company as Master
  • zanee certified rufius as Journeyer
  • zanee certified tampe as Apprentice
  • zanee certified gregheartsfield as Apprentice
  • zanee certified MAK as Apprentice
  • zanee certified poireau as Journeyer
  • zanee certified jstepien as Apprentice
  • zanee certified fabrice as Journeyer
  • zanee certified alexs as Journeyer
  • zanee certified murajov as Journeyer
  • zanee certified 8191 as Apprentice

Others have certified zanee as follows:

  • lerdsuwa certified zanee as Apprentice
  • elanthis certified zanee as Apprentice
  • zx80user certified zanee as Apprentice
  • slamb certified zanee as Apprentice
  • Uraeus certified zanee as Apprentice
  • Zaitcev certified zanee as Apprentice
  • salmoni certified zanee as Journeyer
  • Apeterson certified zanee as Apprentice
  • rufius certified zanee as Journeyer
  • murajov certified zanee as Journeyer
  • 8191 certified zanee as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page