<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Theory &amp; Logic</title><generator>Tumblr (3.0; @theoryandlogic)</generator><link>http://theoryandlogic.com/</link><item><title>How to Lose Friends and Alienate People</title><description>&lt;p&gt;Communication is complex. It requires more than just words to be truly effective. Intonation and inflection are completely lost in the translation to digital form and misunderstanding happens in their absence.&lt;/p&gt;

&lt;p&gt;I get more frustrated every day with the terse, cold nature of electronic discussion. I need a cleansing period. As of today, I am removing myself from all personal online interactions by going dark for the next month. I can&amp;#8217;t go 100% offline because I work remotely, so communicating with my coworkers will be the one exception.&lt;/p&gt;

&lt;p&gt;If you are weird enough to desire my presence, give me a call. Or just show up at my house.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/19795230035</link><guid>http://theoryandlogic.com/post/19795230035</guid><pubDate>Fri, 23 Mar 2012 16:36:00 -0400</pubDate></item><item><title>Armchair Activism and the Misconception of "Good Enough"</title><description>&lt;p&gt;Twitter has an immense ecosystem with incredible diversity. There are accounts for everything and for all types. Many people stick with a single theme and run with it. Comedians never break character; activists fight the good fight; others simply lament over or sing praises about their daily lives. It has helped launch fledgling businesses. It&amp;#8217;s been wielded as a powerful weapon against social and ethical injustices.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;To me, Twitter is a great outlet for satire. I&amp;#8217;m not a spokesperson for a company or in a position of authority or leadership so I don&amp;#8217;t censor myself. Rarely do I tweet about anything serious because those messages are almost universally ignored. Sometimes I&amp;#8217;m just making up for my unusually timid real-life personality. But most of the time I use it to be provocative and to learn about how my audience responds. My own social experiment.&lt;/p&gt;

&lt;p&gt;I have been very interested in the effects of social media on the efficacy of activism, and I&amp;#8217;m concerned that our improved ability to &lt;em&gt;talk&lt;/em&gt; about problems is replacing our reason to &lt;em&gt;do something about it&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;One cannot deny that the Arab Spring was aided in part by social networks like Twitter, but it was not tweets of solidarity alone that overthrew corrupt governments. People fought back in the streets and paid dearly, sometimes with their lives, to achieve the change they so deserved.&lt;/p&gt;

&lt;p&gt;The outcry against SOPA and PIPA helped dismantle legislation that would have stripped the Internet of the freedom that gave it life. Without a strong media backlash, the support of affected major corporations, and tens of thousands of letters to public officials, these bills may not have been overturned.&lt;/p&gt;

&lt;p&gt;The KONY 2012 campaign is just the latest. What will come of it?&lt;/p&gt;

&lt;p&gt;On the issue of women&amp;#8217;s rights, when companies use alienating stereotypes in their messages, a cacophony of angry voices is rightfully heard. It&amp;#8217;s even more maddening when it happens twice in the same week by two different companies, &lt;a href="http://storify.com/techladymafia/boston-api-jam-s-marketing-problem"&gt;Sqoot&lt;/a&gt; and &lt;a href="http://storify.com/charlesarthur/oh-hai-sexism"&gt;Geeklist&lt;/a&gt;, and in the same industry, no less. It should be &lt;em&gt;outright frightening&lt;/em&gt; because these incidents are just the tip of the iceberg.&lt;/p&gt;

&lt;p&gt;There has been an alarming increase in violations against women, from marketing done in poor taste to blatant rights violations. The response to these moral issues has increased as well, this week being a perfect example of such. Yet the problem still exists, and if anything, it&amp;#8217;s getting worse. Why?&lt;/p&gt;

&lt;p&gt;Women are under attack. They are being treated as second-class citizens by the very politicians they elected to represent them. Men and women &lt;em&gt;are&lt;/em&gt; different, yes, but only in physiological terms; we are all human and we deserve the same rights that every human can enjoy. For all the advancement of women&amp;#8217;s rights over the last 50 years, we are quickly slipping backwards.&lt;/p&gt;

&lt;p&gt;If men in male-dominated industries like technology want to encourage women to be involved, we need so much more than 140 characters. We must &lt;em&gt;do&lt;/em&gt; something about it.&lt;/p&gt;

