{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/2015/12/31/2015-year-in-review",
    "result": {"data":{"site":{"siteMetadata":{"title":"your friend Joel's digital garden","description":"Articles and notes from a collaborator at egghead.io. Musings on software, business, and life from a skilled virtual assistant.","author":{"name":"Joel Hooks"},"keywords":["Video Blogger"]}},"mdx":{"excerpt":"It’s been two years since I woke up dreading a workday. And I work almost every day. When we first set out to build egghead, I told my parter John that all he had to do was make amazing content, and that  I would do the rest . {% emoji…","fields":{"github":"https://github.com/joelhooks/joelhooks-com/tree/master/content/legacy_blog/2015-12-31-2015-year-in-review.markdown"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"layout\": \"post\",\n  \"title\": \"2015 Year in Review\",\n  \"date\": \"2015-12-31T00:00:00.000Z\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"It\\u2019s been two years since I woke up dreading a workday.\"), mdx(\"p\", null, \"And I work almost every day.\"), mdx(\"p\", null, \"When we first set out to build egghead, I told my parter John that all he had to do was make amazing content, and that \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"I would do the rest\"), \".\"), mdx(\"p\", null, \"{% emoji flushed %}\"), mdx(\"p\", null, \"For the most part, I took that very seriously, and wore all of the hats for a long time.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Systems engineering\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Front end development\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Back end development\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Quality Assurance\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Developer Operations (DevOps)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Customer Support\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Marketing\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Search Engine Optimization\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Copy Writer\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Enterprise Sales\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Talent Scout\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Evangelist\")), mdx(\"p\", null, \"So many hats.\"), mdx(\"p\", null, \"When you bootstrap a business, meaning you build a business from the profits of the business, and not with debt or outside investment, it creates an interesting situation. How do you get all of those things done, if you don\\u2019t have the money to pay somebody to do them?\"), mdx(\"p\", null, \"The answer is, do them yourself. The \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"reason\"), \" I learned how to write software was so that I could apply it to my own business.\"), mdx(\"p\", null, \"But wearing all those hats eventually gets tiring, believe it or not ;)\"), mdx(\"p\", null, \"There are two hats I\\u2019ve never worn with this business, and that is bookkeeper and accountant. From \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"day one\"), \" I\\u2019ve had somebody that has taken care of that, and our compliance is spot on and the source of exactly 0 stress.\"), mdx(\"p\", null, \"Outside of the books, 2015 has been the year of slowly relinquishing control by bringing in awesome people to help.\"), mdx(\"p\", null, \"First and foremost, is my partner John. Sure, our deal was that he\\u2019d be in charge of making content. And that still the case, except he\\u2019s in charge of making sure the content is amazing for the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"33 instructors\"), \" we\\u2019ve added to the roster since egghead became a business.\"), mdx(\"p\", null, \"We\\u2019ve paid out almost \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"$500,000 in royalties to date\"), \".\"), mdx(\"p\", null, \"I\\u2019m so proud of what John and I have built, and out of all the metrics (and I track EVERYTHING), that is the one that fills me with the most joy.\"), mdx(\"h3\", null, \"The inbox fills me with pain.\"), mdx(\"p\", null, \"So, a confession, I\\u2019m not very good at a lot of the jobs in the list above. In particular, I make a horrible customer service representative. I\\u2019m short tempered. I\\u2019m a smartass. I\\u2019ve got a low tolerance for repetition. My brevity can come across as rude... the list goes on.\"), mdx(\"p\", null, \"And my inbox is the primary target for all incoming communication from thousands of paying customers and tens of thousands of potential customers.\"), mdx(\"p\", null, \"It was crushing my soul.\"), mdx(\"p\", null, \"Until Gina, this amazing woman who seems to genuinely love interacting with people and helping to make them happy. Who has sympathy for their problems, and works to make it right.\"), mdx(\"p\", null, \"Who filters my inbox into a tidy list of things that I need to take care of.\"), mdx(\"p\", null, \"Inbox 0. Twice a day.\"), mdx(\"p\", null, \"{% emoji emoji1f496 %}\"), mdx(\"p\", null, \"It was a game changer, and lifted a massive weight from my shoulders.\"), mdx(\"p\", null, \"We also started using intercom.io heavily, and that has been wonderful as well as a way to take the conversation out of the inbox, and into something that is simply easier to manage and more pleasant for everybody involved.\"), mdx(\"h3\", null, \"Working directly with those that inspire\"), mdx(\"p\", null, \"As egghead has steadily grown, we\\u2019ve seen more revenue over time. In 2015 this reached the point that we could hire some amazingly brilliant consultants to help us push the accelerator down a bit further.\"), mdx(\"p\", null, \"Brennan Dunn is a friend and mentor, that was integral in the origin story of egghead. His books and classes inspired me, and directly led to the tipping point where I said \\u201Cfuck this\\u201D and started my own business.\"), mdx(\"p\", null, \"For the first 6 months of 2015, I had the pleasure of working with Brennan on marketing egghead.io, and it was awesome. Brennan helped to double our email list size, and taught me some killer techniques that I will use for years to come.\"), mdx(\"h3\", null, \"Hunting Unicorns\"), mdx(\"p\", null, \"This summer we found ourselves in an interesting position. We could hire somebody full-time to work with me developing the egghead platform.\"), mdx(\"p\", null, \"Leonard Souza started working with us on July 1st, 2015. About 10 days later, I basically went on vacation for 3 months. hah\"), mdx(\"p\", null, \"Leonard held it together and started shipping amazing features for our users without a lot of direct interaction with me.\"), mdx(\"p\", null, \"That is wonderful and amazing.\"), mdx(\"h3\", null, \"Cherry on top\"), mdx(\"p\", null, \"Towards the end of the year, we engaged Nick Disabato to help us with some targeted testing and revisions for the egghead.io website. That has gone extremely well, and we\\u2019ve doubled down and brought nickd on for a more in depth longer term engagement.\"), mdx(\"p\", null, \"I\\u2019m so excited about this, because nickd is fantastic to work with, and the project is exciting and fun.\"), mdx(\"p\", null, \"Instead of waking up dreading my workday, I wake up pinching myself, exciting to go to work with an amazing team filled with people that challenge me and are excited to work on this business that we\\u2019ve built from the ground up.\"), mdx(\"h3\", null, \"Building a community\"), mdx(\"p\", null, \"One of the most interesting outcomes of building egghead has been the community. We invite our instructors and potential instructors into a Slack chat room. We do this so we can discuss lessons and courses, and mentor people that haven\\u2019t published a lesson yet get a lesson published.\"), mdx(\"p\", null, \"The result of this is an amazing chat filled with smart and inspiring people from around the world.\"), mdx(\"p\", null, \"It\\u2019s precious to me, and like many aspects of this adventure, fills me with amazement that it even exists!\"), mdx(\"h3\", null, \"What\\u2019s next in 2016\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Publish lessons from our first women instructors.\")), mdx(\"p\", null, \"It is frustrating. We are working on it. The ratio of women to men in technology is already embarrassingly low. Add \\u201Cscreen casting\\u201D as a requirement to that, and the barrier to entry gets very tall.\"), mdx(\"p\", null, \"It will happen! Soon.\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Expand past JavaScript.\")), mdx(\"p\", null, \"We love JS! It\\u2019s been tricky, growing the content that we offer without alienating the core base of customers. It has been a goal since the beginning, but this year you will see egghead lessons on Elm, ClojureScript, CSS, and perhaps other interesting emerging technologies. Fun times.\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Double down (again) investing in smart people.\")), mdx(\"p\", null, \"We want to evolve our platform into something amazing that empowers people across the globe to learn new skills and achieve a better life for themselves and their families. We want to continue delivering content in an aggressively free manner, and carve learning paths through the confusing jungle that is programming computers.\"), mdx(\"h2\", null, \"Beyond work\"), mdx(\"p\", null, \"Well, one thing I didn\\u2019t do in 2015 was blog. The last post here was my year in review for 2014. I don\\u2019t know if that will change much in 2016, we will see. I actually have a lot of things to say about building a business, running a business, online learning, programming computers, raising kids\\u2026 I just keep it to myself.\"), mdx(\"p\", null, \"We had some amazing travel. We road tripped to Portland through Zion National Park (amazing). Unfortunately on the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"first morning\"), \" in our Portland rental house I slipped on the stairs and slammed down into my ribs. Broken ribs take a long, long time to heal. They still hurt after 7 months. Needless to say, it put a damper on the trip. I limped through it and powered through some light hiking.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/3c392w0q3Z252B0S3634/Screen%20Shot%202015-12-31%20at%2012.21.23%20AM.png?v=ed8c5e7f\",\n    \"alt\": \"pain\"\n  })), mdx(\"p\", null, \"In July, I spent the week in the mountains of Colorado near Aspen creating art on computers and using LASERS with Joshua Davis. Seriously, fuck ya. It was awesome. I brought my oldest kid (17) to the class, and we had a great time making art for a week. Definitely going back again in 2016.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/2S2j151M143e2p2n2b3b/Screen%20Shot%202015-12-31%20at%2012.13.13%20AM.png?v=01b61796\",\n    \"alt\": null\n  })), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/0o1T3g3j2w1v2d3H3I11/Screen%20Shot%202015-12-31%20at%2012.13.52%20AM.png?v=3c9ab9d4\",\n    \"alt\": null\n  })), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/1h1b1l0q0K0S190y3S47/Screen%20Shot%202015-12-31%20at%2012.19.35%20AM.png?v=cb19ca61\",\n    \"alt\": null\n  })), mdx(\"p\", null, \"In August we set out on our longest family trip to date spending a full month on Lake Champlain in Vermont. It was amazing. Hiking, boating, laying about\\u2026 A really wonderful time.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://farm1.staticflickr.com/666/21139340466_207b33dd92_b.jpg\",\n    \"alt\": \"The Family with “Adventure Dad”\"\n  })), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://farm1.staticflickr.com/565/20932223601_e99d5e3f9f_b.jpg\",\n    \"alt\": \"A month of this…\"\n  })), mdx(\"p\", null, \"My friend Jon tricked me into slaughtering and butchering a pig for a whole hog dinner.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/2X0y1c3f1g2Y410p181c/Screen%20Shot%202015-12-31%20at%2012.07.47%20AM.png?v=8346758c\",\n    \"alt\": \"Let’s do this.\"\n  })), mdx(\"p\", null, \"It was quite the experience. As we are using a knife to scrape the fur off the pig\\u2019s skin, we ask his brother the hog farmer, \\u201CHow do you usually do this?\\u201D\"), mdx(\"p\", null, \"\\u201CI\\u2019ve never done that. I just pay a guy $40.\\u201D\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/100J0B2v1w3g3D0W3g2j/Screen%20Shot%202015-12-31%20at%2012.08.47%20AM.png?v=b076bb38\",\n    \"alt\": \"Killing it myself didn’t make it taste better.\"\n  })), mdx(\"p\", null, \"Fuck you Jon. I love you, lol.\"), mdx(\"p\", null, \"Kristina and I spent a week in London, that was great.\"), mdx(\"p\", null, mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://s3.amazonaws.com/f.cl.ly/items/0T1S3U2l3h1C1j2n0e0p/Screen%20Shot%202015-12-31%20at%2012.12.01%20AM.png?v=23fcb13e\",\n    \"alt\": \"hello large clock!\"\n  })), mdx(\"h2\", null, \"Eating well\"), mdx(\"p\", null, \"Last year I was super proud to report that I lost 50 pounds. I found 25 of it! hah. I\\u2019d like to blame it on the rib injury, but mostly candy is delicious.\"), mdx(\"h2\", null, \"Cigarettes smoked\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"0\")), mdx(\"p\", null, \"0mg of nicotine since October 2014.\"), mdx(\"p\", null, \"It\\u2019s \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"wonderful\"), \".\"), mdx(\"h2\", null, \"Professional Skills\"), mdx(\"p\", null, \"I spent the year working with React and learning RxJS. I focused on functional programming, and the last two months of the year I\\u2019ve been shouldering into Clojure. It\\u2019s been great, and I feel like I\\u2019m finally making progress. This is going to continue to be my goal for 2016. I\\u2019d like to get good at Clojure, and deploy my first real piece of software (for egghead) built on Clojure!\"), mdx(\"p\", null, \"A nice side effect of wearing all the hats. I get to make zany tech decisions based on what I think is cool at the time! ;)\"), mdx(\"h2\", null, \"Move\"), mdx(\"p\", null, \"2016 is going to be the year we leave Texas. It\\u2019s been a long time coming and I\\u2019m stoked that the wheels are in motion. 35 years in North Texas is baffling to me. I\\u2019ve wanted to leave for 23 of those!\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"2015 Year in Review","date":"December 31, 2015","banner":null,"slug":null,"keywords":null}}},"pageContext":{"id":"123cb5d0-32dc-52ee-89c1-94ee10149488","prev":{"id":"493e8c7c-a6cd-5985-993f-b224a7e193d3","parent":{"name":"2016-03-20-build-an-image-gallery-using-redux-saga","sourceInstanceName":"legacy"},"excerpt":"Building an Image Gallery The image gallery we will build is a simple application that displays an array of image URLs loaded from a service (Flickr), and allows the user to select them individually. It will be built with React, using Redux and redux…","fields":{"title":"Build an Image Gallery Using React, Redux and redux-saga","slug":"blog/2016/03/20/build-an-image-gallery-using-redux-saga","date":"2016-03-20T00:00:00.000Z"}},"next":{"id":"9a697976-9642-5e56-a7a6-59fd756ecc73","parent":{"name":"2014-12-24-bootstrapping-egghead-dot-io-to-feed-my-family-2014-in-review","sourceInstanceName":"legacy"},"excerpt":"2014 Year in Review It's that time of the year. People dusting off the blog and endeavoring to capture the past 12 months of their life in a wordy nutshell. It's something that I've never participated in, but I thought I'd give it a try. I quit my…","fields":{"title":"Bootstrapping egghead.io to feed my family: 2014 in Review","slug":"blog/2014/12/24/bootstrapping-egghead-dot-io-to-feed-my-family-2014-in-review","date":"2014-12-24T00:00:00.000Z"}}}},
    "staticQueryHashes": ["1045846374"]}