<?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>QuirkeyBlog</title>
	<atom:link href="http://www.quirkey.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.quirkey.com/blog</link>
	<description>A Developer with too little time.</description>
	<lastBuildDate>Fri, 06 May 2016 16:18:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.8</generator>
	<item>
		<title>New Adventures: Joining Agrilyst</title>
		<link>http://www.quirkey.com/blog/2016/05/06/new-adventures-joining-agrilyst/</link>
		<pubDate>Fri, 06 May 2016 16:18:18 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=743</guid>
		<description><![CDATA[A little over a month ago, I decided to move on from doing full-time consulting and take a new job: Excited to announce that today is my first day as VP of Eng at @agrilyst. Looking forward to building with this awesome product and team!&#8212; Aaron Quint (@aq) March 14, 2016 I actually love consulting [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A little over a month ago, I decided to move on from doing full-time consulting and take a new job:</p>

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Excited to announce that today is my first day as VP of Eng at <a href="https://twitter.com/agrilyst">@agrilyst</a>. Looking forward to building with this awesome product and team!</p>&mdash; Aaron Quint (@aq) <a href="https://twitter.com/aq/status/709435645886861312">March 14, 2016</a></blockquote>


<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<span id="more-743"></span>

<p>I actually love consulting and the work was going well. Finding clients was hard but I was lucky to have some stable gigs that I enjoyed. I liked being able to spread my expertise around multiple teams and get to learn and absorb a lot at once. I <em>didn't</em> like the ratio of work to meta-work. The amount of time I spent getting, keeping, and prospecting clients far outweighed the amount of time I got to spend working with them. I'm aware this is often the nature of the work, but it was just starting to get to me.</p>

<p>At the same time, I started to feel this yearning I hadn't felt in a couple years - the strong desire to <em>build</em>. I wanted to be a part of a small team again: have a big impact on a product, celebrate all the shipping, work with peers and mentor younger devs. I reached out to a bunch of friends and <a href="https://twitter.com/ceonyc">Charlie O'Donnel</a> introduced me to the co-founders of <a href="http://agrilyst.com">Agrilyst</a>.</p>

<p>I was immediately interested in Agrilyst because it checked a large number of boxes for the team I wanted to join:</p>

<ul>
<li>An industry that I am interested in, though knew little about: <em>Indoor Agriculture and Hydroponic Farming</em>.</li>
<li>A product that could have an impact on the physical world and had a reach beyond the internet: <em>Growers use the platform to manage and optimize their operations, leading to more cost and energy efficient crops</em>.</li>
<li>A plan to generate revenue: <em>The product is a SaaS that growers pay directly for</em>.</li>
<li>A good team: <em><a href="https://twitter.com/allisonkopf">Allison Kopf</a> (CEO) and Jason Camp (CTO) managed to build and grow the beta version by themselves and even <a href="http://techcrunch.com/2015/09/23/agrilyst-wins-techcrunch-disrupt-sf-2015/">win TechCrunch Disrupt</a> last year</em>.</li>
</ul>


<p>After talking to the team, it wasn't a hard decision. It's been a big transition for me but I'm loving it so far. I've had to go heads down and write code for the past couple weeks (something I haven't done for an extended period in a <em>long</em> time) and it's been <em>fun</em>. We've had to do some technical planning and we're proud to be <a href="http://mcfunley.com/choose-boring-technology">choosing a boring stack</a>. It's allowed us to get to a point where we're almost ready to release the real v1 of the product in the next few weeks. Any time that hasn't been spent writing code has been learning about the industry and visiting farms. I can tell you that indoor farming is an industry with amazing engineering feats and real innovation. It's incredible to see first hand.</p>

<p>When joining I was aware that my role wouldn't stay the same for very long (it never does, but especially not is such a small team). The heads-down coding is hopefully going to shift into leading a team in the very near future. <strong><a href="http://agrilyst.com/#careers">We're looking for a couple of strong people to join the team</a></strong> and help us continue to build and improve this awesome product. I'm looking to build a unified product team that encompasses design and development so that we can work closely together to ship beautiful and functional features. If you'd be interested in working with me or hearing more, contact me.</p>

<p>It's still early, but it's been a while since I've been this <em>excited</em> about work.</p>]]></content:encoded>
			</item>
		<item>
		<title>How to Think About Web App Performance: Start With a Square</title>
		<link>http://www.quirkey.com/blog/2016/03/01/how-to-think-about-web-app-performance-start-with-a-square/</link>
		<pubDate>Tue, 01 Mar 2016 18:01:21 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=736</guid>
		<description><![CDATA[Even though I've spent a lot of time in the backend, I'm a pretty visual person and when I think through technical concepts I often try to imagine them in 3D. Something like The Matrix, but William Gibson style. Reducing some of these complex topics to something representational sacrifices some of the outlying details to [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Even though I've spent a lot of time in the backend, I'm a pretty visual person and when I think through technical concepts I often try to imagine them in 3D. Something like The Matrix, but <a href="http://amzn.to/1LtMkZ4">William Gibson</a> style. Reducing some of these complex topics to something representational sacrifices some of the outlying details to make talking, reasoning, and teaching it easier.</p>

<span id="more-736"></span>

<p>I've been back working with some clients on optimizing the performance of their web applications and I've been revisiting this graphical way to explain how I think about this work. I first talked about this at RubyConf 2014:</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/qlS3yr1oncQ" frameborder="0" allowfullscreen></iframe>


<h3>Starting to treat your application as a square</h3>

<p>I like to think about applications as they sit in "server-land" as squares first, with user requests traveling through the layers top to bottom. This isn't unusual - we usually talk about these different parts of our stack as "layers". On top of this, I add another aspect - each request by a client (user) to the backend application traces a vertical line and that vertical line maps to a single "path" through this application. In Ruby on Rails (or pretty much any http server), this path maps to an <code>action</code>. That <code>action</code> might map to a long call tree that calls other <code>action</code>-like items but for the most part that path is repeatable, even if it crosses many services and looks more like a <a href="https://en.wikipedia.org/wiki/Desire_path"><em>desire path</em></a> than a paved one. The purpose is to collect and trace these common paths as <em>grouped</em> actions<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>.</p>

<p><img src="http://quirkey.com/skitch/rubyconf2014-20160301-124835.jpg" alt="Web Apps as a Square" width="100%"/></p>

<p>When I think about requests and layers this way, we can talk about the different type of work we do to optimize performance as <em>vertical</em> or <em>horizontal</em>. Vertical performance work optimizes paths by looking at key requests and trying to fix their problems. Horizontal performance work addresses full layer or services by improving, replacing, or upgrading the functional processes.</p>

<h3>Vertical Performance: Optimizing Requests</h3>

<p>With the proper monitoring (through logging or a third-party service), we should be able to get a good overview of the different paths that users are traveling through our application. In an ideal set up, we should get a clear sense of the most problematic actions. These aren't always the ones with the highest response time, rather theres usually a simple function to be applied which looks something like:</p>

<pre>95th Percentile Response Time 
x # of requests 
--------------------------------
 Made up number to sort by
</pre>

<p>If we sort that number by highest first, we get a decent sense of our "hitlist" - the requests that take up the most time in our backend that we should attack first.</p>

<p>When we peer into one of these vertical slices what we actually want to see first is a collection of user requests to this path and the timings across the different layers as percentiles. This gives us a good sense of what part of our stack these requests are spending time in (DB? Cache? Just code? External services?).</p>

<p>With these relative scales, the work becomes pounding on this slice until its vertically smaller and takes less time. I'll leave the details of this for another post, but the general idea is to create a harness to test the slowest version of this request in our development environment. From there we can use all the tools at our disposal to try to track down the individual problem aspects of this path and make them faster. Often this is removing parts of requests by deferring them into the background, putting them behind a cache, or just straight deleting code.</p>

<p>A job well done here will show an improvement across the site-wide response time. Thats not always the case, but an improvement of even just a few milliseconds to a path that is the #1 request by an order of magnitude can make an outsized difference.</p>

<p>One of my clients had a post-page load POST request that recorded metrics about the page for user-facing analytics. This request happened on almost every page and was easily the #1 request (in terms of numbers of requests). For simplicity sake lets say it was called 10K times an hour. Its 95th percentile response time was relatively fast compared to the rest of the application, 100ms. The "user dashboard" page for comparison was requested about 1K per hour and had a 95th response time of 500ms. Doing the simple math, the hitlist time for the dashboard is 500,000 (500 * 1000), while the metrics request was 1,000,000 (100 * 10000). Reducing the response time of the metrics request even by 10% creates a significant reduction in the overall time our server spends handling requests. In this case we realized there were some easy but impactful things to do. We actually didn't need to record metrics for <em>every</em> request (reducing the hourly count). We also pushed some of the calculations the action was doing into the background, cutting the response time in half.</p>

<h3>Horizontal Performance: Optimizing Infrastructure</h3>

<p>Horizontal work focuses on entire layers instead of individual requests. The work here is often infrastructure tasks instead of code. Different layers have different optimizations, but they mostly fall into similar categories. Upgrades to the processing power (hardware) can sometimes be the thing that solves the biggest performance problems. This often comes down to questions of money - bigger boxes require more dollars. If you can have some open conversations with your team (or yourself if it's a team of one) about the tradeoffs of spending time on piecemeal performance work vs buying new hardware, then occasionally you can just throw money at the problem and be done with it (for now at least).</p>

<p>This isn't always the case. Sometimes its not about the size of the box but its configuration, or even the way the layer is being used. An easy example would be a relational database with a poorly designed schema or missing indexes. The work here isn't fixing an individual request, but improving the performance of this layer horizontally across the square.</p>

<p>I've come across this a number of times: the database or caching layer was poorly configured and was queuing trying to handle too many simultaneous connections. Implementing connection pooling across the board improves the overall throughput and you see a noticeable drop in your overall metrics.</p>

<h3>You don't have to only choose one</h3>

<p>The goal here is not to pick a single angle and only focus on that, its to identify two distinct ways to think about web application performance. With the awareness of these different angles we can pick and choose which are the most pressing to work on and create rubrics for identifying the highest value work.</p>

<p>I'm interested to hear how other people think about and describe these different types of work. How do you approach the performance work in your app? Do you take specific repeated steps? Do you divide these different areas between different teams?</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:1">
<p>Most SaaS monitoring tools work this way (i.e. NewRelic, Skylight). Even most <em>logs</em> can be organized this way, its up to you to use a tool to collect, process, and sort them.<a href="#fnref:1" rev="footnote">&#8617;</a></p></li>
</ol>
</div>
]]></content:encoded>
			</item>
		<item>
		<title>Self-awareness</title>
		<link>http://www.quirkey.com/blog/2016/01/14/self-awareness/</link>
		<pubDate>Thu, 14 Jan 2016 17:53:51 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=731</guid>
		<description><![CDATA[I&#8217;ve been thinking a lot about the concept of self-awareness at home and as part of team. A month or so ago, I spoke at the last JSCONF about the wild n&#8217; crazy journey the past five years has been. In the talk, I sketched out a lot of the great things I learned from [&#8230;]]]></description>
				<content:encoded><![CDATA[	<p><p>I&#8217;ve been thinking a lot about the concept of self-awareness at home and as part of team. A month or so ago, I spoke at <a href="http://lastcall.jsconf.us/">the last <span class="caps">JSCONF</span></a> about the wild n&#8217; crazy journey the past five years has been. In the talk, I sketched out a lot of the great things I learned from reading about management and humans, specifically the highlighting book <a href="http://amzn.to/1Okk20U">Emotional Intelligence 2.0</a>. It seems I&#8217;m on a mission to get a lot of people to read it. It might appear corny and have a lot of drawn out content, but the basic ideas have stuck with me.</p><br />
<span id="more-731"></span></p>


	<p><p>Emotional Intelligence (EQ) breaks down into four quadrants, the starting point being self-awareness. Self-awareness (or the abesence of) is particularly interesting to me as I&#8217;ve always been someone who &#8220;wears their emotions on their sleeves&#8221;. This can be a really positive thing when I&#8217;m excited and passionate about something, but also can drag the people around me down into a burning inferno when I&#8217;m not. Being aware of the lack of self-awareness in myself and in the people around me put me on the path to improving.</p></p>

	<p><p>The book shows a bunch of case studies of all of the different aspects of EQ and you start to get a sense of the things that you or someone you know does that fit into these categories. Instead of trying to paraphrase, here are some <span class="caps">REAL WORLD</span> scenarios from the past couple of years.</p></p>

	<p><h3>Steam coming out my ears</h3></p>

	<p><p><em>&#8220;It&#8217;s a pretty straightforward plan&#8221;.</em></p></p>

	<p><p>I was trying to explain to my boss that we had to delay a bunch of new feature work and spend some time fixing some underlying problems instead. They seemed to be listening.</p></p>

	<p><p><em>&#8220;We have to just buckle down and fix X and Y no matter what or we&#8217;re not going to get anything done&#8221;</em></p></p>

	<p><p>&#8220;OK, makes sense&#8221;, they said.</p></p>

	<p><p>Forty-five minutes later, we were sitting in the conference room with the team that was about to get their plans changed. I introduced the general concepts, &#8220;We&#8217;re not going to do exactly what we thought, but we think this is a good plan&#8221; and then passed the baton to my boss. Instead of outlining the plan we just agreed on, they started outlining a completely <em>opposite plan</em>; one that completely negated the good faith I had carved out with the team and set them on a completely different course.</p></p>

	<p><p>The whole team looked at me, stunned. Only much later did I realize that I had steam coming out of my ears. I was controlled enough to not break into fisticuffs in the moment, but not self-aware enough to realize that everyone in the room knew <em>exactly</em> what I was thinking.</p></p>

	<p><p>A couple years later, confronted with a similar situation, but a new ability to tap into &#8220;what I&#8217;m actually feeling&#8221; I&#8217;m able to open my mouth and express my feelings in a constructive way. The end result isn&#8217;t perfect, but its 100000x better than the raw and clouded emotion that was making me want to flip tables.</p></p>

	<p><p>The point isn&#8217;t to <em>not be angry</em> &#8211; it&#8217;s about understanding the frustration and not letting it hurt the people around you. This is something I&#8217;m still working on every day (especially as the father of of a two year old) and I have a million other examples of ways I&#8217;ve hurt people, relationships, or work and remained unaware until it was too late.</p></p>

	<p><h2>We&#8217;re doing great</h2></p>

	<p><p>A couple of months ago I was approached by a developer who was part of a growing medium sized team. He had seen <a href="http://www.infoq.com/presentations/paperless-post-growth">a talk I gave about teams and growth (and the failures there of)</a> and was seeing some of the same problems I had faced. Specifically, there was a lot of churn and a lack of clarity around goals and how he, as a member of the team, could effectively contribute. He was excited about having me come in and give some advice or mentorship to the team, so we ended up sitting down with himself and the <span class="caps">CTO</span>. Immediately, I sensed something was off, he started drilling me as if I was applying for a developer job. When he asked &#8220;Well, what are you looking for?&#8221; I explained what my current work is, doing high level consulting for teams. I gently let them know that I heard that there was potential for me to bring my experience to bear in helping them grow, structure, and plan. The response was longer but can be summed up as &#8220;We&#8217;re doing great.&#8221; Instead of listing the problems that they had been having (as I had heard them from a team mate) I heard a rattling off of accomplishments of scale, etc.</p></p>

	<p><p>Personally, I wasn&#8217;t angry, though I <em>knew</em> I could help if given the chance. The clear lack of self-awareness as a leader translated into a lack of organizational awareness that could open them up for critical feedback and improvement.</p></p>

	<p><h3>How it&#8217;s effecting me today</h3></p>

	<p><p>These two cases seem unrelated but really stem from the same inability to reflect on our own emotions and behavior. The latter scenario has especially been on my mind lately, as I work to get <a href="http://quirkey.com/hireme/">my consulting business</a> off the ground. I&#8217;m lucky to have found and worked with some great clients so far, but I know I&#8217;m not doing as much as I could or reaching the companies that really need help. I&#8217;m sure part of it is marketing and &#8220;getting the word out&#8221;, but I&#8217;ve come to realize that my market is smaller than I previously thought.</p></p>

	<p><p><img src="https://cdn-images-1.medium.com/max/2000/1*qz5G56aEpA0h3c8SJ0vtyw.png" alt="self awareness venn diagram" width="100%"/></p></p>

	<p><p>If you think of it like a Venn diagram, you can see the problem. With the original and naive opinion that &#8220;There are a lot of companies that could use my help!&#8221; the market is <em>huge</em>. The problem is the second case above was not a single occurrence. The shortage of awareness in leadership is a giant blind spot that prevents me from getting in the door. I&#8217;d be a fool if I thought the only reason I don&#8217;t get hired is because the other people aren&#8217;t self-aware enough; Of course there are other reasons. However, the difference between the leaders of the teams I <em>have</em> gotten the chance to work with and those that are &#8220;doing great&#8221; is stark in terms of the awareness of their problems and the ability to get better by seeking help.</p></p>

	<p><p>I haven&#8217;t found a solution for this yet. Maybe if I just keep writing and pushing these books, some leaders will awake into self-awareness (picturing this like Neo waking up outside of the Matrix) and the middle of that diagram will grow.</p></p>
 ]]></content:encoded>
			</item>
		<item>
		<title>Some things I&#8217;ve learned from startup consulting</title>
		<link>http://www.quirkey.com/blog/2015/12/29/some-things-ive-learned-from-startup-consulting/</link>
		<pubDate>Tue, 29 Dec 2015 14:53:43 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Ranting]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=725</guid>
		<description><![CDATA[This is the second time in the past decade that I've stepped away from a full-time position and gone the route of being a lone wolf. This time, for the past 6 months, I've been working with a handful of different companies across the country to help them address the issues they're facing as growing [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This is the second time in the past decade that I've stepped away from a full-time position and gone the route of being a lone wolf. This time, for the past 6 months, I've been working with a handful of different companies across the country to help them address the issues they're facing as growing technical teams. This work has been extremely interesting and varied: I've been low-level, hands-on helping with performance problems to very high level, helping a small team figure out their work and hiring roadmap. I was able to share a lot of knowledge with all of these teams, but it's been rewarding to be able to learn a lot from them as well.</p>

<span id="more-725"></span>


<h3>We're all the same Special Snowflakes</h3>

<p>The first thing you experience being thrown into a number of different functioning teams, is that they all believe their problems are unique and they all have very different ways of solving them. Taking an outsider's perspective, you start to realize that while, yes, the large number of individuals and choices that led each organization to where they are today <em>are</em> unique, every modern engineering team suffers from a lot of the same symptoms. We can call these patterns or anti-patterns or commonalities, but the fact remains that when you have the opportunity to put these situations side by side, you see the same threads.</p>

<p>This shouldn't really be a surprise to anyone - the confounding part is that many people want to believe that they have it the worst (or the best) and refuse to look outside for help or even just compare notes with other people in similar positions.</p>

<p>I'm barely talking about technical problems here. We all blog and talk about the challenges of this language or framework and how we moved from x.js to y.go and from mono-services to micro-liths. We hear a lot <em>less</em> about all the problems of our personal infrastructure and how we plan (or don't) to refactor them. This is certainly in part because we have this strong belief that these problems are ours and ours alone and how could anyone benefit from conversation around it? I'll keep saying this until the day I quit tech for good, but your biggest problems are always going to be <em>people</em> problems and the only way you'll improve is by talking and listening to other people (historical or present).</p>

<p>As a consultant I'm able to gather <em>expertise</em> because I'm able to see, communicate, and act on these similarities between teams. If every team was a special snowflake and singular, then the work I do would be almost impossible.</p>

<h3>Everyone is swimming in Technical Debt</h3>

<p>A primary reason I've been called in is to help a team navigate and come up with a plan for addressing their technical debt. There's a general assumption amongst teams that technical debt is a product of "moving fast". While I don't disagree that this often exacerbates the situation, the buildup of "legacy", broken, and problematic code is just a fact of working on a long running project. If you have a reasonably successful product with a team thats grown and changed over time, there will be areas or whole repositories in your code base that people are afraid to touch, that emit a horrible odor, that "we don't talk about". I'm not saying this to complain - I'm saying this because <em>every</em> team has to deal with this. When you're tip-toeing around a codebase and cursing the state of things, it might be helpful to remember that despite the claims of other teams on the internet of their glistening and healthy code bases, they too have a bunch of dirty corners where they sweep things that they just don't talk about. Either you're swimming in technical debt or you're just too early or too unsuccessful to have accumulated it.</p>

<p>How teams manage this and continue to grow and even thrive is what I'm interested in. The challenge is not only around actually planning and implementing individual fixes, but addressing these in a functional and long term way. I've said it before but <a href="http://www.quirkey.com/blog/2013/12/05/the-big-rewrite/">big rewrites</a> are rarely the solution, so working in the scope of incremental changes, though harder to plan up front, is usually the only achievable solution. I've seen this work. It's not an overnight change, but with dedication and motivation, I've seen codebases shift.</p>

<h3>Technical Debt is easier to solve than distrustful workplaces</h3>

<p>The thing about technical debt, though, is often its rate of growth or stagnation is tied or exacerbated by other dysfunctions. It's one thing to have to put refactoring aside to just maintain the status quo as a user-base grows. It's an entirely other thing when wounds are taken for throw-away features, endless scope-creeps or clever developer tangents. These are all side-products of teams that are not on the same page about goals or teams where the balance of power and ownership is off-kilter.</p>

<p>In a vacuum, tackling mountains of bad code is challenging, but not impossible. You can see a solution and work your way to it. In the real harsh environment of Planet Startup, if you can't effectively communicate the need or the severity of the work that needs to be done, it will never happen. The test then is not the actual work of writing code, but the work of navigating the politics and demands of a growing team. Reminder: this isn't impossible, but it might not be the challenge that you set out to solve.</p>

<h3>Sometimes all you need is a spark</h3>

<p>In technical operations we often talk about "the probe effect", in which the tools you use to measure (performance, load, etc) often have a visible effect on the system they're measuring. I've noticed a similar effect when I'm working with a team - the act of taking the time to talk about and start to address some of the known issues makes a difference in-and-of-itself. I'd like to believe that my presence, guidance, and positive energy has something to do with it, too, but I can honestly say that a large part of making progress is just about making the <em>space</em> for progress. Working with an outside perspective that's only there for a limited time forces this and ideally lights a little fire under everyone to really start moving on some of the goals they want to achieve.</p>

<p>In all of these organizations, I've observed a lot of very talented people who are wholly capable of getting massive things done on their own being restricted by lack of time and clear direction. This is not a problem with an individual - it's an organizational problem, one that is common and takes a lot of work to actually solve. There <em>are</em> ways to get big wins with minimal effort, though: giving these ambitious individuals clear and achievable goals and the ownership and help to reach them goes a long way.</p>

<p>As a consultant I'm given a bunch of special powers of internal navigation and leeway that I wouldn't get as a full time employee. That has advantages for me, but it also speaks to how much more is possible when individuals are given trust and leverage to make change. I'm not suggesting you treat every employee as a consultant, but sometimes trying to look past the institutional weight of change can allow for the spark that people need to do greater things.</p>

<p><em>If you're interested in working with me or just want to talk more about this, you can email me at aaron@quirkey.com or <a href="http://quirkey.com/hireme/">find more information about the work I do</a>.</em></p>

<p><em><a href="https://medium.com/@aq/some-things-i-ve-learned-from-startup-consulting-154424576a12#.5zqq2zcej">Cross-posted at Medium</a></em></p>]]></content:encoded>
			</item>
		<item>
		<title>What I want to be when I grow up</title>
		<link>http://www.quirkey.com/blog/2015/12/16/what-i-want-to-be-when-i-grow-up/</link>
		<pubDate>Wed, 16 Dec 2015 04:05:45 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=720</guid>
		<description><![CDATA[A list of things I wanted to be when I grew up in no particular order.]]></description>
				<content:encoded><![CDATA[<p>A list of things I wanted to be when I grew up in no particular order:</p>

<ul>
<li>Astronaut</li>
<li>Hip Hop Producer</li>
<li>Restaurant Owner</li>
<li>Disney Imagineer</li>
<li>A Dad</li>
</ul>


<p>I keep coming back to this feeling that I don't know what I want to <em>be</em>. I'm probably deluding myself that I haven't grown up already. At least I'm a dad.</p>

<p>For the past 6 months, since I left my full time job, I haven't been doing nothing. In fact, I've been doing more different things than I have in a long time. I've been <a href="http://quirkey.com/hireme">doing high level consulting with a number of different and awesome startups</a>. I <a href="http://www.quirkey.com/blog/2015/12/13/catskills-conf-folks-in-the-woods/">helped run a conference</a>. I'm <a href="https://www.kickstarter.com/projects/980466739/the-pizza-book">authoring a book about pizza that's successfully been funded on Kickstarter</a>.</p>

<p>But what am I supposed to <em>be</em>?</p>

<p>For 6 years I had blinders on and I worked with a mission. Whether or not the mission was a real or meaningful one was irrelevant. I was aimed at a target and I was moving fast.</p>

<p>Now I'm missing that feeling - I've been recreating it with these individual and short term projects. Each feels good, but does it add up to a whole? Is it OK to be many things?</p>

<p><em>Area man seeks target.</em></p>

<p>I do know that I love working with people and building awesome things, so more of that please. Maybe what I want to be is just that - a Collaborator. And that's OK.</p>]]></content:encoded>
			</item>
		<item>
		<title>Catskills Conf: Folks in the woods</title>
		<link>http://www.quirkey.com/blog/2015/12/13/catskills-conf-folks-in-the-woods/</link>
		<pubDate>Sun, 13 Dec 2015 12:23:16 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Conferences]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=701</guid>
		<description><![CDATA[At the end of October I spent the weekend at the Ashokan Center, about 30 minutes from my house in Kingston, running a conference for the first time. To say it was a fun time would be the understatement of the year. It&#8217;s taken more than a few weeks to process it all. What we [&#8230;]]]></description>
				<content:encoded><![CDATA[	<p><img src="http://www.quirkey.com/blog/wp-content/uploads/2015/12/21873899524_77ab4b7296_k.jpg" alt="Catskills Conf" width="100%" class="alignnone size-full wp-image-708"></p>

	<p>At the end of October I spent the weekend at the Ashokan Center, about 30 minutes from my house in Kingston, running a conference for the first time. To say it was a fun time would be the understatement of the year. It&#8217;s taken more than a few weeks to process it all.</p>

	<p><span id="more-701"></span><br />
<h3>What we set out to do</h3><br />
Some time last spring, I had lunch with my new friend in Kingston, <a href="https://twitter.com/kalekaposhilin">Kale Kaposhilin</a>. We talked about a lot of different ideas and projects and quickly realized that we both had this strong feeling that things we&#8217;re <em>happening</em> here in Kingston and the Hudson Valley at large. The question was: How do we take this excitement and momentum and build on it? How do we amplify it beyond our area? We both had come to a similar conclusion: let&#8217;s run a tech conference.</p>

	<p>We knew immediately that <a href="http://catskillsconf.com/">Catskills Conf</a> [Note: Kale wanted to call it CatskillZ] couldn&#8217;t be like other tech conferences &#8211; we would not only have talks and showcase awesome people and their stories, but we would have to try to integrate the unique combination of themes that we feel the Hudson Valley is about. For us this meant: Art, Music, Food, Nature, and Community. Kale immediately zeroed in on the Ashokan Center as the venue and plans quickly started to form around it. We roped in the other organizers of the <a href="http://twitter.com/hv_tech">Hudson Valley Tech Meetup</a> &#8211; <a href="https://twitter.com/dafstone">Dan Stone</a> and <a href="https://twitter.com/schutzsmith">Dan</a> and <a href="http://digitalempire.io/">Sabrina Schutzsmith</a> &#8211; and we were off.</p>

	<p>I leaned heavily on some friends who had run conferences that I was inspired by, specifically <a href="http://twitter.com/paulca">Paul Campell</a> and <a href="http://twitter.com/mikeal">Mikeal Rogers</a>. They had a ton of infinitely useful advice and a lot of warnings about how crazy running a conference is (especially the first year). Newsflash: They were right!</p>

	<p>We aimed to create a program that was packed to the brim with inspiration and fun. I was convinced that if we collected as many brilliant and diverse people that we could into a wooded area and fed and entertained them, it would be an amazing time.<br />
<h3>What we accomplished</h3><br />
With a very sparsely detailed website and word of mouth we were able to get more than 100 people to participate in the weekend &#8211; a majority of them staying on-site the entire time.</p>

	<p><img src="http://www.quirkey.com/blog/wp-content/uploads/2015/12/22309727290_a189e3c5b5_k.jpg" alt="Foraging" width="100%" class="alignnone size-full wp-image-705"></p>

	<p>We had 15 talks that awed and inspired, with topics ranging from startups, to teaching and community, to the areas where art and technology meet. We had everyone engaged in the Saturday activities, including Foraging, a Wearables workshop, Cider-Making, Blacksmithing, Ukulele, Book Binding, and Flying Drones! We had endless flowing drinks from <a href="http://www.immune-schein.com/">ImmuneSchein</a>, <a href="http://www.keeganales.com/">Keegan Ales</a>, and <a href="http://www.awestruckciders.com/">Awestruck Ciders</a>. We had a live hog butchery demo from <a href="https://www.fleishers.com/">Fleisher&#8217;s</a>. We had live music from <a href="http://www.mikeandruthy.com/">Mike & Ruthy</a>, <a href="https://monogold.bandcamp.com/">Monogold</a>, and <a href="http://adrienreju.com/">Adrien Reju</a>. We had <a href="http://twitter.com/songadaymann">Jonathan Mann</a> write us a <a href="https://www.youtube.com/watch?v=sTCStkcvg2g">song for each day</a>. We had bonfires. We had square-dancing. We had Canadians camping in the rain. We had a mother-f&#8217;ing Birds of Prey show.</p>

	<p><img src="http://www.quirkey.com/blog/wp-content/uploads/2015/12/1-iCdsZ7iBxSWzoOvWM_dPbg-1.jpeg" alt="Birds of Prey" width="100%" class="alignnone size-full wp-image-710"></p>

	<p>Most of all, I think we all had fun. I went into the weekend, worried that I was going to be so overwhelmed with the organizing and running around that I wouldn&#8217;t be able to enjoy myself. While I did do a lot of running around (My health tracker counted 12 miles for the weekend) I was still able to catch up with a ton of the attendees and speakers, spend some time listening to the great music, and hanging by the fire.<br />
<h3>What didn&#8217;t work so well</h3><br />
Based on advice and the way things were going in the weeks leading up to the event, I approached the weekend with the feeling that this was going to have to be a good first draft of a conference. We didn&#8217;t sell quite as many tickets as we wanted. Even though we had a couple awesome sponsors (Thank you <a href="http://etsy.com">Etsy</a>, <a href="http://ulsterforbusiness.com">Ulster County Economic Development</a>, <a href="http://att.com">AT&T</a>, and <a href="http://tentrr.com">Tentrr</a>!) it was <em>really</em> difficult to convince companies and organizations to bet on this very weird and unknown event. The week of the conf was an insane race to the finish line, getting all the details, people, and swag in place.</p>

	<p>Registration was a total mess. A huge group of attendees arrived at once on a bus from <span class="caps">NYC</span> and we were not fully prepared to handle them and get them all to their rooms. We had some great volunteers, but we did not have a lot of time to train and set them on tasks.</p>

	<p>The rooms were mostly shared bunk style, and one thing we didn&#8217;t really think about was what that meant for different sleeping styles. The unfortunate biggest piece of negative feedback from our post-conference survey was that people snored. Loudly! This made a lot of people sleepless throughout the weekend.</p>

	<p>Another big point of negative feedback was that we packed the schedule too tight. Having only 48 hours and our boundless excitement, we invited everyone that we admired and that would take us seriously to participate, and that turned into a pretty non-stop weekend of activities.</p>

	<p>Finally, we really set out to make this as inclusive an event as we possibly could. We set up Diversity and Student scholarships and looked to raise money to bring people to the event. We wanted to give as many people as possible a chance to attend. We had 27 people apply for the scholarships and every one would have been an awesome addition to the weekend. Unfortunately, despite a lot of talks with a lot of companies and individuals, no one stepped up to sponsor. This was a bummer, but we felt that we had made some promises, so instead of just closing up shop, we took money out of our budget for 11 scholarships. The worst part about this was the last minute nature of telling some of the applicants that we didn&#8217;t have the funds. In terms of speakers, I was happy that we were able to feature a gender-diverse group of talented folk, but I know we&#8217;ll be able to do better next year.<br />
<h3>Next Year</h3><br />
<img src="http://www.quirkey.com/blog/wp-content/uploads/2015/12/1-qM6e2FChhpW-uxgIXXDOzQ.jpeg" alt="By The Fire" width="100%" class="alignnone size-full wp-image-709"></p>

	<p>And that&#8217;s the point, really &#8211; there <em>will</em> be a next year. The week after the event we got together as organizers and started the discussion of how we can make next year even better. We don&#8217;t have perfect solutions for all the problems, but we <em>do</em> think that we can approach each with gusto. Working on Catskills Conf was one of the best things I&#8217;ve done in a long time. I&#8217;m proud that we were able to create a unique experience that felt familial and unpretentious from the get go. Over 3 days, we all became just a bunch of friends, having fun in the woods.</p>

	<p><em>Catskills Conf 2016 will be held at the Ashokan Center Oct 21-23, 2016. If you&#8217;re interested in being a part of next years event, <a href="http://www.catskillsconf.com">sign up for our mailing list</a> or email us at hello at catskillsconf dot com.</em></p>

	<p><em>If you want to read some more perspectives on Catskills Conf: <a href="http://www.stridenyc.com/blog/conference-in-the-catskills/">Amanda Kivet</a>, <a href="http://www.babinec.com/2015/10/catskillsconf_mashup_brings_people_together/">Martin Babinec</a>, <a href="https://cestlaz.github.io/2015/10/29/catskills-2015.html#.VmuVXOMrIUE">Mike Zamansky</a>, <a href="http://www.watershedpost.com/2015/coders-comes-camp-catskills-tech-conference">Watershed Post</a>. And <b>definitely</b> check out <a href="https://medium.com/@danieleagee/more-space-at-catskills-conf-2015-3752e9843ea8#.czik2849d">Daniel Fitzgerald&#8217;s blog post and photography project &#8220;More Space&#8221;</a>.</em></p>
 ]]></content:encoded>
			</item>
		<item>
		<title>Finding Balance</title>
		<link>http://www.quirkey.com/blog/2015/08/22/finding-balance/</link>
		<pubDate>Sat, 22 Aug 2015 20:16:59 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=695</guid>
		<description><![CDATA[There&#8217;s been a lot of talk this week about Work-Life balance, pushing employees too far, and the like in the wake of the NYTimes expose about practices at Amazon. Whether you&#8217;re on the defense or the offense of this specific reveal, the bottom line is that overwork is a problem in the collective realm of [&#8230;]]]></description>
				<content:encoded><![CDATA[	<p><p>There&#8217;s been <a href="https://medium.com/life-learning/work-hard-live-well-ead679cb506d">a lot</a> <a href="https://www.linkedin.com/pulse/amazonians-response-inside-amazon-wrestling-big-ideas-nick-ciubotariu">of talk</a> this week about Work-Life balance, pushing employees too far, and the like in the wake of <a href="http://www.nytimes.com/2015/08/16/technology/inside-amazon-wrestling-big-ideas-in-a-bruising-workplace.html">the NYTimes expose about practices at Amazon</a>. Whether you&#8217;re on the defense or the offense of this specific reveal, the bottom line is that overwork is a problem in the collective realm of our industry and one, like diversity, that&#8217;s worth talking about.</p></p>

	<p><p>The fact is that I had starting writing this article about my own experiences with this well before the hubbub this week. I gave <a href="http://www.infoq.com/presentations/paperless-post-growth">a talk at QConNY about my wins and losses when scaling a team earlier this summer</a>.</p></p>

	<p><p>Leading up to the talk and since then, my thinking has continued to become more clear. As always in the world of &#8220;wet-ware&#8221;, this is my personal experience and opinions and don&#8217;t necessarily apply to everyone. In the same breath, I&#8217;ve learned that opening up and being honest has more positive then negative effects; doing this as a community allows for growth through conversation.</p><br />
<span id="more-695"></span></p>


	<p><h2>Burnout is real</h2></p>

	<p><p>I&#8217;m having a hard time writing code.</p></p>

	<p><p>Even after more than a year, I still look at code, at code that I wrote, with impatience and confusion and doubt.</p></p>

	<p><p> This is a strange feeling for me. I would categorize myself as an extremely productive and fast programmer. At the peak of my productivity I was working on multiple projects in multiple languages with multiple teams in a single day.</p></p>

	<p><p> But now, I&#8217;m <em>blocked</em>.</p></p>

	<p><p> I <a href="http://www.quirkey.com/blog/2015/04/14/kingston/">wrote a little bit about the why&#8217;s of where I am now</a> (and <a href="http://www.infoq.com/presentations/paperless-post-growth">also talked about it at QCon</a>, but the truth is: <em>burnout is real</em>. I was pushing ahead, digging a whole in the ground, and when I was so exhausted I had trouble getting up every morning, I tried to make a change.</p></p>

	<p><p>  Part of me believed that I would step away and all of a sudden be filled with ideas and energy again but for whatever reason, that hasn&#8217;t happened. Burnout for me is actually just a face of depression and the problem with either is that it&#8217;s often hard to pull out of the ditch &#8211; forcing something and failing at it often leads to more disappointment which just leads to more digging.</p></p>

	<p><h2>Do what you love is BS</h2></p>

	<p><p>I had this vision as a High-Schooler who was in to music and music production that I was going to graduate and open a recording studio. I was rallying towards the peak of my personal confidence (that period where you really do believe you know everything) and I had been telling myself and others that this is what I loved to do, and therefore I should have the power to do what I love and be successful at it.</p></p>

	<p><p>After 4 years at a liberal arts college, though, I was facing graduation and was a bit disillusioned. I still retained some aspects of that earlier dream, but it didn&#8217;t seem as glamorous anymore, and I had started to love other things. I got back into programming after a hiatus and I did really enjoy it. Part of me had this feeling like, well, I might not <em>love</em> this, but I can feed myself doing it, so &#8230; That changed over time, I <em>did</em> love programming. With the discovery of open source and new tools I got more and more entrenched and more filled with this pride &#8211; &#8220;I&#8217;m getting to <em>do what I love!</em> People are paying me for this!&#8221;</p></p>

	<p><p>Things change. I started to get involved in different aspects of this world: people, management, operations. There were constantly new things to learn and I was still excited and keeping up as best I could. There were little feels here and there, however: realizing I lived in the Bay Area and barely knew my neighborhood; constant stomach distress from eating crappy take out; only getting 5 days off after the birth of my first born. It wasn&#8217;t the fear of missing out &#8211; it was the realization that I liked <em>other things</em> and those <em>other things</em> were never in my schedule.</p></p>

	<p><p>&#8220;Do what you love&#8221; is built on two giant fallacies: That you can only do and love one thing and that one thing has to be all that you do.</p></p>

	<p><p>Hindsight being what it is, I&#8217;ve always loved and been inspired by <em>many</em> different things, and earlier in my life I was able to really embrace that and make it my mission to do <em>all</em> the things that I loved. At some point I lost sight of that, and now I&#8217;ve been struggling for the past year to try to throw myself into as many things as possible and try to find that balance.</p></p>

	<p><h2>Metrics for happiness</h2></p>

	<p><p>In doing a lot of thinking about this, I&#8217;ve tried to use a trick that I learned from <a href="http://amzn.to/1NA9awA">Emotional Intelligence</a> which is to force yourself to ask &#8220;why?&#8221; and &#8220;what&#8217;s beneath the emotion that I&#8217;m experiencing?&#8221; until you get to some dark-ish place that is more accurate or representative of a root cause.</p></p>

	<p><p>After doing this for way longer then is probably healthy I came to the conclusion that I wanted to be successful and happy and I felt like I was unable or in the wrong situation to do that. When I broke this down more, it became a familiar narrative:</p></p>

	<p><p>1) Work Really Hard<br />
2) Make A Lot of Money<br />
3) Have the time and space to do the things I want<br />
4) Be Happy</p></p>

	<p><p>The strange thing that it took me seemingly forever to realize is that there was this underlying assumption that to get to the real goals of #3 and #4 doing #1 and #2 were the only way to get there. Ingrained in me was the belief that success was defined by the path and not the result.</p></p>

	<p><p>Changing my approach is a process, but one that I&#8217;m actively involved in. I&#8217;ve been thinking about how to use my skills and time to be happy instead of how to make money. This shift is hard because the pedagogy of success would assume that by stepping down in my role, making less money, etc, would mean that I&#8217;ve failed. I&#8217;m still wrestling with this because the belief is so woven in to our industry and society.</p></p>

	<p><p>The hardest part about trying to be happy is the feeling that happy means happy all the time. While thats a pretty lofty goal, its a damaging one, as it makes us sink lower than necessary in moments of feeling sad or lost. Learning from my experience in Ops and Infrastructure, my new metric is aiming for 90th percentile Happiness. If every week, 90% of the time I&#8217;m happy and feeling content, I&#8217;m going in the right direction. This is a moving average function and it can smooth out those rough days when nothing seems to be going right.</p></p>

	<p><h2>Moderation and Balance</h2></p>

	<p><p>For myself, it&#8217;s key that there&#8217;s no &#8216;going cold turkey&#8217;. I&#8217;ve had fantasies of running away and just opening a sandwich shop. That&#8217;s not to say that I won&#8217;t do that someday, but personally, I&#8217;m at my most present and my most successful when theres a lot of different things going on that can form some sort of balance between work I have to do, work I like to do, and not work at all. This might be 40 hours of work, but it&#8217;s becoming clear that that&#8217;s really unlikely.</p></p>

	<p><p>Moderation in most things is a step to finding the balance. Food journalist, Michael Pollan, famously summed up his approach to healthy and sustainable eating with the quote &#8220;Eat Food, Not Too Much, Mostly Plants&#8221;. I&#8217;m trying to adopt a similar approach to work:</p></p>

	<p><p><em>&#8220;Do Work, Not Too Much, Mostly Fun&#8221;</em>.</p></p>

	<p><h2>Whatever is next</h2></p>

	<p><p>I&#8217;m currently working on a bunch of different projects but most are not directly related to writing code. I&#8217;m <a href="http://quirkey.com/hireme">working with some teams around the country to help direct their large application development efforts to be efficient and performant</a>. I&#8217;m working on <a href="http://beatsryetypes.com/pizza">writing a book about Pizza with my best friend.</a>.</p></p>

	<p><p>I&#8217;ve definitely had the feeling recently though, that I&#8217;m wanting to dive into something bigger. In searching for the next thing, I&#8217;m explicitly putting balance at the fore-front. Whether I end up joining another company or starting my own, 4 day work-weeks are the new &#8220;very busy&#8221;.</p></p>

	<p><p><em>Cross-Posted at <a href="https://medium.com/the-lighthouse/finding-balance-7388ce748051#.cmivzaupq">Medium</a></em></p></p>
 ]]></content:encoded>
			</item>
		<item>
		<title>Reading in the Stacks: Understanding StackProf</title>
		<link>http://www.quirkey.com/blog/2015/06/23/reading-in-the-stacks-understanding-stackprof/</link>
		<pubDate>Tue, 23 Jun 2015 17:56:28 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=677</guid>
		<description><![CDATA[StackProf is an excellent tool for diagnosing and finding performance problems in Ruby applications. It&#8217;s not Rails specific or even web-app specific, and most importantly, it doesn&#8217;t suffer from the probe effect so it can easily be used in production environments. I&#8217;ve been aggressively pushing people to use StackProf for over a year now, specifically [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/tmm1/stackprof">StackProf</a> is an excellent tool for diagnosing and finding performance problems in Ruby applications. It&#8217;s not Rails specific or even web-app specific, and most importantly, it doesn&#8217;t suffer from <a href="">the probe effect</a> so it can easily be used in production environments.</p>

<p>I&#8217;ve been aggressively pushing people to use StackProf for over a year now, specifically through talks and a bit of short writing here and there. This past weekend I got to attend <a href="http://goruco.com">GoRuCo 2015</a> and saw my friend, neighbor, and general badass <a href="https://twitter.com/eileencodes">Eileen Uchitelle</a> <a href="https://speakerdeck.com/eileencodes/how-to-performance-at-goruco-in-nyc">deliver a talk about using StackProf and other tools to diagnose performance problems in Rails core</a>. She did a great job describing the tools and how to use them, but it made me realize that maybe the reason StackProf hasn&#8217;t really caught on in the Ruby community is that theres not a lot (read: any) good documentation about how to read or understand the information you get from it. So here I am, aiming to fix that.</p>

<h3>Where does StackProf come from?</h3>

<p>StackProf was created by <a href="https://twitter.com/tmm1">Aman Gupta (@tmm1)</a> at GitHub with the goal of creating a low-impact sampling profiler for Ruby. This was inspired by Google&#8217;s <a href="https://code.google.com/p/gperftools/">gperftools</a> which was made popular again recently by <a href="http://blog.golang.org/profiling-go-programs">Go&#8217;s implementation</a>. </p>

<p>This is all possible because Ruby 2.1 shipped with an internal API (<code>rb_profile_frames</code>) that allows StackProf to grab stack samples with minimal CPU and memory overhead. </p>

<h3>What is it good for?</h3>

<p>StackProf is a sampling profiler with very low overhead which makes it ideal for diagnosing performance problems in production environments. That doesn&#8217;t mean its <em>only</em> useful for production, but because its only capturing samples every <em>n</em> milliseconds, its more useful on long running processes then quick bits of code. It doesn&#8217;t capture <em>every</em> frame or <em>every</em> call in your code (that&#8217;s the core tradeoff: lower resolution for lower impact) so there are some cases where your code is made up of many different quick calls which might escape its clutches.</p>

<h3>What is a stack?</h3>

<p>Stepping back a bit, when I first presented StackProf to some colleagues they didn&#8217;t really grasp how to understand the output because they didn&#8217;t understand the concept of a <em>stack</em> in this context. When we talk about <em>&#8220;the stack&#8221;</em> in ruby we&#8217;re talking about the method call stack. Most developers experience this most frequently as error backtraces when we hit an exception. A backtrace is a textual representation of the call stack (in reverse) from where the error took place. When we call a method that calls another method that calls another method, each of those calls in put onto a &#8220;stack&#8221; and then when the lower most method finishes, it is &#8220;popped off&#8221; the stack. </p>

<p>StackProf takes samples of the running code as individual &#8220;frames&#8221; which represent the stack at that given moment. Each frame gives us an ordered list of all the methods and lines of code that are on the stack, from the top most method (in a Rails app, probably your server/Unicorn) to the code on the bottom (the code currently running, like an ActiveRecord call). </p>

<img src="http://quirkey.s3.amazonaws.com/stackprof.gif" alt="StackProf Diagram" />


<p>Here we can see a simple representation of the stack as time proceeds (left to right) and we descend and ascend the stack (up and down). When we take samples over time and then collect them into a single report, we get a simple way of representing what methods were on the stack the most and therefore taking up the most time (or CPU time) in the period that we were taking samples. </p>

<h3>How do I read the general output?</h3>

<p>I created a simple gem called <a href="https://github.com/quirkey/stackprof-remote">stackprof-remote</a> that provides an easy way to collect dump&#8217;s from production systems. Maybe deceivingly, it also includes a simple interactive wrapper (based on pry) for navigating stackprof .dump files called <code>stackprof-cli</code>. Once you have a dump you can get into it via:</p>

<pre>$ stackprof-cli last-run.dump
stackprof&gt;
</pre>

<p>Get the top 5 methods:</p>

<pre>stackprof&gt; top 5
==================================
  Mode: cpu(1000)
  Samples: 5045 (3.28% miss rate)
  GC: 355 (7.04%)
==================================
     TOTAL    (pct)     SAMPLES    (pct)     FRAME
       736  (14.6%)         707  (14.0%)     ActiveSupport::LogSubscriber#start
       379   (7.5%)         379   (7.5%)     block in ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#execute
      5248 (104.0%)         168   (3.3%)     Benchmark#realtime
       282   (5.6%)         117   (2.3%)     ActiveSupport::LogSubscriber#finish
        88   (1.7%)          88   (1.7%)     block (2 levels) in Sass::Importers::Filesystem#find_real_file
</pre>

<p>At the top of the output is some general info about the dump. We were running StackProf in CPU mode sampling every 1000 frames (the default). We took 5045 samples and 355 of those were during a GC pause and we can extrapolate that 7% of the time was spent doing GC.</p>

<p>Below the general info is a list of methods sorted by the samples column. The first two columns show the number and % of samples that this method was on the stack. The second two columns show the number and % of samples that this method was at the _top_ of the stack. By sorting by the samples column, we're showing the methods that our process was spending the most time in across all the samples. If we sorted by total (possible via <code>total N</code> in the CLI) we&#8217;re showing what methods were generally on the stack the most. This is useful too, but often just shows methods that are at the root of the stack (like server and middleware code that wrap everything else).</p>

<p>You can also dive into a specific method and see what the callers and callees (up/down the stack) were in the samples that were captured using <code>method METHOD</code>.</p>

<h3>What&#8217;s a flame graph?</h3>

<img src="http://quirkey.com/skitch/skitched-20150623-121117.jpg" alt="http://quirkey.com/skitch/skitched-20150623-121117.jpg" width=550 />


<p>Flame graphs are a visualization of the same stack sample data popularized by <a href="http://www.brendangregg.com/">Brendan Gregg</a>. Flame graphs are awesome because they let us have an overview of an entire dump/captured session in a visual way that make it easier to pinpoint hot-points. Flame graphs display time left to right and the stack vertically. The colors in the StackProf Flame graphs are used to group different sources of code (i.e. different gems, controllers, models, etc) and are sorted with darkest red being the code that had the most TOTAL samples. In the example above, which is a profile of a Rails controller action you can see that ActionPack is at the top which makes sense because we&#8217;re spending most of our time dispatching/running a controller action. We can see that the stack moves up and down and there are clear <em>sections</em> where different parts of the action are happening. The lowest hanging fruit for optimization here are things that are <em>wide</em> and close to the top. Those are methods that are themselves taking up a lot of time.</p>

<h3>Where to next?</h3>

<p>If you set up stackprof-remote on your production app, you can make it easy to collect dumps from you&#8217;re running prod servers. You can do this at high traffic times, or just during a normal day, and get a good sense of where your app is spending time across actions/requests. This can be immensely useful as it can identify areas of code that are not in a single action, but common between actions that are taking up an unexpected amount of time or CPU. It can be useful locally, too, as Eileen showed in her optimization of the Rails test suite.</p>

<p><em><strong>If you're interested in working with me on performance and scaling as your team grows, <a href="/hireme">I'm available for hire.</a></strong></em></p>]]></content:encoded>
			</item>
		<item>
		<title>Ruby Performance, a Visual Guide</title>
		<link>http://www.quirkey.com/blog/2015/06/15/ruby-performance-a-visual-guide/</link>
		<pubDate>Mon, 15 Jun 2015 20:49:21 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=668</guid>
		<description><![CDATA[This past weekend, I spoke at RubyNation about using some methodologies from other communities and applying them to Ruby performance monitoring and debugging (Slides here). I also tweeted this key image/slide, which has seemed to have struck a chord with Rubyists: The slide was inspired by Brendan Gregg&#8216;s essential work on Linux Performance. I&#8217;ve been [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This past weekend, I spoke at <a href="http://www.rubynation.org/">RubyNation</a> about using some methodologies from other communities and applying them to Ruby performance monitoring and debugging (<a href="https://speakerdeck.com/aq/fast-everything-ruby-performance-tools-and-understanding">Slides here</a>). I also tweeted this key image/slide, which has seemed to have struck a chord with Rubyists:</p>

<p><img src="http://quirkey.com/skitch/fast-everything-rubynation.001-20150615-160626.png" alt="http://quirkey.com/skitch/fast-everything-rubynation.001-20150615-160626.png" width="550"/></p>

<p>The slide was inspired by <a href="http://www.brendangregg.com/">Brendan Gregg</a>&#8216;s <a href="http://www.brendangregg.com/linuxperf.html">essential work on Linux Performance</a>. I&#8217;ve been <del datetime="2015-06-16T00:19:40+00:00">worshiping</del> <del datetime="2015-06-16T00:19:40+00:00">obsessing over</del> following Brendan&#8217;s work for a while now, and his <a href="http://www.amazon.com/gp/product/0133390098/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0133390098&amp;linkCode=as2&amp;tag=quirkeycom-20&amp;linkId=GXZOOB2PLO3AANQN">System&#8217;s Performance Book</a> is frequently quoted at work. The central theme of my talk was trying to apply the <a href="http://www.brendangregg.com/usemethod.html">U.S.E. method</a> to Ruby/Rails application performance. This idea ended up bearing more fruit then I could present in a short (25 min) talk, so the diagram above provides a overarching view of the work.</p>

<p>There are a few key takeaways here:</p>

<h3>There are many tools, and that&#8217;s OK</h3>

<p>It&#8217;s important to try to think about tools in the framework of <a href="https://en.wikipedia.org/wiki/Unix_philosophy">the Unix philosophy</a> of small programs that do their job well and are modular and compose-able. As application programmers, we&#8217;re often looking for the one true ring of performance monitoring and debugging, or worse, trying to use a tool we know, meant for a specific use-case, as general-purpose. So it&#8217;s great that there are a proliferation of tools, we just need to know what they&#8217;re good for and how to wield them.</p>

<p>It&#8217;s also worth noting that there are WAY more tools then I outlined in the talk/diagram such as <a href="https://github.com/schneems/derailed_benchmarks">schneems/derailed_benchmarks</a>.</p>

<h3>Development is a different world from production</h3>

<p>This seems obvious from an infrastructure point of view, but is also true from a tools perspective. There are a ton of tools that provide little value against production because of <a href="https://en.wikipedia.org/wiki/Probe_effect">the probe effect</a> or non-useful data. Know which tools you can use in which environment.</p>

<h3>Saturation is often overlooked</h3>

<p>I was glad that <a href="https://twitter.com/indirect">@indirect</a> brought this up in his talk, too (hopefully slides/video will be available soon) &#8211; we often spend a lot of time looking at Utilization (averages/response time) and Errors in our applications, but rarely look at Saturation (how much extra work our application has to do, but doesn&#8217;t have capacity to handle). There are some easy ways to measure this for certain stacks (<a href="https://twitter.com/aq/status/609829080918302721">nginx</a>, <a href="http://raindrops.bogomips.org/">unicorn</a>) but if you&#8217;re stack doesn&#8217;t provide this easily, that should be a concern.</p>

<h3>Ruby has some gaps, we should be aiming to fill them</h3>

<p>Specifically, there really aren&#8217;t any good tools for debugging Ruby Memory usage in production applications. (I&#8217;ve heard <a href="http://rbkit.codemancers.com/">rbkit</a> has made some progress recently, though haven&#8217;t heard reports from the real world). There are finally some decent APIs in Ruby itself, I&#8217;m hoping all it takes is some smart people to <del datetime="2015-06-16T00:20:18+00:00">steal some</del> get inspired by the awesome tools in other mature languages.</p>

<p><em><strong>If you or your team wants to learn more about these tools, <a href="/http://quirkey.com/hireme">I&#8217;m now available for training and consulting.</a></em></strong></p>]]></content:encoded>
			</item>
		<item>
		<title>Tradeoffs</title>
		<link>http://www.quirkey.com/blog/2015/05/06/tradeoffs/</link>
		<pubDate>Wed, 06 May 2015 17:28:28 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Philosophy]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=658</guid>
		<description><![CDATA[A theme that keeps coming up in our conversations on Beats, Rye &#38; Types [1] is the idea that tradeoffs are an integral part of computology. What I&#8217;ve begun to realize is that at the core of my frustrations with the obsessions with the latest framework and the constant need to burn down the past [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A theme that keeps coming up in our conversations on <a href="http://beatsryetypes.com">Beats, Rye &amp; Types</a> <a href="#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a> is the idea that tradeoffs are an integral part of computology. </p>

<p>What I&#8217;ve begun to realize is that at the core of my frustrations with <a href="http://www.quirkey.com/blog/2012/09/04/client-side-frameworks-suck/">the obsessions with the latest framework</a> and <a href="http://www.quirkey.com/blog/2013/12/05/the-big-rewrite/">the constant need to burn down the past</a> is that people tend to overlook the underlying choices they&#8217;re making when choosing technology.</p>

<p>All of my opinions on this can probably be summarized as: <strong><em>Awareness of the tradeoff&#8217;s you&#8217;re making is the most important part of your work</em></strong>.</p>

<p>Tradeoff-awareness goes both ways: It&#8217;s as crucial when you&#8217;re advocating as when you&#8217;re nay-saying. It means knowing that when you pick an untested or young technology, it might have problems at a later date. The key is accepting the risk in exchange for the &#8220;new-tech smell&#8221; and being <em>aware</em> that you made that choice<a href="#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>. Having faults is not a critical bug - there is not a single thing in the universe that doesn&#8217;t have some sort of issue<a href="#fn:3" id="fnref:3" title="see footnote" class="footnote">[3]</a>. Having perspective and knowledge of these limits allows you to address them and move on. </p>

<p>I love Ruby and I&#8217;m also fully aware that choosing Ruby for a project trades my familiarity and the ease of use with it&#8217;s performance and resource usage at a certain scale. I also love Go and I&#8217;m aware that I&#8217;m trading performance and concurrency for some of the speed, familiarity, and [over-]abundance of libraries and tools. Having an in-mind index of as many tools as possible and their strengths and weaknesses helps me pick the right tool for the current job.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>Especially in <a href="http://beatsryetypes.com/episodes/2015/03/30/episode-9-magic.html">this episode about Magic</a> <a href="#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p><a href="https://twitter.com/aphyr">@aphyr</a> has been doing a great job recently of <a href="https://aphyr.com/posts/324-call-me-maybe-aerospike">outlining the issues with different distributed databases</a> while not negating their merits entirely and recommending them in terms of tradeoffs. <a href="#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:3">
<p><a href="http://michaelrbernste.in/2013/11/13/the-only-sure-thing-in-computer-science.html">&#8220;The canonical article about tradeoffs&#8221; &#8211; @mrb</a> <a href="#fnref:3" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			</item>
		<item>
		<title>No Shortcuts</title>
		<link>http://www.quirkey.com/blog/2015/04/22/no-shortcuts/</link>
		<pubDate>Wed, 22 Apr 2015 18:41:35 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Food]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=654</guid>
		<description><![CDATA[I started this year with a resolution in the form of a mantra: &#8220;No Shortcuts&#8221;.[1] It&#8217;s an idea that mainly spurs from my reading in cookbooks, but I&#8217;m finding it&#8217;s applicable to all aspects of my life and not just cooking. In the food world, this aspirational idea comes in many forms and phrases. In [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I started this year with a resolution in the form of a mantra: &#8220;No Shortcuts&#8221;.<a href="#fn:1" id="fnref:1" title="see footnote" class="footnote">[1]</a></p>

<p>It&#8217;s an idea that mainly spurs from my reading in cookbooks, but I&#8217;m finding it&#8217;s applicable to all aspects of my life and not just cooking. In the food world, this aspirational idea comes in many forms and phrases. In Daniel Humm&#8217;s kitchen at <a href="http://elevenmadisonpark.com/">Eleven Madison Park</a> there&#8217;s a <a href="http://elevenmadisonpark.com/">large sign that reads &#8220;Make it Nice&#8221;</a>. When you <a href="http://www.amazon.com/gp/product/0316098515/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0316098515&amp;linkCode=as2&amp;tag=beryty-20&amp;linkId=Z7EPNN4YO5GRZUIK">read their book</a> you realize that this represents one of the core philosophies: the striving towards something great through making each individual detail &#8220;nice&#8221;.</p>

<p>I <a href="http://www.amazon.com/gp/product/0714864706/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0714864706&amp;linkCode=as2&amp;tag=beryty-20&amp;linkId=FB26MNSL6IAO2RUZ">mentioned the inspiring and often mind boggling Fäviken Book</a> in <a href="http://beatsryetypes.com/episodes/2015/03/02/episode-5-perfection.html">The &#8220;Perfection&#8221; episode of Beats, Rye &amp; Types</a>. Chef Magnus Nilsson sums this up pretty eloquently:</p>

<blockquote>
<p>&#8220;The questions you must ask yourself about every detail are these: does this make the end result better, and do I have the time or capacity to do it at the moment? [&#8230;] The important idea is not always to do things without compromise, but with thought-through attention and decisions that lead, little by little, towards creating a better end result.&#8221;</p>
</blockquote>

<p>I wouldn&#8217;t in a million years compare myself to these extremely talented, driven, and respected chefs. Rather, I&#8217;m starting from what I consider zero, and slowly improving. </p>

<p>For the past couple of months I&#8217;ve been cooking <em>a lot</em> and I&#8217;m always driven to take on new recipes that are increasingly more challenging. Even in the most basic recipes, though, I started to see my lack of consistency - I started to slip and make stupid mistakes. It took a while to realize (and through reading more and more) that this wasn&#8217;t from lack of skill or bad recipes, this was just me not paying attention. It was me making small split doeskins to take a shortcut here or there (not rinsing this, not using the right pot) and that having the exact opposite effect of what the chefs described above - it made the overall result worse.</p>

<p>Most of these things, I realized were completely subconscious or at least not something I was recognizing in the moment. It has some of the same results as being lazy, but this is slightly different - this is about self-awareness and being present enough to do the &#8220;nice&#8221; thing.</p>

<p>Now I&#8217;ve gone from being generally aware of the situation, to being aware in the moment. It&#8217;s taken a huge amount of effort to put my own momentum behind living in a &#8220;No Shortcuts&#8221; world. I&#8217;ll be cooking or writing and I&#8217;ll have to catch myself, &#8220;you&#8217;re rushing, you&#8217;re skipping steps&#8221;. I&#8217;ve found myself working on a project and about to consider it done when I ask myself , &#8220;Is this good? Did I do all I could to make it better?&#8221;.</p>

<p>Nothing I do is anywhere near perfect, but every time I try a little harder and try to really think through the steps of something, I find myself becoming more present. Maybe more importantly, I&#8217;m getting better at the things I care about - I can make a really good pizza<a href="#fn:2" id="fnref:2" title="see footnote" class="footnote">[2]</a>.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>In my house I&#8217;m notorious for yearly resolutions and frequent proclamations. When I told Kat about &#8220;No Shorcuts&#8221; she laughed and said, &#8220;well my resolution is ALL SHORTCUTS&#8221;. We&#8217;ll see how that works out for her. <a href="#fnref:1" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

<li id="fn:2">
<p>In case you haven&#8217;t heard, MRB and I are working on a book about Pizza. See <a href="http://beatsryetypes.com/pizza">http://beatsryetypes.com/pizza</a>. <a href="#fnref:2" title="return to article" class="reversefootnote">&#160;&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			</item>
		<item>
		<title>Use rbtrace as a gem</title>
		<link>http://www.quirkey.com/blog/2015/04/17/use-rbtrace-as-a-gem/</link>
		<pubDate>Fri, 17 Apr 2015 13:43:55 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software/Scripts]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=643</guid>
		<description><![CDATA[Word is getting around recently about how awesome rbtrace is. Which is great, because it&#8217;s a fantastically useful gem for debugging performance problems. In fact I mentioned it in my performance talk at GoRuCo last year. In and of itself, it can get you some really good information about what&#8217;s going on inside of a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Word is <a href="http://www.justinweiss.com/blog/2015/04/06/how-to-debug-ruby-performance-problems-in-production/">getting</a> <a href="http://samsaffron.com/archive/2015/03/31/debugging-memory-leaks-in-ruby">around</a> recently about how awesome <a href="https://github.com/tmm1/rbtrace">rbtrace</a> is. Which is great, because it&#8217;s a fantastically useful gem for debugging performance problems. In fact I mentioned it in my <a href="https://www.youtube.com/watch?v=cOaVIeX6qGg">performance talk at GoRuCo last year</a>. </p>

<p>In and of itself, it can get you some really good information about what&#8217;s going on inside of a live ruby process. Its real power, though, comes apparent when combined with the power of other tools. This is because rbtrace&#8217;s eval functionality allows you to run <em>anything</em> inside of your running ruby process. Now this should all come with a serious <a href="http://en.wikipedia.org/wiki/Uncle_Ben">Uncle Ben Warning (i.e. &#8220;With Great Power Comes Great Responsibility&#8221;)</a> - you need to make sure you have proper security around your ruby processes. Enabling rbtrace is giving access to run <em>anything</em> that the ruby process can run.</p>

<p>Assuming you understand the risks, rbtrace can enable you to get amazing insight, like being able to <a href="https://github.com/quirkey/stackprof-remote">toggle and dump stackprof information remotely with stackprof-remote</a>. Here we start thinking of rbtrace not as a performance tool itself, but a messaging protocol and system for setting and retrieving live objects in our ruby processes. This works because (as of 0.4.3) the main functionality of rbtrace was extracted into a useable ruby API which is accessible outside of the CLI. For example:</p>

<script src="https://gist.github.com/quirkey/ea67425dba0f64cac4e3.js"></script>

<p>You can see the <a href="https://github.com/quirkey/stackprof-remote/blob/master/lib/stackprof/remote/process_report_collector.rb">full magic here.</a></p>

<p>In this way you can trigger events in your process or just read or set values, but dynamically and without having to provide an explicit API. Again, this power could easily be abused not only by hackers but by developers who want to build the worlds most fragile RPC system (don&#8217;t do it!). </p>

<p>What if we used this power for good?</p>]]></content:encoded>
			</item>
		<item>
		<title>Kingston</title>
		<link>http://www.quirkey.com/blog/2015/04/14/kingston/</link>
		<pubDate>Tue, 14 Apr 2015 14:15:26 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=636</guid>
		<description><![CDATA[About a year ago now, Kat and I first saw this house. We walked in to the entryway and everything smelled old. Like dust and mold and like air that hadn&#8217;t moved in a very long time. It was a freezing day, but it was sunny and the house felt surprisingly warm. &#8220;Stone houses stay [&#8230;]]]></description>
				<content:encoded><![CDATA[<img src="http://quirkey.com/skitch/Photos_-_Dropbox.jpg" alt="The house" width="550" />


<p>About a year ago now, Kat and I first saw this house. We walked in to the entryway and everything smelled old. Like dust and mold and like air that hadn&#8217;t moved in a very long time. It was a freezing day, but it was sunny and the house felt surprisingly warm. &#8220;Stone houses stay warm because of the thick walls&#8221;, the realtor told us. It was like going back in time, the furniture (early american), the wallpaper (horse and carriage). I turned to Kat and could see it in her eyes immediately, though, this was going to be our challenge - this was going to be our home.</p>

<span id="more-636"></span>

<img src="http://quirkey.com/skitch/Photos_-_Dropbox-20150413-221812.jpg" alt="The Living room: Before" width="550" />
<em>This is "the before"</em>


<h2>The House</h2>

<p>To understand the history of the house, you have to understand at least a little bit about the history of Kingston, NY (all of which I&#8217;ve learned in the past year). Kingston was originally a pre-independence Dutch settlement called Wiltwijck, and in 1658 Peter Stuyvesant (then the Director General of New Netherland) forced the loose collection of settlers in the Esopus valley to gather into a walled town surrounded by a wooden fence (or Stockade). Our house (or at least part of it) was constructed not long after, inside what is now know as the Stockade district, by the Van Keuren family. The wall is gone, but the same streets in this map from 1695 are still present. </p>

<img src="http://www.fohk.org/wp-content/uploads/2013/09/Stockade-map-old_web.jpg" alt="Map of the stockade" width="550"  />


<p>The original house was probably a mostly wooden structure which was then replaced by a stone structure around 1680. In October 1777, after the Battle of Saratoga, a troop of British soldiers marched into Kingston and burned many of the houses including ours. Most of the stone structure remained intact and in fact, the support beams in the basement that support the first floor are charred black and remain from that period. </p>

<p>The house remained in the same family until 1923 when the Carl family purchased the home and worked with prominent local architect, Myron Teller to &#8220;restore&#8221; it. &#8220;Restore&#8221; is in quotes because Teller had a very specific style and agenda and while he kept much of the original character of the home, he added a number of features (more windows, doors, walls, covered porch, etc) that definitely weren&#8217;t part of the original Dutch design.</p>

<p>After the Carl's finished the renovations in the mid 1930&#8217;s, other then a new stove and maybe a new toilet in the 1960&#8217;s the house really was not touched until we bought it. </p>

<h2>Our History</h2>

<p>When we started looking up here a year ago, we had to get really used to answering the question of why we would want to move here from Brooklyn. I lived in Brooklyn most of my life (with some hiatus&#8217;s in Massachusetts and California) and will forever be a Brooklynite no matter where I go, though the lure of something better was just too strong. Kat and I spent a bunch of time coming up to the Hudson Valley and Catskills throughout our relationship. We even got engaged up here (almost 7 years ago if I can believe it). </p>

<p>No, we <strike>don't</strike> didn&#8217;t really have many friends up here. We just loved the natural beauty of the area, the relaxed nature of the towns, and the artistic and bohemian vibe that Kingston especially had.</p>

<h2>Along Came Magnus</h2>

<img src="http://quirkey.com/skitch/magnus-reading.jpg" alt="FIYAH TRUCKS" width="550" />


<p>The real reason we left the city and came up here is a little more complicated. For the past 5 years I was the CTO of a fast growing product company that went from 5 people to more than 100. It was constantly challenging and I really gave it my all. That meant many 80+ hour weeks, traveling every month, and generally working every waking hour I had. I loved working with my team, solving big problems and watching us succeed. </p>

<p>A lot of good friends had warned me that having a child changes you, but I didn&#8217;t really understand until it happened to me (I guess you can&#8217;t, really). So <a href="http://www.hudsonvalleybusinessreview.com/2014/09/03/along-came-magnus/">along came Magnus</a> and even though every ounce of me wanted to just spend time with him I had to make a choice daily and stay late and push through and basically see him for a couple minutes each morning and on weekends.</p>

<p>It wasn&#8217;t a single moment, or a snap, but rather a dull throb growing louder. I was burnt out. The feeling is more than being tired, it&#8217;s a numbness and a sadness. I was angry at everything and frustrated with myself for wasting any moment of my day. Most of all, the motivation and passion I had, not just for my work, but for anything seemed to have disappeared. This was the hardest thing, because I&#8217;ve basically defined my entire self by my ability to be excited and passionate. </p>

<p>So in Jan 2014, overwhelmed by my underwhelmedness, I pushed myself to make a change. By the summer, I had helped Paperless Post <a href="http://dev.paperlesspost.com/blog/2014/08/19/welcome-tatum/">find a new CTO</a> and Kat and I had found this house, moved all our stuff and were living out of boxes in a single room while a team of contractors worked away. </p>

<p>The renovation consumed us. Kat did an amazing job basically single handedly <a href="http://upstater.com/the-tale-of-winkie-and-cat-a-preservation-story-of-two-centuries/">redesigning the entire house (more pics)</a>. We really didn&#8217;t touch any of the historical details, but it&#8217;s amazing what a difference a new kitchen, new bathrooms and a couple coats of paint will do.</p>

<img src="http://quirkey.com/skitch/dining.jpg" alt="Dining Room" width="550"  />


<p>I continued to work full time for Paperless in my new role as Chief Scientist. Instead of only managing people I was working on writing code again, and managed to help ship a really big piece of infrastructure that helped us get through the 2014 holiday season without a hitch. I wasn&#8217;t any less exhausted, though, even though I was much more removed from the day to day operations.</p>

<h2>The Spring</h2>

<p>After what seemed like months of being buried in snow (this city kid had to learn how to shovel a driveway [many many many times]), the snow is finally all gone and things are changing all over again.</p>

<p>I felt I needed to step back even further and start to explore some new challenges. I&#8217;m still Chief Scientist at Paperless Post, but I&#8217;m working part time. In the rest of the time I&#8217;m dedicated to other things: Spending time with Magnus and Kat (Fridays have become DADA days), getting better as a cook (<a href="https://instagram.com/quirkey/">and a baker</a>), and starting to take on some new projects as a consultant. </p>

<p>I&#8217;m looking forward to putting a lot of the skills I&#8217;ve honed over the past couple of years to use with new projects and people. <a href="http://www.quirkey.com/hireme/">I put together a little site to describe the type of work I&#8217;m looking for</a>. I&#8217;m still happy to be a part of Paperless but also excited to test my expertise on new challenges.</p>

<p>For the longest time, I was sure that I had a very specific track ahead of me, that each job was a step in an upward career. Life is weird and awesome, though, and happiness and success are not only on a single path. </p>

<img src="http://quirkey.com/skitch/walk.jpg" alt="Exploring the redwoods" width="550"  />]]></content:encoded>
			</item>
		<item>
		<title>The Future of Ruby Performance Tooling</title>
		<link>http://www.quirkey.com/blog/2014/08/25/the-future-of-ruby-performance-tooling/</link>
		<pubDate>Mon, 25 Aug 2014 13:00:39 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=622</guid>
		<description><![CDATA[A couple of weeks ago I gave a talk at GoRuCo about Ruby Performance Tooling. It was amazing to finally give a full talk at a conference that I've been attending almost every year since it started (has it really been 8 years?). It was also really fun to talk about something I've been investing [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>A couple of weeks ago <a href="http://goruco.com/speakers/2014/aaron-quint">I gave a talk at GoRuCo about Ruby Performance Tooling</a>. It was amazing to finally give a full talk at a conference that I've been attending almost every year since it started (has it really been 8 years?). It was also really fun to talk about something I've been investing so much energy into recently.</p>

<span id="more-622"></span>

<p>Ruby performance has always been a topic of interest, but as Paperless Post has grown its taken on a new level of importance for myself and the team. We've consistently been living on the edge of Ruby and have been running Ruby 2 since it was just released. As some friends and colleagues finally received commit privileges to Ruby core, I became even more involved, following each change set and testing out the latest features.</p>

<p>It's been extremely exciting to see Ruby come around and not just focus on features for developers but finally add a number of features for operators as well. I really believe this is just the beginning and within the next year Ruby will be much easier to introspect and operate in production. We're finally getting the type of tooling that other communities have had for years.</p>

<p>I'd love to talk to you if you're interested in Ruby performance and working on and using some of these tools.</p>

<p>Heres a full video of the talk as well as slides and links to relevant projects:</p>

<iframe src="//player.vimeo.com/video/101415184" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>


<p> <p><a href="http://vimeo.com/101415184">GORUCO 2014 - Aaron Quint - The Future of Ruby Performance Tooling</a> from <a href="http://vimeo.com/goruco">Gotham Ruby Conference</a> on <a href="https://vimeo.com">Vimeo</a>.</p></p>

<script async class="speakerdeck-embed" data-id="b103a300db820131a69a42d341a7ea58" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>


<ul>
<li><a href="https://github.com/tmm1/stackprof">Stackprof</a></li>
<li><a href="https://github.com/quirkey/stackprof-remote">Stackprof-remote</a></li>
<li><a href="https://github.com/quirkey/objspace_viewer">Objspace_viewer</a></li>
<li><a href="https://github.com/tmm1/rbtrace">Rbtrace</a></li>
</ul>
]]></content:encoded>
			</item>
		<item>
		<title>DOUGH</title>
		<link>http://www.quirkey.com/blog/2014/05/06/dough/</link>
		<pubDate>Wed, 07 May 2014 00:59:27 +0000</pubDate>
		<dc:creator><![CDATA[AQ]]></dc:creator>
				<category><![CDATA[Food]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.quirkey.com/blog/?p=615</guid>
		<description><![CDATA[Last week I attended the úll conference in Killkenny, Ireland. Besides being an excuse for us to take Magnus on his first trip to Ireland, the 3 days of the conference let me recharge my inspiration battery a bit and also have a bunch of great conversations with a lot of really smart people. Isn't [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><img src="http://quirkey.com/skitch/10005428_498086400316986_912937272_n_jpg__640%C3%97640_.jpg" alt="http://quirkey.com/skitch/10005428_498086400316986_912937272_n_jpg__640×640_.jpg" width="550" /></p>

<p>Last week I attended the <a href="http://2014.ull.ie">úll conference in Killkenny, Ireland</a>. Besides being an excuse for us to take <a href="http://instagram.com/p/nYBSCXgcmK/">Magnus on his first trip to Ireland</a>, the 3 days of the conference let me recharge my inspiration battery a bit and also have a bunch of great conversations with a lot of really smart people. Isn't that what conferences are for? On the second day there was a call to give lightning talks and I volunteered to talk about something thats been very much on my mind lately: Dough. I picked up baking (more specifically Pizza and pasta making) again recently, and the trial by fire has had me thinking a lot. I'm not going to post the slides because they're really just pictures, but what follows is the transcript.</p>

<hr />

<p>This is a call to action: start making dough.</p>

<p><em>DOUGH</em></p>

<p>not CASH</p>

<p>not D'OH</p>

<p><em>DOUGH</em></p>

<p>Listen, when the electricity gets and we're all holed up in a post internet globe of apocalyptic struggle, when the zombies come and you have to hold fast, well, your paleo gluten free shit is probably going to have to go out the window with all your obscure knowledge of dynamic programming languages and Simpson's halloween specials and you're going to have to learn how to feed yourself.</p>

<p>You're going to have to learn how to make dough.</p>

<p>But its not just survival, theres an amazing magic there. If you think theres craft and wizardry in making web applications, turning 3 simple ingredients into a loaf of bread. Dough is the original abstract framework. Its one of the original crafts. People have been turning ground wheat and water into bread since 8000BCE. If you think it takes 1K hours to master something, try 10K years.</p>

<p>Look, I didn't come to this naturally. I was pushing myself through learning how to cook everything. Following my obsessions: charcuterie, pickles, cheeses, bbq. Brining, Curing, Grilling, Braising my way through it all. But I resisted dough. Oh, I tried. And failed. All the other things came so easily to me, but bread, pasta, pizza, I kept fucking up. And spectacularly at that, flipping an uncooked pizza on to the floor, getting dough cemented into all the tiles of our kitchen.</p>

<p>There was a reason though. Dough IS a craft. It's something that comes with practice, with patience and study, with attention. Once you give into it though it can be an incredible experience.</p>

<p>What is Dough then?</p>

<p>Flour + Water.</p>

<p>The ratio of flour to water is called hydration. This is one of the primary factors that determines what kind of dough you're making. It also determines how much the dough is going to stick to you and everything else.</p>

<p>Flour + Water + Yeast + Heat = Bread</p>

<p>Yeast, which at its most basic is a living organism that turns sugar into gas, is the magical ingredient that makes flour and water turn from a flat mess into an airy wonderful castle of bread.</p>

<p>And yes, you can buy yeast at a store, but yeast is everywhere around us. Its in the flour itself, you just have to coax it out with my favorite ingredient: Time. Combine an equal quantity of water and flour, 200g each.</p>

<p>An Aside- Yes, I said grams. If you want to make bread, get a scale. Sure you might not have one when you're making bread in the wasteland - but for now, its necessary. If you care about the fact that in iOS6 the navigation dots were a couple pixels off center, but you don't weigh you're ingredients ... You're doing it wrong.</p>

<p>OK. So you mix half water, half flour. You let it sit for four days. It starts to get funky. You've created a monster. A living farm of yeast bacteria. So now you have to feed it. Every day you throw out 90% of it, and replace it with 50/50 water and flour. You do this every day. This is your starter.</p>

<p>Then, you take your farm, and you mix it with more flour and water.</p>

<p>750g Water
700g White Flour
300g Wheat or Bread flour
200g of Starter</p>

<p>You mix it by hand, you touch it, you feel it. You love it. This is your life, your craft. Fucking get into it.</p>

<p>This is where the failure comes in, where its so easy to fuck up, yet so easy not to as well. All it takes is attention and practice.</p>

<p>You form it, you let it rise. You bake it.</p>

<p>You've done it. You have taken some of the most simple ingredients on earth, captured them, and turned them into something 1000 times more than its parts. That is craft at its most primal.</p>

<p>Making dough has taught me how to fail. Not gracefully at first - there was cursing and throwing things across the kitchen. But these simple ingredients can become an art, and if you learn how to fail, you will eventually learn how to succeed.</p>

<p>So please, learn to make some dough.</p>

<hr />

<p>If you're really interested in making dough, these are the people and books that taught me:</p>

<ul>
<li><a href="http://www.amazon.com/Tartine-Bread-Chad-Robertson/dp/0811870413">Tartine Bread</a></li>
<li><a href="http://www.amazon.com/Bread-Bakers-Book-Techniques-Recipes-ebook/dp/B00B29XZVY/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1399424071&amp;sr=1-1&amp;keywords=bread+hammelman">King Arthur Flour Bread</a></li>
<li><a href="http://www.amazon.com/Crust-Crumb-Master-Formulas-Serious-ebook/dp/B004IK8Q9A/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1399424108&amp;sr=1-1&amp;keywords=crust+and+crumb">Crust and Crumb</a></li>
<li><a href="http://www.amazon.com/Frankies-Spuntino-Kitchen-Companion-Cooking-ebook/dp/B00ESCON7C/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1399424168&amp;sr=1-1&amp;keywords=frankies+spuntino">Frankies (Pasta)</a></li>
<li><a href="http://www.amazon.com/A16-Food-Wine-Nate-Appleman/dp/1580089070/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1399424193&amp;sr=1-1&amp;keywords=a16">A16 (Pizza)</a></li>
</ul>
]]></content:encoded>
			</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk: enhanced
Database Caching using disk
Object Caching 954/1119 objects using disk

 Served from: www.quirkey.com @ 2026-03-24 02:36:09 by W3 Total Cache -->