&lt;p&gt;Gender inequality doesn&amp;#8217;t start in the workplace. It begins at birth, where societal pressure influences us into our respective gender roles. To combat this, we must create opportunities for women from the very start.  Where are the programming classes focused on young girls? Where is the Summer of Code for Women? &lt;em&gt;Armchair Activism is simply not enough&lt;/em&gt;.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/19795145072</link><guid>http://theoryandlogic.com/post/19795145072</guid><pubDate>Fri, 23 Mar 2012 16:34:00 -0400</pubDate></item><item><title>SOLID Principles for Operations</title><description>&lt;p&gt;SOLID is a mnemonic acronym for five basic principles of object-oriented design, originally coined by &amp;#8220;Uncle Bob&amp;#8221; Martin. &lt;a href="http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)"&gt;From Wikipedia&lt;/a&gt;: &amp;#8220;The principles when applied together intend to make it more likely that a programmer will create a system that is easy to maintain and extend over time.&amp;#8221; While SOLID is designed to help guide developers, these principles can be very much applied to operations as well.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;h3&gt;Single Responsibility (SRP)&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;A server should have only a single responsibility.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When first starting out, it&amp;#8217;s common practice to run web server, the app server, and the database server on a single host. While that may be an accepted practice for development (though, I would argue against it even then), your applications will become more complex in time and the tangled mess of servers will become a nightmare to administer.&lt;/p&gt;

&lt;p&gt;Each server should have a single purpose. By separating responsibilities, your servers are easier to care for, your metrics are easier to parse, your infrastructure audits go much more quickly, and service disruptions can be greatly minimized.&lt;/p&gt;

&lt;p&gt;Capacity planning is an absolute must for reducing infrastructure costs. Proper planning requires clear and well-defined metrics. Virtualize parts of your infrastructure where performance will not be degraded to minimize expenses.&lt;/p&gt;

&lt;h3&gt;Open/closed (OCP)&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Servers should be open for extension, but closed for modification.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once a server is provisioned, it should remain in the intended state until it is decommissioned. A server can be modified to correct errors, but adding new services or changing the functionality of a service means that a new server should be provisioned.&lt;/p&gt;

&lt;p&gt;Adding new services to a server breaks the closed nature of the system, consequently increasing complexity and the time it takes to recover from failure.&lt;/p&gt;

&lt;h3&gt;Liskov Substitution (LSP)&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Servers in an infrastructure should be replaceable with instances of similar types without altering the correctness of that infrastructure.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Servers are a disposable commodity. Never rely on providers to always have 100% uptime and never assume a server that exists today will be there tomorrow. Your application should not rely on a specific provider. It should not rely on a service that is only offered by one provider. Data that can&amp;#8217;t be recreated must be backed up in a vendor-independent manner.&lt;/p&gt;

&lt;p&gt;Knowledge should never be held by a single individual. The person responsible for a particular piece of infrastructure should document any and all information they have about it. Everyone on your team should be able to sub in for anyone else. They may not immediately know to resolve issues, but they should know where and how to find the necessary information.&lt;/p&gt;

&lt;h3&gt;Interface Segregation (ISP)&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Many client specific tools are better than one general purpose interface.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Give your infrastructure the UNIX Philosophy treatment. The tools you use should do one thing and do it well. Your configuration management tool should only manage configurations. Your server provisioning tool should only provision servers. Your metric collection tool should only collect metrics.&lt;/p&gt;

&lt;p&gt;Monolithic services force you to modify your processes to fit the service. Instead, use tools with single purposes and modify them to fit your processes.&lt;/p&gt;

&lt;h3&gt;Dependency Inversion (DIP)&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Depend upon abstractions. Do not depend upon concretions.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Having your developers worrying about the underlying infrastructure is a needless and potentially dangerous distraction. Developers should not concern themselves with how much storage or memory a given system has. That doesn&amp;#8217;t mean your developers should not understand or ignore the performance implications of their design decisions, but provisioning or configuring the systems they use should not be on their mind.&lt;/p&gt;

&lt;p&gt;Provide your developers with a platform upon which they may deploy their applications; be it Heroku, Cloud Foundry, or even something home-rolled. Implement a simple interface with which they can deploy their applications and make the deployment process across multiple languages and data stores as uniform as possible.&lt;/p&gt;

&lt;h2&gt;In Practice&lt;/h2&gt;

&lt;p&gt;In smaller organizations where cost is a much greater concern, following these principals does pose a greater challenge, but it is not impossible. Never assume your organization will always remain small. Growing will be so much easier in the long run.  Likewise, if you simply don&amp;#8217;t have enough time or people to implement one or more of these principles, make it a goal to work toward while focusing on the principals you can implement.&lt;/p&gt;

&lt;p&gt;Like all ideals, meeting them completely is hard. Our common goal shouldn&amp;#8217;t be &amp;#8220;good enough&amp;#8221;; we should shoot for the stars and sacrifice whenever we must.&lt;/p&gt;

&lt;hr&gt;&lt;h4&gt;CHANGELOG&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;2012/03/21 - Added "In Practice" section&lt;/code&gt;&lt;/p&gt;</description><link>http://theoryandlogic.com/post/19681565913</link><guid>http://theoryandlogic.com/post/19681565913</guid><pubDate>Wed, 21 Mar 2012 11:46:00 -0400</pubDate><category>devops sysadmin</category></item><item><title>The Time I Got Arrested</title><description>&lt;p&gt;It&amp;#8217;s the summer of 2001. The sun is burning hot in the midday sky, the grass a most beautiful emerald green, and I just found my first love. It is a brown 1983 Buick Regal sedan with bench seats, a vinyl top, AM &lt;em&gt;and&lt;/em&gt; FM radio, enough fake wood to re-panel a basement rec room, and shocks so &lt;strike&gt;worn&lt;/strike&gt; amazing you&amp;#8217;d have thought you were sailing a ship across a sea of clouds. In other words, this is one serious Chick Magnet.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;$200 cash and it&amp;#8217;s mine. What a deal! The person running the estate sale let slip that the dearly departed went to meet her maker in the front seat. Like I said: Chick. Magnet.&lt;/p&gt;

&lt;p&gt;Where was I? Right, getting arrested.&lt;/p&gt;

&lt;p&gt;I just turned 17. I had neither the mental faculty nor the legal authority to enter into sales contracts or other binding agreements with anyone. But this lady who now owned her grandmother&amp;#8217;s car didn&amp;#8217;t care. She just wants the garage cleared out and I am the one to help her do it. So without any official proof the car was legally obtained, she hands me the keys and sends me on my way. The lady promises me that this exchange is completely legitimate. Who am I to argue? I now possess a car.&lt;/p&gt;

&lt;p&gt;I drive away in a car that is not legally mine, with no license plate, no registration, and no insurance (and I forgot my driver&amp;#8217;s license, for good measure). To top it off, this car is also not technically road legal (we&amp;#8217;ll get to that part in a bit). But it doesn&amp;#8217;t matter. I just got my first taste of true freedom and I am hooked.&lt;/p&gt;

&lt;p&gt;I make the only decision a 17 year old with a car could make. I drive to my friend&amp;#8217;s house to show it off. 40 miles away. It&amp;#8217;s during this trip that I learn driving a car with no rear-view mirror is a ticket-worthy offense. It is during this trip that I also learn driving a car registered to a recently deceased person with none of the aforementioned paperwork bears a striking resemblance to what some people might refer to as &amp;#8220;Grand Theft Auto&amp;#8221; [&lt;em&gt;It is also where I learn never to accept legal advice from strangers -Ed.&lt;/em&gt;]&lt;/p&gt;

&lt;p&gt;This car isn&amp;#8217;t fast. Hell, this car can&amp;#8217;t even reach the highway speed limit. And I, still oblivious to the fact that I am committing several crimes, cruise along at a grandmother&amp;#8217;s pace down I-69. That is, until a state trooper with superhuman vision flags me down to notify me of the mirror issue. We pull onto the shoulder and the officer makes his way toward my car.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Surely, he wants to admire the beaded covers adorning these luxurious tweed-wrapped seats up close.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;He requests the usual &amp;#8220;license and registration&amp;#8221;, to which I reply &amp;#8220;Oh, yea, no&amp;#8230; I just, uh, got the car today so I, um, don&amp;#8217;t have any of that yet.&amp;#8221; Dearest reader, please take note: while correct, this is the Wrong Answer™ to that question.&lt;/p&gt;

&lt;p&gt;The officer excuses himself and walks back to his squad car. A minute barely had time to pass before he is back at my window, requesting that I &amp;#8220;step out of the car please&amp;#8221;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I knew it. He wants to experience these seats for himself. He&amp;#8217;s in for a treat.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Alas, this is where my story takes a turn. This officer of the law is not here to take in the fine American craftsmanship. He is here to place me in handcuffs and put me in the backseat of his cruiser. I am bewildered. He carefully explains every unlawful act I have just committed. Panic sets in. I feel cold steel pressing against my wrist bones. I sink down as far as I can, trying my best to ignore the pain and my inevitable outcome. He walks back to my car to search it further. I start imagining the former owner was a crime boss. &lt;em&gt;Was the estate sale just a front? Why did they want the car gone so fast? Did they use this car to transport narcotics and weapons? &lt;em&gt;It&amp;#8217;s only a matter of time before he finds everything.&lt;/em&gt;&lt;/em&gt; I sit up for a moment to see what fate has in store for me.&lt;/p&gt;

&lt;p&gt;I realize something. My girlfriend has been sitting in the passenger seat this whole time and the look on her face is hilarous. Having gone through every other possible emotional reaction, the only one I have left is laughter. So I laugh. Hard. I&amp;#8217;ve gotten myself into some seriously ridiculous situations, but this so far takes the cake. I see her laugh. Then the cop laughs.&lt;/p&gt;

&lt;p&gt;She corroborates my story. Finding nothing other than sheer stupidity, the officer releases me. We wait for the tow truck to haul away my brown beauty and the officer drives us to a gas station where I call my friend so his dad can pick us up. As the cop departs, he leaves me with wisdom I will never forget:&lt;/p&gt;

&lt;p&gt;&amp;#8220;Stupid people do stupid things. Smart people do stupid things only once.&amp;#8221;&lt;/p&gt;

&lt;p&gt;The concept is simple and uttered quite often. Learn from your mistakes. I sure made a lot of mistakes that day. I trusted a total stranger; I got myself handcuffed; I pissed off my mom in ways my older siblings could only dream of. Not repeating these things is a definite no-brainer.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/13221000061</link><guid>http://theoryandlogic.com/post/13221000061</guid><pubDate>Wed, 23 Nov 2011 16:52:00 -0500</pubDate></item><item><title>Confessions of an Awkward Penguin</title><description>&lt;p&gt;I have intense social anxiety.&lt;/p&gt;

&lt;p&gt;I feel extreme discomfort when I am in a situation where I may have to interact with other people: grocery shopping; driving in traffic; going to the movies; even talking on the phone. My heart races, my hands get sweaty, and my head starts pounding. I can do pretty well with people or places I have known for a long time, but I am awful with new people and new situations.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;If you know me personally, you are probably reading this right now, smirking and saying to yourself, &amp;#8220;yea, right.&amp;#8221;   Remember when we worked together and I didn&amp;#8217;t say a word to you for the first few months? You probably though I was a jerk or that I hated you because I&amp;#8217;d never speak or make eye contact. I&amp;#8217;m sorry about that. I did like you, I just couldn&amp;#8217;t figure out how to say it.  How about the time we worked retail together and you thought I was just avoiding work? Sorry about that, too. I was having panic attacks in the bathroom from all the customers.&lt;/p&gt;

&lt;p&gt;Have you ever tried calling me? I never pick up because I won&amp;#8217;t know what to say. Sent me a text? Even easier to pretend I didn&amp;#8217;t get it. If you invite me somewhere and I decline, it&amp;#8217;s not that I don&amp;#8217;t want to go (I really do), I just wouldn&amp;#8217;t know what to do once I got there.&lt;/p&gt;

&lt;p&gt;The fact that I work from home only serves to exacerbate the problem. I do leave the house (once a week) and I talk to friends (indirectly over Facebook or  Twitter).  At least I shower daily.&lt;/p&gt;

&lt;p&gt;I have no reason to act the way I do. I know I&amp;#8217;m awesome. I know other people think I&amp;#8217;m awesome. I am constantly reminded of all the people whose respect and admiration I have earned.&lt;/p&gt;

&lt;p&gt;So why, then, am I so afraid?&lt;/p&gt;

&lt;p&gt;I know that the only way I can fix this is by throwing my brain into a chokehold of anxiety until it cries &amp;#8220;uncle&amp;#8221;.  There are so many things I know I can accomplish, and I am holding myself back. I hope, by putting this out here for everyone to see, that it will be harder to find reasons to close myself off.&lt;/p&gt;

&lt;p&gt;The next time I give an excuse to not be social, call me out.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/7643447140</link><guid>http://theoryandlogic.com/post/7643447140</guid><pubDate>Fri, 15 Jul 2011 01:48:00 -0400</pubDate></item><item><title>The Ideal Monitoring Service</title><description>&lt;p&gt;The state of monitoring solutions has been on my mind for a while.  Today, the &lt;code&gt;#monitoringsucks&lt;/code&gt; hash tag became a trend on my local Twitter feed. I&amp;#8217;ve been working on &lt;a href="https://github.com/danryan/overwatch"&gt;my own monitoring app&lt;/a&gt; as of late, so I was inspired to put to words what my definition of the ideal solution should look like.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;h3&gt;It must be easy.&lt;/h3&gt;

&lt;p&gt;One of the bigger pain points of monitoring applications is configuration and deployment. Management systems like Puppet or Chef have made this easier, but it&amp;#8217;s still far from a perfect solution.&lt;/p&gt;

&lt;p&gt;Deployment should be a drop-in process. Plugins should be simple to write. The API should adhere to current best practices. The system itself should not use proprietary or esoteric pieces.&lt;/p&gt;

&lt;h3&gt;It must be extensible.&lt;/h3&gt;

&lt;p&gt;No two infrastructures are alike, and so the service that monitors yours should provide the freedom and the flexibility to instrument it as you see fit. The resources we want to instrument are different. Sometimes it&amp;#8217;s a server; other times it&amp;#8217;s an application. The system should make no assumptions.&lt;/p&gt;

&lt;h3&gt;It must be performant.&lt;/h3&gt;

&lt;p&gt;Monitoring is an incredibly critical component of a well-designed infrastructure. If a monitoring service cannot identify and alert us to problems rapidly, then it is of little use. The system must be able to keep up with any and all demand and be impeccably stable.&lt;/p&gt;

&lt;h3&gt;It must be useful.&lt;/h3&gt;

&lt;p&gt;The system should provide three distinct capabilities: the ability to observe, the ability to trend, and the ability to report. Metrics are a crucial part of being able to intelligently respond to an event. Trends help us discover weak spots that need fixing, or help us better plan capacity.&lt;/p&gt;

&lt;p&gt;Reports are the most critical part, as well as the part most in need of an overhaul. What happens when a service fails? Who or what gets notified? How do our other systems react? The system should not only provide the typical meatcloud notifications, but also provide ways to interact with other systems.&lt;/p&gt;

&lt;h3&gt;Talkback&lt;/h3&gt;

&lt;p&gt;What makes a monitoring app good in your eyes? What are current offerings lacking?&lt;/p&gt;</description><link>http://theoryandlogic.com/post/5890089120</link><guid>http://theoryandlogic.com/post/5890089120</guid><pubDate>Fri, 27 May 2011 01:21:00 -0400</pubDate></item><item><title>"Programming is a science dressed up as art, because most of us don’t understand the physics of..."</title><description>“Programming is a science dressed up as art, because most of us don’t understand the physics of software, and it’s rarely if ever taught. The physics of software is not algorithms, data structures, languages and abstractions. These are just tools we make, use, throw away. The real physics of software is the physics of people.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://zguide.zeromq.org/page:all"&gt;ZeroMQ documentation&lt;/a&gt;&lt;/em&gt;</description><link>http://theoryandlogic.com/post/4514891846</link><guid>http://theoryandlogic.com/post/4514891846</guid><pubDate>Sun, 10 Apr 2011 23:55:00 -0400</pubDate></item><item><title>Bash SSH Tunnel Wrapper</title><description>&lt;p&gt;I recently became the caretaker of a &lt;a href="http://opscode.com/chef"&gt;Chef server&lt;/a&gt; that sits behind a firewall, inaccessible to all but the nodes that require access. Even though it&amp;#8217;s locked down, I still need to be able to administer it.  My tool of choice is &lt;code&gt;knife&lt;/code&gt;, the command-line utility used to interact with Chef.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;I have SSH access to the box, so to use &lt;code&gt;knife&lt;/code&gt; I only have to create an SSH tunnel:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ssh -T -f -N -L 4000:localhost:4000 dryan@chef.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This works, but I don&amp;#8217;t really want to manually manage SSH tunnels. What I really want is a wrapper that 1) creates the tunnel 2) runs my command, and 3) closes the tunnel. So I wrote a bit of Bash to allow me to do just that:&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
function create_chef_tunnel() {
  cmd='ps -eo pid,args | egrep "[s]sh -T -f -N -L 4000:localhost" | cut -c1-6'
  if [ $? -eq 0 ]
  then
    echo "SSH tunnel exists"
    return
  else
    ssh -T -f -N -L 4000:localhost:4000 dryan@chef.example.com
  fi

}

function close_chef_tunnel() {
  cmd='ps -eo pid,args | egrep "[s]sh -T -f -N -L 4000:localhost" | cut -c1-6'
  pid=$(eval $cmd)
  kill -9 $pid
}

function chef_tunnel_wrapper() {
  create_chef_tunnel
  "$@"
  close_chef_tunnel
}

alias knife="chef_tunnel_wrapper knife"
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Surely, the above snippet could be made more re-usable. One could modify it to support specifying ports, hosts, usernames, etc, but I didn&amp;#8217;t need it for anything else just yet. I&amp;#8217;ll leave that as an exercise to the reader :)&lt;/p&gt;</description><link>http://theoryandlogic.com/post/3491144621</link><guid>http://theoryandlogic.com/post/3491144621</guid><pubDate>Thu, 24 Feb 2011 18:25:00 -0500</pubDate></item><item><title>Agile Book Development</title><description>&lt;p&gt;My wife is a writer.  She considers herself the &lt;em&gt;aspiring&lt;/em&gt; variety, but I disagree.  Anyone who can actually sit down and puts words to paper (digital or otherwise) is certainly a bonafide writer in my eyes.  Writing is hard - really hard, and I respect the hell out of anyone who tries their hand at it.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;I consider myself a developer, which is a different kind of writing altogether.  Both types of writing exercise the same creative and analytical parts of one&amp;#8217;s brain, but each has its own distinctly different approach to fleshing out an idea.&lt;/p&gt;

&lt;p&gt;Authors write in solitary, often in long winding stretches just to get words on the page; they focus on the bigger picture first and then come back to reorganize their thoughts; they keep their work to themselves until they deem the project complete.&lt;/p&gt;

&lt;p&gt;Practitioners of a style of programming called agile development team up together to solve difficult problems and learn from each other; they break up larger tasks into smaller, more manageable ones; they work on pieces of the bigger picture one week at a time; they release early and release often, and in the process they gain feedback and meaningful insight that enables them to better their work earlier on.&lt;/p&gt;

&lt;p&gt;Not all developers follow an Agile philosophy, but the ones that do are more focused, have less stress, and get better work done faster.&lt;/p&gt;

&lt;p&gt;Writers could learn a lot from this.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/1431247111</link><guid>http://theoryandlogic.com/post/1431247111</guid><pubDate>Fri, 29 Oct 2010 08:29:00 -0400</pubDate></item><item><title>"Never, ever, write in a vacuum. Show your work to people: friends, colleagues, reviewers. Check with..."</title><description>“Never, ever, write in a vacuum. Show your work to people: friends, colleagues, reviewers. Check with your publisher to see how they want to handle this, but get feedback early, and get it often.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/writing_a_book/index.html"&gt;Dave Thomas&lt;/a&gt;&lt;/em&gt;</description><link>http://theoryandlogic.com/post/1415480155</link><guid>http://theoryandlogic.com/post/1415480155</guid><pubDate>Wed, 27 Oct 2010 10:53:32 -0400</pubDate></item><item><title>Tiered support?  More like "tear'd" support.</title><description>&lt;p&gt;Tiered support is a methodology commonly practiced by any institution that proffers customer service.  When a customer calls in, they&amp;#8217;re connected to a tech who can offer basic advice.  If that tech cannot resolve the issue, the customer&amp;#8217;s call is transferred to the next tier of techs that know more than the last.  Rinse, repeat, until the customer is passed on to the tech that eventually solves the problem.&lt;/p&gt;

&lt;p&gt;This is a horrible practice, and I know you already agree with me.&lt;/p&gt;

&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;p&gt;Remember how quickly your issue was resolved the last time you called a company for support?  I didn&amp;#8217;t think so.  The first person you talk to is an unskilled, untrained, and woefully unqualified person who&amp;#8217;s reading verbatim from a manual written by someone who knows what they&amp;#8217;re doing; the someone you &lt;em&gt;wish&lt;/em&gt; you could be talking to.&lt;/p&gt;

&lt;h3&gt;Step 3 is Profit&lt;/h3&gt;

&lt;p&gt;So why do companies use this system?  It&amp;#8217;s cheap.  Hell, it&amp;#8217;s really cheap.  After all, they don&amp;#8217;t make money from troubleshooting your issues. They make money from you paying for a product.  Customer service is simply a business expense, and knowledgeable employees are expensive.&lt;/p&gt;

&lt;p&gt;To put it plainly: spending money on helping you does not make more money, and therefore is not worth it.&lt;/p&gt;

&lt;h3&gt;&amp;#8220;Did you try turning it off and on again?&amp;#8221;&lt;/h3&gt;

&lt;p&gt;Companies would rather spend their dollars on advertising or other things that can make sales.  Advertising will bring customers in, but it won&amp;#8217;t keep them.  Spend your dollars on things that will build meaningful, lasting relationships instead.&lt;/p&gt;

&lt;p&gt;Don&amp;#8217;t force them to navigate a byzantine menu.  Give them a person after a few rings instead of hold music.  Make sure that real person &lt;em&gt;can do what your customer is asking for in the first place&lt;/em&gt;.   They deserve it.&lt;/p&gt;

&lt;p&gt;Throw tiered support in the trash where it belongs and start treating your customers like people and not a line item.  Don&amp;#8217;t just say their &amp;#8220;call is important to us&amp;#8221; &amp;#8212; prove it.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/934579528</link><guid>http://theoryandlogic.com/post/934579528</guid><pubDate>Tue, 10 Aug 2010 21:18:00 -0400</pubDate></item><item><title>The secret to a successful business, happy employees and a prosperous future</title><description>&lt;p&gt;It&amp;#8217;s money.&lt;/p&gt;



&lt;p&gt;I know what you&amp;#8217;re thinking: &amp;#8220;Of course it&amp;#8217;s money.  Everyone likes money.&amp;#8221;  But it&amp;#8217;s more complex than that.  Just a wee bit more, not rocket-surgery complex.&lt;/p&gt;



&lt;p&gt;Say you start a business.  You make it far enough that you need people to do some of the work for you.  Great!  Now, there are two paths you can take, each with a wildly divergent outcome.&lt;/p&gt;



&lt;p&gt;&lt;!-- more --&gt;&lt;/p&gt;

&lt;h3&gt;More is Less&lt;/h3&gt;



&lt;p&gt;The first path is the easiest one, as well as the one most businesses take: pay a lot of people a little money.  You&amp;#8217;re in business to make money, not spend it, after all.  In your search for employees, you&amp;#8217;ll  find a lot of low-hanging fruit, though every once in a while you&amp;#8217;ll get a real gem who just enjoys doing the work.  At this point, there&amp;#8217;s still time to make things right.  Reward these people with more money and they&amp;#8217;ll continue to be happy.  Given the path you chose, however, I will assume you won&amp;#8217;t.&lt;/p&gt;



&lt;p&gt;Soon you have a company full of mediocrity, with a sprinkle of awesomeness to keep things from falling apart.  Eventually the awesome employees will realize that they work harder and do a better job than the mediocre ones, but they make roughly the same wage.  They start feeling disgruntled, then begin vocalizing their frustrations, and eventually whatever positive culture you had (if you had any) disintegrates when they jump ship.&lt;/p&gt;



&lt;p&gt;You&amp;#8217;ll still be able to get a rockstar here and there, sure, but now with the culture gone and even more mediocre people than before (that you had to hire because the previous rockstars left), they won&amp;#8217;t last long at all.  Rinse, repeat, until your staff is nothing but average or worse.&lt;/p&gt;



&lt;p&gt;Does that sound like a company you want to work for?  Does that sound like a company you want to do business with?  If you said &amp;#8220;yes&amp;#8221; to either of the previous questions, think about the last company you dealt with that really pissed you off - your cable or phone company, for example.  What made you upset about the interaction?  Keep your answer in the back of your brain and read through the first path again.  Odds are the company you had in mind decided to go down this road.&lt;/p&gt;



&lt;p&gt;The less money you spend on each person, the more people you can employ; more people means more man-hours; more man-hours means more work being performed; more work performed means more money&amp;#8230;right?&lt;/p&gt;



&lt;p&gt;I understand the formula for choosing this route. I&amp;#8217;m simply saying that it is inherently and irrevocably flawed. &lt;/p&gt;



&lt;h3&gt;Less &lt;em&gt;is&lt;/em&gt; More&lt;/h3&gt;

&lt;p&gt;&#13;&lt;/p&gt;

&lt;p&gt;The second path is the one less traveled, but only because it requires more capital than the first: pay a few people a lot of money.  You&amp;#8217;re still in business to make money, yes?  The most-skilled or talented person for the job will consistently surpass someone who is adequate, both in terms of quality and quantity.  An exceptionally skilled person is easily capable of performing the work volume of two to three average people.  &lt;/p&gt;



&lt;p&gt;And here&amp;#8217;s the kicker: you won&amp;#8217;t need to pay this person two to three times as much as a single mediocre employee.  &lt;/p&gt;



&lt;p&gt;So the initial higher cost of a exceptional employee pays off almost immediately. Really makes the first path seem like a dead end, doesn&amp;#8217;t it?  &lt;/p&gt;



&lt;p&gt;Let&amp;#8217;s recap this concept.  If you offer better wages, you will attract employees of a much higher caliber; if your employees are above average, their work will be of superior quality; better quality means more customers; more customers means more money for you; more money for you means you can continue the cycle, hiring more of those rockstars and making even more money.&lt;/p&gt;



&lt;h3&gt;Bring it Home&lt;/h3&gt;

&lt;p&gt;&#13;&lt;/p&gt;

&lt;p&gt;If you have any doubts at this point, remind yourself of why people have jobs in the first place.  We need money for food, money for shelter, money for things we need and things we want.  When you don&amp;#8217;t have enough money to get the things you want, you will be less happy.  When you don&amp;#8217;t have enough money to get the things you need, it will prove very difficult for you to be happy at all.&lt;/p&gt;



&lt;p&gt;The first path leads to either destruction or obscurity.  The second path leads to fast growth, prosperity, healthy and happy employees who give you their best.&lt;/p&gt;



&lt;p&gt;Which path will you take?&lt;/p&gt;</description><link>http://theoryandlogic.com/post/759875388</link><guid>http://theoryandlogic.com/post/759875388</guid><pubDate>Thu, 01 Jul 2010 22:39:00 -0400</pubDate></item><item><title>"Team spirit is for losers, financially speaking. It’s the glue that binds the losers together...."</title><description>“Team spirit is for losers, financially speaking. It’s the glue that binds the losers together. It’s the methodology employers use to shackle useful employees to their desks without having to pay them too much. While lives may depend on it in a few professions, like soldiering or firefighting, in commerce it acts as a subtle handicap and a brake to ambitious individuals. Which, in a way, is what it’s designed to do.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Felix Dennis, &lt;em&gt;How to Get Rich&lt;/em&gt;&lt;/em&gt;</description><link>http://theoryandlogic.com/post/596453879</link><guid>http://theoryandlogic.com/post/596453879</guid><pubDate>Thu, 13 May 2010 19:54:37 -0400</pubDate></item><item><title>Employees that are a challenge to keep are often the best kind of employee to have.</title><description>&lt;p&gt;Employees that are a challenge to keep are often the best kind of employee to have.&lt;/p&gt;</description><link>http://theoryandlogic.com/post/594728817</link><guid>http://theoryandlogic.com/post/594728817</guid><pubDate>Thu, 13 May 2010 04:10:13 -0400</pubDate></item></channel></rss>

