# Jared Wray > CEO and Founder of Hyphen AI, Inc. Empowering developers to seamlessly build, deploy, and manage applications. ## About - Personal site: https://jaredwray.com - GitHub: https://github.com/jaredwray - LinkedIn: https://linkedin.com/in/jaredwray - X: https://x.com/jaredwray ## Open Source Projects - [Keyv](https://github.com/jaredwray/keyv): Keyv provides a consistent interface for key-value storage across multiple backends via storage adapters. It supports TTL based expiry, making it suitable as a cache or a persistent key-value store. - [Cacheable](https://github.com/jaredwray/cacheable): With over 1bn downloads a year Cacheable provides a robust, scalable, and maintained set of caching packages that can be used in various projects. - [Fumanchu](https://github.com/jaredwray/fumanchu): Handlebars + Handlebars-helpers (helpers are now maintained in this project) combined into a single package. Easily use in your nodejs or browser projects as it is a drop in replacement when using handlebars directly. - [Writr](https://github.com/jaredwray/writr): Writr is a simple and easy to use markdown rendering engine that is designed to be used in a variety of ways and is very flexible. - [Ecto](https://github.com/jaredwray/ecto): Modern Template Consolidation Engine for EJS, Markdown, Pug, Nunjucks, Mustache, and Handlebars. - [Docula](https://github.com/jaredwray/docula): Docula makes generating a website for your projects simple and beautiful. Keep your data in GitHub, but still have an amazing site for your project. - [Airhorn](https://github.com/jaredwray/airhorn): Airhorn makes it easy to send SMS, SMTP, Webhooks, and mobile push notifications easily using templates through your standard cloud providers. We focused on making it cloud native by default (using cloud services). - [Hookified](https://github.com/jaredwray/hookified): Hookified is a simple and easy to use event emitting and async middleware hook system. It is designed to be used in a variety of ways and is very flexible. - [mockhttp](https://github.com/jaredwray/mockhttp): Mockhttp is a simple and easy to use http server that can be used to mock out http requests and responses. It is designed to be used at mockhttp.org, docker (jaredwray/mockhttp), or in your own npm projects. - [fastify-fusion](https://github.com/jaredwray/fastify-fusion): Fastify API framework with best practices and plugins fused together to make it easy to build and maintain your API with features such as static paths, logging, CORS, Helmet, Swagger, etc. - [qified](https://github.com/jaredwray/qified): Qified is a simple and easy to use consolidation library for messaging queues such as RabbitMQ, Redis, and Nats. It is designed to be used in a variety of ways and is very flexible. - [qrbit](https://github.com/jaredwray/qrbit): Qrbit is a fast QR code generator with logo embedding support, built with Rust and native node packages for best performance while avoiding additional modules (example: canvas). - [memcache](https://github.com/jaredwray/memcache): memcache is a nodejs client for the memcached server built for use in @keyv/memcache with minimal dependencies, clustering capabilities, hooks, error emitting, and maintained regularly. - [hashery](https://github.com/jaredwray/hashery): Hashery is a robust and moderm object hashing provider that works in browser and nodejs for hashing and slot / number alocation. It includes multiple providers such as SHA-256, SHA-512, DJB2, MURMER, CRC32, and more. ## Blog Posts ### Today is an Amazing Day for Eric Branner and the Fons Team! Date: Thu Jan 05 2023 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Fons, Startup URL: https://jaredwray.com/blog/congrats-to-the-fons-team/ As an investor, I'm thrilled to announce that Fons, a startup that provides small to medium businesses with an easy scheduling and billing platform, is being acquired by Make Music, the largest music teacher platform around. Fons has been hard at work for the last 7 years building something truly amazing. Their platform makes it easy for businesses to schedule appointments and manage billing, freeing up time and energy to focus on what they do best. Now, as part of the Make Music family, Fons will be able to reach even more businesses and continue to make a positive impact on their operations. It's a win-win for everyone involved. As we reflect on the journey of building Fons, there are a few key lessons that stand out that we believe can benefit other founders. First and foremost, it's essential to focus on the customer. We've found that tools like FullStory, Intercom, and working directly with customers have been invaluable in helping us understand their needs and pain points. By putting the customer at the center of everything we do, we've been able to build a product that truly resonates with them. We also learned that it's okay to try different models to see what works. When we first started out, we experimented with a free model, but we quickly learned that without a monetary commitment it slowed down conversion as each provider needed to migrate their clients. This taught us the importance of finding a pricing strategy that works for both the customer and the business. Finally, we learned that building a platform to scale is easier now than it's ever been. A decade ago to make something scalable and highly available it took an army of operations, data center understanding, and architectural planning. Now, with modern cloud architecture we were able to build a scalable platform with a small team. This is a testament to the power of modern cloud infrastructure and the tools that are available to us today. I want to personally congratulate Eric, Troy, Kyle, Mica, and Jenn on this exciting new chapter. Their hard work and dedication has paid off and I can't wait to see what the future holds for them. As an investor and founder, I've seen firsthand the ups and downs of startup life. It's a rollercoaster ride that can be exhilarating, but also filled with challenges and setbacks. But one thing I've learned is that building something from nothing takes time. It requires patience, persistence, and a lot of hard work. The Fons team exemplifies this. Over the last 7 years, they've poured their hearts and souls into creating a product that helps small to medium businesses thrive. And today, all of their hard work has paid off. So to all the founders and entrepreneurs out there, keep going. It won't always be easy, but the rewards of building something truly amazing are well worth the journey. [Read more about it here](https://www.makemusic.com/press-room/press-releases-2023/makemusic-acquires-fons/) --- ### Keyv Now with Etcd Date: Wed Feb 23 2022 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Keyv, Open Source URL: https://jaredwray.com/blog/keyv-now-with-etcd/ We’re excited to announce that keyv now fully supports etcd. This is an exciting development for anyone who uses etcd in their current tech stack. ## What is keyv? keyv is a simple key-value storage system with support for multiple backend adapters (MySQL, PostgreSQL, SQLite, Redis, Mongo, DynamoDB, Firestore, Memcached, and more). keyv continues to be popular and has been used by over 2 million different packages and libraries. There also continues to be a high number of monthly downloads, almost 70 million a month. keyv uses a familiar Map-like API complete with set, get, delete, and clear methods. This API is Promise-based, meaning these methods return Promises that resolve with the data instead of immediately returning data. keyv supports TTL-based expiry, making it suitable as a cache or a persistent key-value store. This made support for etcd possible. ## What is etcd? [Red Hat](https://www.redhat.com/en/topics/containers/what-is-etcd) provides an excellent definition for etcd: “etcd (pronounced et-see-dee) is an open-source, distributed, and consistent key-value store for shared configuration, service discovery, and scheduler coordination of distributed systems or clusters of machines. etcd helps to facilitate safer automatic updates, coordinates work being scheduled to hosts, and assists in the set up of overlay networking for containers. etcd is a core component of many other projects”. You may have encountered etcd without even realizing it. etcd is the primary datastore of Kubernetes. Like all distributed workloads, containerized workloads bring can be difficult to manage, and this difficulty only increases as the workload scales. Kubernetes simplifies the process of managing these workloads by coordinating tasks such as configuration, deployment, service discovery, load balancing, job scheduling, and health monitoring across all clusters, which can run on multiple machines in multiple locations. In order to achieve this, Kubernetes needs a data store that provides a single, consistent source of the truth about the status of the system. It needs access information on all of the clusters and pods and the application instances within them at any given point in time. etcd is the data store used to create and maintain this version of the truth. ## Using keyv with etcd You can have etcd set up to work alongside keyv in a few lines of code. First, make sure you have keyv installed: ```javascript npm install --save keyv ``` Next, Install the storage adapter: ```javascript npm install --save @keyv/etcd ``` Then, create a new Keyv instance, passing your connection string if applicable. keyv will automatically load the correct storage adapter. ```javascript const Keyv = require('keyv'); const keyv = new Keyv('etcd://localhost:2379'); ``` Finally, set up error handling: ```javascript keyv.on('error', handleConnectionError); ``` ## Summary We’re proud to say that etcd is one of the official storage adapters supported by keyv that are covered by over 150 integration tests to guarantee consistent behavior. These official storage adapters are lightweight, efficient wrappers over the DB clients making use of indexes and native TTLs where available. With etcd being fully supported by keyv, we’re excited to see how developers are going to make use of this new feature. --- ### The Cost of High Availability Date: Wed Jun 23 2021 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing, DevOps URL: https://jaredwray.com/blog/the-cost-of-high-availability/ 99.99% availability, also known as four nines availability, requires a system to only have 52.60 minutes of downtime per year, which corresponds to 4.38 minutes of downtime per month. It is the most achievable and optimal availability model for most systems. When cloud computing entered the market, 99.99% availability cost a lot of money. Obtaining 99.9% availability could cost thousands per month, with 99.99% availability usually costing tens of thousands per month. The magnitude of cost when it came to 99.999% availability was around a whopping 100k per month! Achieving 99.99% availability several years ago required the following items: * A DNS Anycast with Load Balancing with a minimum price of $3k per month. * Data centers or cloud service providers with multiple instances, with a minimum price of $10-20k per month. * A scalable, database layer with active/passive configurations. If replication was required, there was a need to purchase an enterprise license which incurred additional costs. This totaled to a minimum cost of $30k per year or $2.5k/month. * A full-time, fully dedicated team to handle the entire infrastructure and ensure that the system remains scalable. Needless to say, achieving high availability was both time consuming and expensive, costing approximately $25k/month and requiring a dedicated team to handle the entire infrastructure. With the advent and increased popularity of cloud computing and the increasing need to make cloud environments more scalable, the costs of having high availability systems has dramatically decreased. What would previously cost around $25k/month, now costs less than $1.2k/month. ## Low cost cloud computing setup Here is how you can achieve 99.99% availability for less than $1.2k per month: * **Cloud Flare**: Cloud flare offers cost-effective load balancing. You can also use it for CDN and firewall, and this entire offering will cost you just $250 per month. * **Dual region AWS (EKS or Beanstalk) or Google Cloud (Cloud Run)**: Both dual region AWS or Google Cloud are your best bets for storing data in the cloud. * **MongoDB Atlas Global Cluster**: Mongo Atlas Global Cluster is a scalable database layer that won't break the bank Service vs Size of Organization Small Medium Large Cloudflare Pro + Load Balancing ~ $30/Month $250 + LoadBalancing ~ $300/Month Enterprise (Call) Depends on size and requirements Cloud Run or EKS ~ $70/Month ~ $200/Month ~ $1000/Month MongoDB Atlas ~ $75/Month M3 Multi-Region ~ $800/Month ~ $3000/Month If you are a medium-sized organization, you can achieve 99.99% availability with less than $1.2k per month. With the current cloud computing offerings and tools in the market, you should be able to achieve 99.99% availability for a relatively low cost. This should increase customer satisfaction and retention, and enable the continual growth of your business. --- ### Google Cloud Scheduler Create Job Quick Reference Date: Tue Jun 15 2021 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Google Cloud, Cloud Computing URL: https://jaredwray.com/blog/google-cloud-scheduler-create-job-quick-reference/ Google Cloud has a cloud based CRON job system which is highly scalable and resilient so you do not have to build it yourself. Here is a quick guide on how to use it. First, let's start with the CRON scheduling. Even with it is hard to know how to set the time correctly, so here is a cheat sheet to get you started: - Every Minute: `* * * * *` - Every 5 Minutes: `*/5 * * * *` - Every 15 Minutes: `*/15 * * * *` - Every 30 Minutes: `*/30 * * * *` - Every Hour: `*/60 * * * *` - Every Day at 6:30 AM: `30 6 * * * *` - Every Day at 5:30 PM: `30 17 * * * *` - Monthly on the 1st at 5:30PM: `30 17 1 * *` The first step is to go into the Google Cloud Console and enable the service. This is required before you do anything. Then, you can set up a job via console or CLI. Here is how you set it up via the console 👉 [Creating and configuring cron jobs  |  Cloud Scheduler Documentation (google.com)](https://cloud.google.com/scheduler/docs/creating#console) Using the gcloud CLI is here, but it is a bit complex: [gcloud scheduler jobs create http  |  Cloud SDK Documentation (google.com)](https://cloud.google.com/sdk/gcloud/reference/scheduler/jobs/create/http) To make this easy here is a simple command to use to get the majority of it working: ```yaml gcloud scheduler jobs create http {name_goes_here} --schedule="{cron_schedule}" --uri="{url_to_hit_when_ran}" --http-method="post" --headers="Content-Type=application/json,User-Agent=Google-Cloud-Scheduler" --time-zone="America/Los_Angeles" ``` - {name_goes_here} - any name you want to use - {cron_schedule} - any of the examples above such as "* * * * *" for every minute Easy to use and something you no longer have to manage. Here is a quick loom to help also 📺 [here](https://www.loom.com/share/f4b53639b63f4a8d8846b4cd24101dcf). --- ### Contrib: Enabling Direct to Fan for Charities Date: Sat Jun 12 2021 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Contrib, Startup URL: https://jaredwray.com/blog/contrib-enabling-direct-to-fan-for-charities/ Contrib is a digital fundraising platform that empowers influencers to engage with their fans, raise money for important charities, and make a direct and meaningful impact in their communities. Contrib was originally founded by MLS superstar Brad Evans, who previously played for Seattle Sounders. Brad decided there had to be a better way for athletes / influencers to connect with fans while also raising money for great causes. And so, [Contrib](https://contrib.org) was born. ## How it works Contrib creates a direct link between an athlete and their fans. Athletes can select the charities they’re passionate about. Currently, when an athlete’s memorabilia is auctioned for charity, it can be quite a lengthy and time-consuming process. Contrib changes this. Imagine the following scenario: An athlete plays the game of their life, like a soccer player scoring a hat trick. Walking off the field at the end of the game, they record a video saying the jersey they’re wearing is going to be signed and auctioned for an amazing charity of their choosing. They post it on Contrib and uses their social network to notify their fans to start bidding. It’s as simple as that! ## Why Contrib? I am one of the lead investors and an advisor. There are two main aspects of Contrib that excite me greatly. The first is the unique pairing of an athlete’s fanbase and an auctioning system. Nobody has built this type of process involving a player’s following before. The novel combination of a player’s fan base being used in conjunction with an auction as a force for good, raising money for foundations that the athletes themselves care about, excites me greatly. The second is our commitment to a non-profit approach. Contrib is purpose driven to enable Charities and via this plaform they can now have access to constant donations instead of waiting for a single auction night. 🚀 --- ### Writr now powered by Ecto!!! Date: Tue May 04 2021 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Ecto, Open Source, Writr URL: https://jaredwray.com/blog/writr-now-powered-by-ecto/ [Writr](https://github.com/jaredwray/writr) is a simple-to-use blogging system that until now only supported Handlebars. After its integration with [Ecto](https://github.com/jaredwray/ecto), we now support all the popular template engines such as  EJS, Nunjucks, Pug, Markdown, and Mustache. Here's an example of how Writr works with EJS. **Install Writr using the following command:** *npm install -g writr* The blog directory comprises of the following files: ``` blog/*.md               // for your markdown files blog/images            //for the blog images blog/config.json      // for configuration of the blog blog/templates       //template directory which allows you to select the desired template engine ``` **Every instance of Writr requires three template files** to be placed inside the/blog/templates directory. The three template files are: ·  Index – the main template that lists the index of the latest blogs you want to add ·  Post – the post that you want to publish ·  Tag – to show articles by tag filtering To use Writr with EJS, you should include index.ejs, post.ejs, and tag.ejs files under your blog/templates file. **Here is an example of the index.ejs file:** ``` "> - Tags: "> ``` **Here is an example of the index.ejs file:** ``` Post 3 ``` **Here is an example of the tag.ejs file:** ``` Tag: - ``` **Enter your desired .md files in the *blog* folder and your images in the *images* folder.** Your final directory structure will look like this: - templates - index.ejs - tag.ejs - post.ejs - config.json - images - _ blog post 1.md_ - _ blog post 2.md_ **Run the command writr --path ./blog** to build the output of the files. The outputs are available in the **./blog_output** folder. Creating a blog with your desired template in Writr is easy. With support for several template engines, it is now even easier to create simple and elegant blogs. --- ### Introducing Ecto - A modern template consolidation javascript library for EJS, Handlebars, Markdown, Pug, and more! Date: Wed Mar 17 2021 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Ecto, Open Source, Coding URL: https://jaredwray.com/blog/introducing-ecto-template-consolidation/ ## What is Ecto? Template engines have long been used to simplify code and to use static template files in an application. With template engines, you can easily feed data into variables and compile them into HTML. **Ecto** is a modern template consolidation engine that works with top template engines like EJS, Markdown, Pug, Nunjucks, Mustache, Handlebars, and Liquid. It consolidates all these template engines to a single library, allowing you to use any of these with ease. With capabilities like Automatic Engine Selection, easy-to-use API, zero-configuration needs, and regular updates, you can rest assured that Ecto works as expected for all your templating needs. ## What are the top template engines used? There are a huge number of template engines being created every day, and most of them are all over the place. Some of these engines have limited type definitions and are not maintained making them unpopular. On drilling down further, we found that the following engines are the most popular ones which handle a vast majority of cases. Engine Downloads EJS Approximately 36M times /month Markdown Approximately 18M times/month Pug Approximately 5M times/month Nunjucks Approximately 1.3M times/month Mustache Approximately 8.5M times/month Handlebars Approximately 313K times/month Liquid Approximately 302K times/month There is a good reason why these template engines are this popular. It is because these engines have supported packages, are updated regularly, and are easy to validate. Needless to state, these are the most used engines and the only ones that matter. ## How does Ecto compare with _Consolidate.js_? The template engine consolidation library _Consolidate.js_ has also been around for quite some time. However, some issues with it make it unsuitable for most cases. For one, _Consolidate.js_ is not scalable. It requires you to load packages with the same key name according to the order number. For example, consolidate uses dust engines in the order _dust_ > _dustjs-helpers_ > _dustjs-linkedin_. So, if _dustjs-helpers_ is installed, _ConsolidateJs_ does not use _dustjs-linkedin_. Additionally, a lot of its packages are unmaintained (_dust_), have security issues (_eco_), have been deprecated (_jqtpl_), or will not add new features (_liquid_), making it unreliable, to say the least. Ecto on the other hand promises monthly upgrades and is highly maintained. This is because it focuses on the top engines, thus reducing the risk of being unmaintained or deprecated. It is flexible, easy to use, and selects engines automatically, thus reducing the need to select an engine every time it is to be used. Ecto not only supports the top template engines but also allows support for multiple engines at the same time. ```javascript let ecto = require("ecto").create(); let handlebarsOutput = await ecto.renderFromFile("./handlebars-example.hbs"); let markdownOutput = await ect.renderFromFile("./markdown-example.md"); ``` ## How to use Ecto? Getting started with Ecto is easy. Ecto has two major easy-to-use APIs. The API uses the main Ecto class and has two functions _render_ and _renderFromFile_. All commands are written in TypeScript. **render(async)** has the following parameters: * **source:string** – the markup/template source that you want to render * **data?:object** – data to be rendered * **engineName?:string** – used to override the _Ecto.defaultEngine_ parameter. * **rootTemplatePath?:string** – used for _partials _and _layouts_ * **filePathOutput?:string** - the path where you want to write the rendered output **renderFromFile (async) **renders from a file path by auto-selecting the engine based on the extension of the file. It returns a Promise<string> of the output. It has the following parameters: * **filePath?:string** – the file you want to render * **data?:object** – data that you want to render * **rootTemplatePath?:string** – used for _partials _and _layouts_ * **filePathOutput?:string** – the path where you want to write the rendered output * **engineName?:string** – used to override the _Ecto.defaultEngine_ parameter ## Getting Started ### 1. Add Ecto to your project using the command: ```javascript yarn add ecto ``` ### 2. Initialize Ecto and set your default engine using the command: ```javascript Const Ecto = require ("ecto"); Let ecto= new Ecto(defaultEngine: "Nunjucks"); ``` ### 3. Render your engine to Ecto. You can do so by either using render from string or render from a file. **Render from String** You can render your template engine from string easily using the _render_ function: ```javascript let source = "Hello !"; let data = {firstName: "Jane", lastName: "Doe"}; let output = await ecto.render(source, data); console.log(output); ``` If your current engine is not the default engine (i.e. Nunjucks in this case), you can simply set the defaultEngine parameter again, or pass the engine name as a string from the render function. You can also pass partial files of your standard engines (markdown excluded) using this function. To write an output file using the function, you can specify the _filePathOutput_ parameter. Refer to the Ecto readme file for examples. **Render from File** You can render the template engine via a template file using the _renderFromFile _function. It selects the correct engine automatically from the given file extension. ```javascript let ecto = new Ecto(); let data = { firstName: "Jane", lastName: "Doe"}; let output = await ecto.renderFromFile("./path/to/template.md", data); ``` To write an output file using the function, you can specify the filePathOutput parameter. Additionally, you can override the auto-selected engine, and render the template using the overridden engine, by passing the engine name as a parameter. Refer to the Ecto readme file for examples. --- [Now that it is established that Ecto is easy, scalable, and here to stay, download and start using it today!](https://github.com/jaredwray/ecto) --- ### Keep Your Hands Dirty Date: Sun Mar 10 2019 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/keep-your-hands-dirty/ Throughout my career, I have seen many different management styles. Some were more effective than others but, as a founder, there is one management style that must be avoided at all costs. I like to call this style the “clean hands founder”. Many founders are told that they need to step away from the day-to-day business and focus on raising money and promoting the company. While that is important, you should never remove yourself from understanding how your product and company work. Do not think that adding a sales person will double your bottom line. Do not think that adding a CEO means your life will instantly get easier and you can step away from the day-to-day running of your company. In this journey as a founder, the details do matter. You probably worked in a large company before you went to build your dream and found a startup. In such big businesses, you were most likely told that you should specialize. That you should not care about every aspect of the product that you and your team are part of. From the product design and creation, go to market, messaging, sales, and support — you, most likely, only touched on these areas of the business. I distinctly remember a boss I had once at a large company that was the epitome of this strategy. his person was not only in charge of a very large organization, but also building multiple products. There were multiple occasions that this person tried to be the “visionary” for the company — but they were really just good at budgeting. And there were multiple times when we had resets because a deal was done without any knowledge of how the products were actually built. To say this approach caused issues is an understatement. It eventually caused all the talent to lose respect for the company and leave. Don’t be that founder. You must get your hands dirty. You are the beating heart of your company. You have to keep your finger on the pulse. The people joining your company do it because they believe in your vision. Do not forget, that is why they are there. They believe in you and what you are building. When Tier 3 (now [CenturyLink Cloud](https://ctl.io/)) started to really scale I saw myself moving more and more to management of employees and the company. I realized one day how removed I was when one executive called me and let me know that things were not going well — and that it was systemic. That one call really snapped me back to reality. At that point, I dug back in and started to figure out what was going on, and how to make it better. It’s not that you have to be coding everyday, but you need to know how the good stuff grows in your garden and how to help customers engage better. This is one of your advantages over larger companies. You can affect change when you know how it all works. So, don’t get a big head. Don’t take a siloed approach and just focus on following the product all the way through to post sales. Don’t micro-manage. Your customers are incredibly important — but you need to be there to make sure the vision and culture at your company happen. > Every decision you make should be made with your gut. If you stumble over a decision, understand that you can move in a different direction and be nimble with the help of your team. Your team should be quick enough to outmaneuver bigger competitors, but this will only be possible if you stay in the weeds and truly understand how your team works. That’s not all. Finally, hustle like there is no tomorrow. You are here to make something different, so be that difference. Out hustle everybody outside of and inside your company to keep them on their toes — and you with your feet firmly stood amongst the weeds of your company. Be the pacesetter for your team. Understand that you don’t need to understand everything. But understand that, when you close a deal, it’ll go so much better when you understand your company from the product stages all the way to the teams supporting and growing your business. --- ### Introducing Docula! Date: Thu Mar 07 2019 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Docula, Open Source URL: https://jaredwray.com/blog/introducing-docula/ No trick, just a treat! One of the big things that I love is the idea of making documentation (when needed) more of a community effort. In the past I have been in companies that seem to always rely on “customer support” or even specialized “tech writers” to do the documentation. ![](images/introducing-docula-2.jpeg) In my last role we really worked to remove that barrier and allow anybody to contribute but found the tools in place for documentation to be painful. It was usually a very stringent system that required some training or expertise to run. It came with a bunch of approval processes that nobody could remember or follow. Most of all it didn’t allow somebody to just quickly edit and go live. Today I am changing that with the release of [Docula](https://docu.la/). This documentation system allows you to use Github as your core documentation hub so that versioning, pull requests, and all the goodness that is built into this process now works for documentation. Once you edit an article your instance of [Docula](https://docu.la/) can be notified to refresh and will pull the file and changes, index them into search, and make it live. To make it even cooler it also supports the [Open API](https://www.openapis.org/) standard from [Swagger](http://www.swagger.io/) and makes a very nice UI: ![](images/introducing-docula-3.png) It supports Google Analytics via configuration and also Disqus as seen below: ![](images/introducing-docula-4.png) ## How to Get Started In your node.js project go ahead and install Docula’s Express module from NPM: ```javascript npm install docula-ui-express ``` ### Configure Docula Core (Included in Docula Express) First, you should configure Docula’s core docula object. See [Core Configuration](https://docu.la/kb/kb/Configuration/core.md) for reference and available parameters. ```javascript var Docula = require('docula-core'); var DoculaExpress = require('docula-ui-express'); ``` ### Configure API Assuming you have your express app defined in variable app, it’s just a one-liner to install Docula’s API endpoints to a certain path within your application: ```javascript var DoculaExpress = require('docula-ui-express') app.use('/docula-api-base', DoculaExpress.api(docula)); ``` DoculaExpress.api has no special parameters, and returns Express [Router](https://expressjs.com/en/4x/api.html#router)object. ### Configure UI UI configuration is similar to API, except that UI now has a few more parameters for tuning different aspects of supported features. ```javascript app.use('/knowledge-base', DoculaExpress.ui({ apiBase: '/docula-api-base' }); ``` Have a spooktacular time! Check out the web site [https://docu.la](https://docu.la/) for more info --- ### Using GitHub Projects Date: Thu Jan 24 2019 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Productivity, Github URL: https://jaredwray.com/blog/using-github-projects/ The [Fons](https://fons.io/) team decided to use [GitHub Projects](https://github.com/blog/2272-introducing-projects-for-organizations) to organize and prioritize its work — and I just wanted to share some of our experiences with you. To give you some background, Fons is an application that enables independent music teachers, tutors, coaches, and others to run their business easily. They can schedule lessons and bill clients directly. It gets rid of all that time-consuming admin. Our team is small, but we are starting to add more people as Fons scales up. At the moment, we have more than five services running in the backend, and about a dozen or so repositories making up our application. We started doing our Kanban / Agile process using [Trello](https://trello.com/) and then tried out [Waffle](https://waffle.io/). Then, we landed on [Github Projects](https://github.com/blog/2272-introducing-projects-for-organizations) when it came out. The experience has been a mixed bag of (mostly) good, (some) bad and (a lot) of lessons learned. ## The Good #1 A Single Source of Truth GitHub Issues sits at the card’s core — and that’s one of the primary reasons we love it so much. We can centralize all the bugs and features into a single location and, once checked, we can mark the card as closed. Simple. #2 Multiple Repos / Issues to a Single Project This feature was introduced right on the heel of our initial release — and it was a big deal for us. Because we are doing micro-services, many EPIC features live across multiple projects. Now, we can track the entire thing in a single view. It is also really nice that you can have an issue live on various project boards. #3 App Sprawl Removing an app from the equation was such an elegant and simple benefit to us. There was no need to have another browser window open on another site, and everybody already had a GitHub account. ## The Bad #1 Browsing the Details of a Card / Issue Getting to the details of a card or issue is really cumbersome. When you click the card’s link it takes you off the board and into the issue section. This makes a user go from the board to the issue and then back. It is just an all-round bad experience. It would be much better if it let you view the details instantly from the board. #2 Simple Agile Metrics There is no way to set the cost of a card or issue, which makes it very hard to estimate as a team. Another feature that would be great to see is a “Burndown” chart. It’s used everywhere and needs to be added to help us monitor how the Sprint is going on a day-to-day basis. #3 UX Needs a Little Love There are a couple of things that need a little love on the UX side. First, when you enter information into a card and then try to select it — sometimes it just doesn’t work. Second, as you move cards around you can see a delay or lag. You can even lose the positioning. It just needs the sort of polish you see with other boards, such as [Trello](https://trello.com/). Last, the character limits on the card needs extended. When you start off with a note, you usually just want to paste in what you already have and then convert it into an issue later, adding the description and any other information. #4 Project URL My final pet peeve is the URL. I do not like that they use a number to define the URL. Many of us have auto-complete on our browsers and when you start typing a URL to see what’s there you end up with projects coming up as “/projects/1”, “/projects/2”, “/projects/3” and so on. You have no context and can’t figure out which one you want. ## Lessons Learned We enjoy using GitHub Projects and have changed the way we do things to optimize our experience. Here are some of our simple tips and tricks: #1 Cards vs. Issues We found that it is always good to start creating a card as a note first, and then clicking the down arrow to create it as an issue. It’s much faster to do it on the board instead of creating an issue and then adding it to the board. In some cases, we keep them as cards until we start working on them. #2 One Master Board If you are a small team, I would highly suggest working with a single board. At the outset, we thought about splitting it up but, in the end, making a single board that has everything on it was the easiest option. If you have multiple boards, you are constantly going to each board to check the status of a single release. The boards concept could be really amazing when you have multiple teams as, while each one could have their own “master project” board, the product/project owners could have a master board tracking the release of each issue. #3 Kanban Style Simple Kanban style is the way to go as it’s agonizing to hack in estimates, it doesn’t really work. We experimented with tagging for estimates, but it was a real pain. So, in the end, we know that we are a small team and we know what we can get done, so we’ve left that feature out for now. --- ### Internet Privacy for Humans! Date: Thu May 03 2018 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Privacy, VPN URL: https://jaredwray.com/blog/internet-privacy-for-humans/ With the continued uproar surrounding online privacy, you would assume there’d be an easy way to control your privacy settings. But there’s not. It seems like we have little control over our online information. I have been looking into this and the crux of the problem seems to be that the best methods to control our privacy settings are also the most technically confusing. But, if you just carry out a handful of simple tasks, then your privacy will be exponentially better protected. ![](images/internet-privacy-for-humans-2.png) ## Messaging We all love messaging. It’s the number #1 way for most of us communicate, whether that’s through [Facebook Messenger](https://facebook.com/), [WhatsApp](https://www.whatsapp.com/), [Twitter DM](https://twitter.com/), iMessage or SMS on your smartphone. But you need to realize what you are messaging and where to protect your privacy. To keep it simple, I would suggest you use a two-pronged messaging approach where, first, you use a universal messaging tool to communicate things that, quite frankly, are inconsequential if your information was ever breached. For example, a cyber attack that reveals you text message your partner every day to tell them when you’ll get home from work isn’t going to have any impact on your life. Note, if you use iMessage to send text messages to a user with an Android device, those messages are not encrypted. End-to-end encryption only works between iMessage users and still is not encrypted on Apple’s servers. Second, for those messages that you want to secure but still be readily available to the intended party, use [Signal](https://signal.org/). [Signal](https://signal.org/) is an encrypted communications application that works on both iOS and Android. The user interface is easy to use and it is encrypted at all times. It also gives you an internet-based calling service. [WhatsApp](https://www.whatsapp.com/), [Facebook Messenger](https://facebook.com/) and other such popular services may not offer the same level of protection and I wouldn’t recommend them to transmit private and sensitive information. While WhatsApp [now encrypts iCloud backups](http://www.wired.co.uk/article/whatsapp-encryption-end-to-end-turned-on) of your conversations, the Facebook-owned app does [share your data with its parent company](https://www.techadvisor.co.uk/feature/internet/how-secure-is-whatsapp-whatsapp-security-encryption-explained-3637780/). And Facebook Messenger does offer [some security measures](http://time.com/4944373/are-your-facebook-messages-private/) to protect your messages — but Signal is still provides the most comprehensive cover, in my opinion. ## Use a VPN where it makes sense… A VPN can be used to secure and encrypt your communications when you’re using an untrusted public network. In other words, a VPN will guarantee all of the data you send and receive is encrypted and secure from prying eyes. There are also [many reasons](https://www.lifewire.com/reasons-to-use-a-vpn-for-private-web-browsing-2483583) why you should use a VPN for private web browsing. There are a range of VPN providers available. I’d recommend [Private Internet Access](https://privateinternetaccess.com/) or [ProtonVPN](https://protonvpn.com/) as both are easy to setup and configure on your phone and also desktop. Turn it on and just forget about it. If you see some performance issues with streaming your favorite movies, it is pretty easy to turn it off during that time. ## Browser and Search Engine Switch over to DuckDuckGo. [DuckDuckGo](https://duckduckgo.com/) is a search engine that doesn’t track your searches and lets you take control of your online information. For browsers, you should download [Brave](https://brave.com/) or [Firefox](https://getfirefox.com/). These both block a wide range of online trackers and prevent other information that you don’t want to send being transmitted. 95% of all websites work fine with these two privacy browsers. ## Don’t Post stuff that you in 20 years would cringe to see. Yep, if you think you in the future would really have a hard time seeing this because of a job interview, a relationship, or anything else. Just don’t post it! The current social networks ([Facebook](https://facebook.com/), [Instagram](https://instagram.com/), [Twitter](https://twitter.com/)) are going to keep this for as long as possible maybe even forever. You will thank yourself later. Finally, I know there are always more you can do but the point is to start with what is easy to do and can help a ton. If you follow these simple steps, your internet privacy will be protected. How do you protect yourself online? If you’d like to share your tips and experiences, please leave a comment. --- ### Docula: Persistent Links and Styles! Date: Tue Mar 07 2017 19:49:09 GMT+0000 (Coordinated Universal Time) Tags: Github, Open Source, Docula URL: https://jaredwray.com/blog/docula-persistent-links-and-styles/ In our last update, we simplified the modules down to two ([docula-ui](https://www.npmjs.com/package/docula-ui), and [docula-core](https://www.npmjs.com/package/docula-core)) and also added In-Memory data stores as the default. Now with this latest update, we made it so that you can do [persistent linking](https://docu.la/docs/article/configuration/deeplinks) and [customize the interface](https://docu.la/docs/article/configuration/customization) it very easily. ### Persistent Linking There are many times a document can move around in a GitHub repository, but you want to keep to an URL that works. [Check out how to do it here!](https://docu.la/docs/article/configuration/deeplinks) ### Styling! Let’s Get Started The first step is to see how we did this. Since we use [GitHub](https://github.com/) for our knowledge base repository, it made sense to extend the configuration for skinning there. Here is what the [Fons repository](https://github.com/fonsio/public-kb) looks like with the `style.css` and `navigation.html` file in the root. ![](images/docula-persistent-links-and-styles-2.png) The configuration for your [docula-ui](https://www.npmjs.com/package/docula-ui) is easy to do the config. You will want to add in the style.css path and navigation.html path. Also, if you have a customized logo, you can do that. Here is an example that we use for Fons. ```javascript Docula.install(app, '/help', {git: 'https://github.com/fonsio/public-kb.git',pageTitle: 'Fons',logo: 'https://fons.io/n/img/fons-logo-300x85.png',redis: redisConfig(),elasticsearch: elasticConfig(),topNavigation: 'navigation.html',cssTheme: 'theme.scss'}); ``` Yep, its as simple as that and you can see the style.css and navigation.html examples here: [https://github.com/fonsio/public-kb](https://github.com/fonsio/public-kb) ***Happy Styling!*** --- ### Module Simplification and Customization in Docula! Date: Wed Feb 08 2017 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Docula, Open Source URL: https://jaredwray.com/blog/module-simplification-and-customization-in-docula/ Let the Simplification Begin! We have moved from three modules to now only two. [docula-core](https://www.npmjs.com/package/docula-core): The core module with all the logic. (what makes docula tick & tock!).[docula-ui](https://www.npmjs.com/package/docula-ui): the web interface that you can customize using React and Express. The reason for this is to a) simplify the current development of this project (one less module to maintain), and b) there has been only two use cases: 1) Developers using the core module and then building their interface.  2) Developers using the core and web interface altogether (most popular) ### Adding a Customized Header Now you can easily create and include your customized header by just adding to the config the string of the HTML page you would like to use. ### In memory caching by default Redis is the core caching that is used in [Docula](https://docu.la/) but is also a pain when there is no Redis available or doing local development. Now, all caching will be in memory by default! While this is great for local development and small installs, we still recommend that when you have multiple instances of [Docula](https://docu.la/) running to configure Redis. --- ### Time Management for Founders Date: Fri Jan 27 2017 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Productivity, Entrepreneurship URL: https://jaredwray.com/blog/time-management-for-founders/ Time management and task prioritization are ongoing struggles for many of the founders and entrepreneurs I know. Sure, there are many great articles and books out there to help you with these issues, but they tend to focus on corporate living and not the struggles of founding a company and working as an entrepreneur. You will experience extreme highs and extreme lows as a founder. It’s an immensely difficult time and there are never enough hours in the day. Task prioritization takes on a whole new meaning and so many founders seem to parrot the same phrase: “every task is a top priority”. That, quite simply, is not the case. Prioritization is a must for any founder or entrepreneur to succeed and survive without burning out. Here are some basic concepts that actually work: - **Block out your calendar to work for an entire day.** No meetings. No distractions. Just one day a week to knuckle down and get things done. - **Focus the majority of your time (say 80 per cent) on where you add the most value.** The rest can fall by the wayside. - **Schedule some nights where you know you need to work late but balance these with some family / personal time.** You can’t work 24/7 and it’s important to check in with loved ones to keep you motivated and focused on why you want to succeed. In many cases some of my biggest ideas have come to me while I’ve been away from my work. - **Outsource those time consuming and less important tasks to people you trust and get your focus back up to what’s important for your business.** You’re the founder and you need to fill in the gaps to make your idea succeed. If you do those tasks that someone else can do, then it adds no value and creates a bottleneck. Just stop it. - **Keep an ongoing list and stack rank of what is most important.** Finish what is top of the list and everything else goes in the backlog. Finish the top task and then stack rank again and keep going. These simple rules are a great starting point to guide you through managing your time as a founder. _They will keep you focused on what really matters._ > Your mission is to get your company up and running with real paying customers and to foster its continued growth from successful startup to an established business. Going to a ton of conferences or meeting with every person that is recommended to you does not matter and is just noise. --- ### Roadmaps and the Tooth Fairy Date: Wed Jan 18 2017 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Entrepreneurship, Startup URL: https://jaredwray.com/blog/roadmaps-and-the-tooth-fairy/ If you still believe in the tooth fairy, please stop reading now. I once thought like you: for a product team, the path to enlightenment is to generate a lengthy one to three year roadmap. This roadmap would start with a fantastic offsite meeting with some of the brightest people on the team. It would culminate with a presentation that is shared across your company, customers, and partners. An executive once told me that long range roadmaps are a contract between the product and the business. Over the last five years, I have realized how wrong this process is. It is the equivalent of trying to convince your company, customers, and partners that the tooth fairy exists. Yes, you do need to have a clear direction, and maintain focus is key to achieve your goals. But you do not need to worry about the long range nitty gritty details. Your focus should be on constant iteration and concentrating on the customer’s’ needs. It should be on the problem that you are solving. During my time at my last two companies, we moved to a new model that I enjoyed and I wanted to share its concepts with others. It also offers some great starting points on how to shift away from long range roadmaps and to something much better. I’d like to share these points now: ### 1. Look to the North Star You must start using a “North Star” approach for your vision. Instead of having a detailed roadmap, point to where you want to go in a general sense. For our Fons app, our statement is the following: > “To make it easier for teachers, tutors, and coaches to run a successful business without an MBA.” We use this “North Star” statement for all product decisions. Within this, we set short term goals that align with this long term philosophy. For example, one goal is for the app to handle all scheduling and billing in a seamless way. This goal was then broken down into an MVP feature set and executed against over three months. Once we launched it, we began to take customer feedback to see how we could improve on this idea for the next iteration. Every time we did an iteration, we validated it against the North Star statement. ### 2. Get customer feedback Customer feedback is so important. It helps you understand what you can do to take your product from the ordinary to the extraordinary. It’s also a step that’s often overlooked in long term roadmaps. Whether you like it or not, you and your team will be in a feature and process vacuum when you are building the product under a long term roadmap. You will not be able to understand what matters. Customers need to tell you what is important and what they need so you can adapt and drastically change what you are doing to meet their needs. At [CenturyLink Cloud](https://ctl.io/) and now at [Fons](https://fons.io/), we work in one-week iteration cycles, where we take customer feedback at the end of an iteration and rank it with the ideas that we already have in the backlog. Many of those customer ideas make it into the product over the next couple weeks. It might not be directly what the customer asked for though, as we might have thought of a better way to solve the problem. ### 3. Rinse and Repeat Rinse and Repeat to find your groove. In most cases, your backlog will effectively evolve into your roadmap. From there, you can start planning three months in advance. You can plan for the next big thing, while always keeping your focus fixed on your “North Star.” Customer features will keep coming in, and you will keep seeing happy customers as you match your product to fulfill these needs. These happy customers will keep your ship steady with a constant revenue stream. This Rinse and Repeat cycle can continue ad infinitum. It’s a self-fulfilling model and a win-win situation for your customers and your business. --- ### Page Titles, Path Remix, API Hotness, and Your Own Logo. Oh My! Date: Thu Dec 01 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Open Source, Docula URL: https://jaredwray.com/blog/page-titles-path-remix-api-hotness-and-your-own-logo-oh-my/ Big updates to [Docula](https://docu.la/) over the last couple weeks and it is about time we got it all written down for everybody. Lets get started… ##### Make your API documentation look amazing! We have added a side navigation and also better design to the rendering engine that takes a standard OpenAPI spec document and makes it into something beautiful. Go see for yourself: - API Spec for Docula: [https://github.com/jaredwray/docula-kb/blob/master/Configuration/api.json](https://github.com/jaredwray/docula-kb/blob/master/Configuration/api.json) - API Spec Rendered: [https://docu.la/docs/api-spec/Configuration/api](https://docu.la/docs/api-spec/Configuration/api) ##### Defaulting to Readme.md Since [Docula](https://docu.la/) is based on Github repositories we decided that it would be better to remove the idea of using index.md to what is used in Github. Now just use the default readme.md file at the root of your documentation repo and we pull it in as your default view for [Docula](https://docu.la/). ##### Default Paths We received some great feed back on the paths of the application that could conflict or not make any sense so we decided to clean it up to make more sense: - /article: This is where all of your articles will be shown via this path. - /api: The API is now listed here always instead of `/docula/api/v1` - /api-spec: This is where all [OpenAPI](http://www.openapis.org/) spec documents are rendered for now on. As always you can set your base path for [Docula](https://docu.la/) in the initial config of your app like so: ```javascript DoculaExpress.install(app, ‘/docs’, {…}); ``` ##### Page Titles We have added page titles based on your articles meta data  ```title: "title goes here”``` in your repository. This now is rendered on the page like so: ![](images/page-titles-path-remix-api-hotness-and-your-own-logo-oh-my.png) On top of that in the config you now need to place a `pageTitle` parameter to have it show the root page title such as `Docula` shown above. ##### Your own Logo! You can now show your own logo instead of the [Docula](https://docu.la/) default logo. On your initial configuration add a parameter called `logo` and the path to where the logo is located on the web (remember to include the full path). --- ### Github edit links in docs, full text searching and a easier configuration. Date: Wed Nov 09 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Docula, Open Source URL: https://jaredwray.com/blog/github-edit-links-in-docs-full-text-searching-and-a-easier-configuration/ Thanks so much for the great response and feedback on [Docula](https://docu.la/)! Here are some more fixes and also some enhancements. Now you can add some code to easily let people click on the article and edit it via a pull request in Github. ### Full Text Search Enabled ![](images/github-edit-links-in-docs-2.png) The fixes are now in place for full text searching so that it will auto index as new documents come available. Just make sure to set it up with the following configuration on AWS or any Elastic Search provider. ### Easier Setup and Configuration To make it even easier for setup now we will detect a blank elastic search engine and do an initial setup for you on this. Also, we have changed the configuration to have a base for your site and make it much more simple. ### Basic Setup… To install Docula to your Express-enabled website at path /doc, just use DoculaExpress.install: ```javascript var express = require('express'); var DoculaExpress = require('docula-ui-express'); var app = express(); DoculaExpress.install(app, '/doc', { _// ... options_ }) ``` Just in case, API will be available at /doc/docapi though you probably shouldn’t worry about it. Available options are: - git string or object { origin: “clone URL”, “branch”: “default: master”, “clonePath”: “a folder in local file system where to clone the repo. Default is somewhere in system temp folder.” } — pass git remote URL for where your knowledge base is located - redis object { host, port, path, password } — connection parameters for Redis - elasticsearch object { host, port, index, etc … all options passed directly to [elasticsearch](https://www.npmjs.com/package/elasticsearch) } — search server configuration ### CloudFoundry integration support Both elasticseach and redis options support special form of ```javascript { redis: { cloudFoundryService: 'docula-redis-service' } } ``` This config would look for environment variables to get connection parameters for CloudFoundry-bound service. --- ### PC 2 MAC Simple Advice to Make it Easier Date: Mon Oct 24 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: How To URL: https://jaredwray.com/blog/pc-2-mac-simple-advice-to-make-it-easier/ I often find myself coaching PC users on how to use their brand new spanking Mac. It’s a phenomenon that’s happening more and more as these shiny metal machines infect the enterprise. The crossover from PC to Mac is pretty difficult. Here are some quick tips to ease the transition: __Secure that Puppy!__ It amazes me how many users do not protect their new Mac with a basic level of security. I’d recommend the following simple steps: - Encrypt the drive — Macs offer great built-in encryption support so users can encrypt entire hard drives, removable drives or create an encrypted container for their most important files. It’s all built in, but few enable the Filevault feature on a Mac. It’s really simple to do and the Filevault feature can be found in the Systems Preferences of any Mac. - Add virus protection — most new Mac users assume that their OS X operating system does not need added virus protection. It’s an age-old debate but I would offer a word of caution. The argument most often put forward is a simple one of market economics: because Apple’s global market share is relatively small, criminals go after the bigger shoals of fish in the Windows world. But, as Macs become increasingly popular, they are now attracting malicious attacks. It’s better safe than sorry. __Alfred To the Rescue__ One of the biggest challenges for novice users is navigating the file system and finding apps. I’d recommend bypassing such challenges by moving to Alfred NOW. With a couple of keystrokes, you can launch applications, do math, search the web, and even find files from one application. It is a life saver. __Window Placement with Divvy__ Many people struggle with how a Mac handles windows. They spend minutes and then hours trying to get their screen to go to full screen, as it does on a PC. Well, there is a clever solution for this issue too. Divvy! You can easily download this from the app store. To configure, just go to Systems Preferences and then Security and Privacy. Next you need to: 1. Click the Privacy tab. 2. Click the lock icon to make changes. 3. Select Accessibility from the list. 4. Check the box next to the Divvy app. If you don’t see the app you’re trying to authorize, you can add them by using the [+] button or simply drag and drop the app from Finder to add it. **Locking the Screen** This is one of the biggest pains in the world as there is no little check box to lock the screen on a Mac. With Alfred you can just type “lock” and your screen will be locked. Or you can setup hot corners to lock your screensaver. Here’s how: - Go to System Preferences - Go to Desktop and Screen Saver - Toggle the button the “Screen Saver” - In the lower right hand go to “Hot Corners” - In “Hot Corners” select one of the corners and set it to “Start Screen Saver”. Then click OK. - Next, we need to go back to System Preferences (tip: you can do this by clicking on the grid icon in the upper right of the window) - Go to “Security and Privacy” - From there check the box to Require the screen saver and set it to “immediately” OK, time to try it out. Move your mouse to the corner you set as the hot corner and you should get the screen saver and then a login prompt. Boom! Backup Your Stuff Always remember to backup your stuff. It’s a golden rule for any computer user, whether you’re on a PC or a Mac. Here are a couple of options for the Mac: - Time Machine — this is a solid way to backup your Mac. It is the built-in backup feature of OS X and you will need to invest in an external storage solution to complete your backup. - Dropbox — this is a great way to automatically sync anything you put in a single designated folder (the eponymous Dropbox) to the cloud and from there, to your other Mac, PC, and iOS devices. I am sure there are tons more of innovative apps and solutions to get even the most Windows-entrenched user flying on a Mac. But isn’t that what Google is for? I hope this post has given you some simple guidance — it seems to be the guidance I end up giving nearly every time I encounter a novice Mac user. \:-) --- ### So, You Want to be a Founder… Date: Mon Oct 24 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/so-you-want-to-be-a-founder/ That is amazing and I congratulate you. I congratulate your drive to create something from nothing, nurture it like a child and work harder than you can ever begin to imagine. Take your worst week at work and times all of that stress and heartache by 10. And you’ll still be nowhere near the reality of day-to-day life as a founder.. I congratulate you for emotionally investing in a concept and enduring the constant emotional roller coaster of success and failure, all while living under the dark cloud of reality — 9 out of 10 of all startups fail. I also appreciate that you are going be too busy to read a very long blog post and will be bombarded with advice, both good and bad. So, here is some simple advice from a fellow founder: __Nobody has a Crystal Ball__ Know that you will not always be right, and neither will your competition. The future is not set. Your job is to reduce risk to future proof your business, trust the data and understand what your customer needs. Iterate until everything clicks into place to reduce risks and prevent a cataclysmic “big bang” explosion that destroys your business. But don’t go it alone. Find people to guide you on your path as a founder. These souls hold indispensable knowledge. Learn from them, carry on iterating and carry on following the path they guide you to take — that is a key founder skill. __Understand Your Product Lifecycle__ From inception to design to development to launch — you should be part of every step and know your product inside and out. Understand why certain processes take longer than others — and how to streamline such processes.. Know your market and put their needs at the top of the work queue. Know the data __… I can’t say this enough …__ know every aspect of the data on your product from bugs, timelines, customers, margins, growth rates and more. Never rely on somebody else to know these facts. Data is the beating heart of your business. __You are NOT a Unicorn__ Gaining investment is NOTHING like Silicon Valley on HBO. You are going to be one of more than 100 or so companies all competing for investment. Your job is to help potential investors understand your business, your customers, your team and the numbers, while focusing on your end goal. It’s good to be excited about what you do, but also be realistic. Don’t just say “this is a TRILLION dollar” opportunity. If you utter this statement, all respect for your business will fly out of the window. And, even if you are a small company, always target your pitch to your customers and your investors. Be polished in everything you do. __Trust but Verify the Advice You Receive__ Being a founder is hard. You will receive so much advice. Some of it you will immediately disregard, some of it may seem like an ok idea and only about five per cent is worthwhile. Just trust your gut with any advice thrown your way.If you think it’s a good idea,then come up with a small scale test to prove it works. If it does, great. If it doesn’t then you’ve not wasted a load of time or lost focus on your core goal — building a brilliant business. --- ### Polish Your Company Date: Wed Feb 10 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Entrepreneurship, Startup URL: https://jaredwray.com/blog/polish-your-company/ Transforming your incubated idea into a full-blown business is no easy task. Many of the founders I advise and work with need help tackling this mighty metamorphosis. Founders are faced with funding rounds where the venture community weighs up your startup based on many aspects. What your company does, its market and reach, customers, revenue, growth, intellectual property and your team are all examined. These points are key considerations that every founder must give equal emphasis to. However, the main focus as a founder is running your company. And here’s a little secret I’ve learnt. You need to polish and run your startup like a business from day one. There are many advantages to this approach. It increases your professionalism with investors, giving them confidence in your business skills Because your venture is run like a real company, its evaluations will improve, and your startup will run that little bit smoother. Here are a few ways to achieve this: - Legal — a good business attorney provides vital assistance in a wide range of business aspects, from formal business incorporation, liability and lawsuits to basic zoning compliance, copyright and trademark advice. A startup should select a firm based on its real experience to enable startups. Don’t choose the cheapest option here as it will come back to burn you later. Be smart about what you use them for and realize this is a long term investment in your business. - Banking — spend time understanding the pros and cons of what each bank offers. Your chosen bank needs to offer a complete business services package, tailored to your requirements, and must also have the time to fully understand the nuances of your business. They need to truly understand your business, and not just peddle the lines you see on their advertising campaigns or through word of mouth. sk a business banker to go for coffee with you and then challenge them on how they can help your business and how long have they been in this role. Interview them as you would with any other potential employee — it’s a vital business relationship to future proof your company. - Accounting — you will need someone to help setup your business’s accounting basics, review your figures from time to time and prepare your company for all of the necessary federal, state and local tax returns. A good business accountant will also be on hand to offer advice to monitor your startup’s financial well being and ensure your business is running in the most tax efficient manner. Use a cloud-based accounting platform that is recognized and has a full bank reconciliation, reporting and API for developers (trust me, you will use it) such as [Freshbooks](http://www.freshbooks.com/), [Quickbooks](http://www.quickbooks.com/) or [Xero](http://www.xero.com/). - Auditing — running a business means a lot of bookkeeping. Some businesses are required to have their books audited by an independent third party by their customers or lenders. An accountant can perform an audit, or provide reviews and complications, which comply with less strict regulations. Whether you use a professional accountant or not, audits are a great tool to monitor your startup and make sure expenditures aren’t getting silly as you seek to grow and succeed. - Start doing monthly reviews of the business — from the first day of business, you should have a day set aside every 30 days where you review your company as a whole business entity. The major sections should be sales, marketing, product, strategy, upcoming events, people / talent and, of course, the financials. In my last company, we did this as a startup and even after acquisition. The deck contained more than 90 slides and was condensed down for the company-wide meeting. It was invaluable for the investors and team and served as a place to have a gut check of where we were and where we were going. Finally, No managers just do’ers — it’s a great idea to hire in experts to help grow and develop your business. But don’t make the mistake of hiring 20 managers — make sure you hire people with individual specialisms, that will work to make your business succeed. The sort of individuals who’ll pitch in and work well as a team, not those that just want to take over your business. --- ### Mythical Evaluations and Reality Date: Fri Feb 05 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/mythical-evaluations-and-reality/ The current marketplace is in a state of flux. Some people claim there’s a bubble, others reject this statement. Whatever the real state of today’s markets, it’s wise to reflect on the “evaluation vs opportunity” of costing items. I recently tried to buy a domain name from a squatter. They claimed they were building a startup but the startup’s domain had been registered for some years. I have worked in the startup community for a while and long term startups aren’t that common, in my experience. I contacted the person and offered them a couple of thousand dollars for the domain. What happened next is pretty mind blowing. They claimed the domain is worth 250,000.00 US. With no negotiation. WOW. First off, if this person has an idea that they are passionate about it, then that’s fantastic. But let’s evaluate what that domain is really worth by treating his idea like a real business and using this crazy concept called “data” to understand what it could actually be worth. I know, I know. You believe you will be the next Google, Apple, Facebook or Uber. Yes, your idea will generate 100,000,000 users who cannot exist without using your idea 2–3 hours per day because it’s an addictive, brilliant premise.. Time for a reality check. Yes, there are exceptions but most startups will not match the phenomenal success of the Google, Apple, Facebook or Uber unicorns (those private companies claiming valuation of at least $1bn). In 2015, only 14% of U.S. IPOs were done by tech companies, the smallest percentage since the mid-1990s, according to figures from Dealogic. And many of those U.S. companies that went public have seen their stock prices suffer, reporting a median return of zero compared to their optimistic IPO price. Just getting to the IPO stage is difficult enough as 80% of startups fail within the first 18 months, according to a study by Bloomberg, but [getting your stats right](http://www.huffingtonpost.com/paul-jarvis/8-out-of-10-statistics-ar_b_6516014.html) can be a difficult business in itself. It’s safe to say though that the majority of startups do not see the global success of Google. The most two common scenarios, in my experience, are that your startup grows and fails, or it’s acquired. Few end up going IPO or being acquired for billions. And let’s get our language right here. Stop calling it a f*cking startup. If you started your business years ago and have launched nothing then it is a failed business. Or it’s just an idea. Calling it anything else just makes everyone who has run a startup look bad. A startup is a business. Nothing more, nothing less. Get real and remember your company’s worth is based on a few things: - Paying customers - The revenue you bring in and the term of that revenue - The team you have built - The intellectual property you have generated - The strategic momentum you possess Let’s go back to our optimistic domain squatter. Is your name really worth 250K with no paying customers, revenue and, most likely, no team or IP? It’s just an idea and it’s time to get real. If you believe that idea needs to be cherished, then do not place a price on it. When you put a price on an idea then you are setting boundaries on what the company is worth. And how can you allocate a value to a company that does not exist? For this specific case, I would say the domain was probably worth 1–5K. A good name is important, but who would have thought “Google” would be the #1 search engine. As a founder, you have to look at every opportunity and get real with your expectations. If you don’t, then reality will soon make you get real or, even worse, fail. --- ### The Silent Company Killer Date: Tue Feb 02 2016 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Leadership, Startup URL: https://jaredwray.com/blog/the-silent-company-killer/ There is a growing epidemic in the enterprise. It has existed for many years and many companies work hard to cure this sickness. But, in the end, this malignant growth spreads, wins and kills the company. It’s an epidemic that, in my experience, shows no signs of stopping. Companies need to acknowledge the problem and conquer the disease. I call it Signal vs. Noise. Let’s look at an example I have seen played out, in one guise or another, many times. John was an amazing project manager. Last year, he closed numerous projects and was awarded the CEO medal of honor for a particularly successful project. He was untouchable in the corporate environment, so he was assigned one of the biggest projects in the corporation’s history. This project will catapult the company ahead of the competition. This project isn’t just big — it is the key to unlock the company’s future. John was honored , even surprised, to be offered such responsibility. John started this project as he had done with countless other projects. He sent daily, weekly and monthly status reports to the sponsors of the project on the risks and concerns. He scheduled review meetings with the stakeholders. Everything made sense and was going to plan. And, despite a few bumps along the way, the project was even on schedule to deliver everything the company desired. Then, out of nowhere, he receives an email from his boss’s, boss’s, boss. This corporate big wig is on the executive team and wants to meet him. John, of course, agrees to the meeting, but he doesn’t really know what it could be about. > Suddenly, the “most important project in company history” is ditched At the meeting, this executive tells him the plan has changed. _Suddenly, the “most important project in company history” is ditched_. It doesn’t fit with the new corporate outlook. Wrap it up and the budget will be removed. John points out the revenue impact and the amount of customers affected, but it’s pointless. The decision is final. The question is: “how was this decision made?” It is amazing how some large corporations make big decisions on their strategies and products in this way. I have had first hand experience in this across many companies. Such decisions are rarely made with the customer in mind and the facts on the table. They are made with executive polish and opinions and without any real data to back up these rulings. If any numbers are thrown around, they are used in the wrong context, making them useless stats. Why does this happen? Well, it is human nature to use the facts to your advantage and get buy-in based on such storytelling. This is, what I call, the Noise in the enterprise. It is always there and it is deafening. This Noise is so powerful that it transforms entire legions of employees from externally customer-focused individuals to internally-focused groups, fighting for their budget, resources and reminding the executive overlords why they need to exist. > The first problem is that, as people move higher up in the organization, there becomes a point where they are separated from the inner workings of the product, people and process There are two clear issues here. The first problem is that, as people move higher up in the organization, there becomes a point where they are separated from the inner workings of the product, people and process. The second issue is these people are making massive business decisions that affect the product, people and process that they are completely removed from. These people at the top should not be making such decisions. They should guide the builders to respond and make the decisions themselves. There are some ways to achieve this: - **Allow the executive team to be part of the process.** This one is hard to do, but realistically many executives are too far removed to make the right call and do not possess a clear understanding of what is going on. - **Remove the PMO:** Project management is a good thing until it just becomes a middle man with little to no data and an absence of correct opinions. - **Build your corporate culture from the ground up, instead of the top down.** Let the people running the service “own” that P&L and make the decisions with advice from executives and other teams. - **Drive with data directly from the source of truth.** Do not rely on slide presentations or an executive to pontificate what they believe is right or wrong. _Without data all of you are wrong…_ - **Remove the politicians.** This is maybe the most difficult point to achieve but it will result in real change for the company. Those without any worthy experience or knowledge of the decision in hand need to be removed from the process. They will only add to the noise. Companies that cut the noise will go through an iterative lifecycle where the organization is one based around managers, not leaders. The managers may evolve into leaders, but they are leaders that recognise the value of business data and never fudge the facts. They embrace change based on team decisions, not hearsay and melodrama. --- ### Moving On from CenturyLink… Date: Tue Dec 01 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/moving-on-from-centurylink/ Today is my last day at CenturyLink. It has been an absolute honor to work for and contribute to such an amazing company in the midst of a major transformation. The people at CenturyLink are some of the brightest and most talented individuals I have ever worked with. I will truly miss working with CenturyLink’s employees on a daily basis. They work hard and are passionate about what they do — they are the backbone and reason why CenturyLink is such an amazing company to be part of. Passionate, transparent, honest and striving to delight the customer everyday — it’s a great team to be part of. So, while many people may talk about what they achieved during their tenure at a company, I believe the credit goes to the team that goes beyond the call of duty every single day. The team launched 20+ services per year and also evolved the culture at CenturyLink, bringing innovation not just to what they do, but how they do it. There’s a great book out there called Tribal Leadership [[http://www.triballeadership.net/book](http://www.triballeadership.net/book)], which describes the ethos behind the transformation at CenturyLink. It identifies five tribal stages of such transformation and we went from stage 2 to 4 — where members transform from being resistant to new management initiatives to being excited to work together for the benefit of the entire company. I am especially proud to have been part of that transformation. There are a couple of moments that stand out for me showing how magical this culture is: Soon after the acquisition of Tier 3 (the company I founded), we were asked to speak at the annual CCA conference that CenturyLink hosts and present the company’s strategy and roadmap. I was all too aware of one of the biggest struggles we are forced to tackle: _the constant promise of a new product and the inevitable disappointment at launch when that product is delayed, contains fewer features than we set out to include or is just too buggy._ It’s a familiar scenario for most companies. Even for us it was hard to really understand how to keep executing while also being part of something much bigger. Working with the amazing team that brought us into CenturyLink we decided to take a bold stance and only promise what we could deliver in very short delivery timelines. We would always discuss the direction but really focus on the 6 months ahead as those are the things that needed to be executed on. We even decided to continue on our tradition of launching new features every 21 days which was what we were doing at Tier 3. The team at CenturyLink was amazing and fully supported this change and with this support we were able to get up on stage in front of our partners and show an amazing roadmap full of features and deliver on that. ![](images/moving-on-2.png) Up on stage we showed this picture and proclaimed that there will be no more puking unicorns in our roadmap and for two years we did just that. ![](images/moving-on-3.png) Another great moment is when we expanded from six to more than thirty teams. It was a momentous challenge and every single person committed to scaling the business within the culture we had nurtured and built. As part of this expansion, we had to learn about pressure points and automating our manual processes. We got together and, without any leadership hierarchy, focused on how we would achieve this. It changed the culture at CenturyLink with a statement now more widely known as “Run by Robots” or also “Robots vs Oompa Loompas.” We worked tirelessly to identify every aspect that could be automated and owned, making that a reality. So what’s next for me? Well, I plan to pursue my passions in life with my family and to continue to embrace the entrepreneurial spirit by working in a startup or another company that’s innovating and creating amazing things. Three key, and somewhat diverse, areas of interest for me are robotics / IoT, open source, and the ways in which people process data and collaborate. To everybody that supported us on this amazing journey internally and externally at CenturyLink, ___I thank you___. With your support we did something amazing. Something that many thought was not possible. I hope to carry on pushing the boundaries of what is and is not possible in my future endeavours but, for now, thank you. --- ### Enabling Remote Workers and Keeping Them Engaged Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Remote Working, Startup URL: https://jaredwray.com/blog/enabling-remote-workers-and-keeping-them-engaged/ Harvard Business Review wrote a great article on “[Why Remote Workers Are More (Yes, More) Engaged](http://blogs.hbr.org/cs/2012/08/are_you_taking_your_people_for.html).” At [Tier 3](http://www.tier3.com/) we believe in this and have always maintained a very large amount of our company working remote. In fact, our VP of Product Management, and nearly our entire Network Operations team, work outside our headquarters in Bellevue, WA. Here are some of the tools and ways we do team collaboration at [Tier 3](http://tier3.com/) to enable our remote workers and keep them engaged. These tools are what helps [Tier 3](http://tier3.com/) have very few internal meetings to brainstorm or resolve problems. Instead, our collaboration tools have helped us tackle problems and ideas quickly without polluting our schedules with unnecessary meetings. Nearly all (save Lync) are web-based, and each one can be accessed from a mobile device. This means that we can rapidly engage across teams even if someone is running through an airport or resolving a late night bug. ## Tools: - [37 Signals: Campfire](http://campfirenow.com/): Campfire is a great tool for communication and allowing subject based channels that can be used for support or team questions. Our entire development team uses it for problem solving and notification with integration to [Github](http://github.com/). Also, our support team has a chat room for any issues or questions that is very active. The great thing about this is that anybody from the company can quickly jump on and get a question answered within minutes. The other great feature we like on this is the history and client support that has been built around this system. Employees using the system are using clients and setting up desktop based notification if their name is mentioned or certain keywords. - [Microsoft Lync](http://lync.microsoft.com/en-us/Pages/unified-communications.aspx): Lync is a great tool for supporting internal private chat between two people or a group. This is also very useful for desktop sharing and to see a persons status very easily. The integration with outlook/exchange is also very impressive. The last thing on this is that it works on OSX and Windows which is key as our company is very _(Yes, I know there are many people that do not like MS but this is a product that is very nice.)_ - [Go to Meeting / Webinar](http://www.gotomeeting.com/): By adding a good way to have meetings with VOIP and screen sharing we have seen many uses from our team standups to quick technology presentations. One interesting thing we have found out is to always record the presentation so that it can be used as training/reference material later on. - [Github](http://github.com/): With Github we are able to do more integration and social interaction in the past around code updates and releases. Recently we integrated a Github bot on campfire to give us notifications and other calls back into the system. - [Trello](http://trello.com/): Trello is used by our operations and development team to know what people are working on and also what is coming up next. In one board we can see the activity of all team members no matter where they are at. _Note: We have an internal portal that is used but at this time we are evaluating better solutions out on the market._ ## Team Collaboration: - Team Standup: A simple team standup every morning to talk about major issues, project updates, and any blocking issues is key for the team. This is a call that takes 30 minutes and gives the ability for all of us to adjust as a team. - Brown Bag Sessions: Every month we work to have what are called brown bag sessions where we pick a topic and discuss it and the entire company is invited. These range from new features to also how customers are using our product. It is also time for people to socialize. Remote workers can connect via Go to Meeting. - Visit Rotation: Sometimes you just need to be able to be closer to people and that is why we ask that people who work remote figure out a visit rotation. This rotation has them come into the main office about every 6–8 weeks to work directly with the team. - Monthly Company Calls: The last thing that we do is monthly company calls where we give updates on the progress of the company and also allow people to ask questions and give feed back. ... --- ### Five Ways PaaS will Rock the Enterprise Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing URL: https://jaredwray.com/blog/five-ways-paas-will-rock-the-enterprise/ Platform-as-a-Service is one of the hottest new technologies to hit the market in recent years. Already it has seen significant adoption from startups and web 2.0 companies using it as their development, test, and production environments on platforms such as [Heroku](http://www.heroku.com/), [Engine Yard](http://www.engineyard.com/), [Microsoft Azure](http://http/www.windowsazure.com/en-us/), and [AppFog](http://www.appfog.com/). [Gartner](http://www.gartner.com/it/page.jsp?id=1586114) predicts that by 2015, most enterprises will have part of their run-the-business software functionally executing in the cloud, using PaaS services or technologies directly or indirectly. Most surprising is that even with developers and web 2.0 companies creating the majority of PaaS adoption, PaaS will still become the most disruptive technology transforming business in the enterprise for the foreseeable future. While this transformation is created by technology, it enables multiple other parts of the business to evolve: staffing and hiring development teams, enabling service/deployments/scaling, maintaining ownership of a service, enabling business teams to interact as stakeholders in the development processes and shifting operations teams to know and understand the business and how resources are handled. What is this PaaS thing? “Platform as a service (PaaS) is a category of [cloud computing](http://en.wikipedia.org/wiki/Cloud_computing) services that provide a [computing platform](http://en.wikipedia.org/wiki/Computing_platform) and a [solution stack](http://en.wikipedia.org/wiki/Solution_stack) as a service. In the classic layered model of cloud computing,[[1]](http://en.wikipedia.org/wiki/Platform_as_a_service#cite_note-nist-0) the PaaS layer lies between the [SaaS](http://en.wikipedia.org/wiki/Software_as_a_service) and the [IaaS](http://en.wikipedia.org/wiki/Infrastructure_as_a_service) layers.” _[Wikipedia: _[_http://en.wikipedia.org/wiki/Platform_as_a_service_](http://en.wikipedia.org/wiki/Platform_as_a_service)_ ]_ Platform-as-a-Service is a framework for running applications and consuming services that handles many standard IT operational functions such as deploying, optimizing, and allocating resources, scaling/load balancing, health monitoring, and service discovery — all without manual operational intervention. In essence, it gives control to the business, product, and development teams to perform their job without requiring IT to be involved and causing a bottleneck. PaaS is still in its early stages, but it is growing into a standard faster than even virtualization. Teams starting new projects are already considering using it or have enabled it in their dev/test environments. For more information about PaaS check out [Removing the Operating System Barrier with Platform as a Service (PaaS) — a guest post from Adron Hall](http://blog.newrelic.com/2012/01/11/removing-the-operating-system-barrier-with-platform-as-a-service-paas-a-guest-post-from-adron-hall/). 1. Services, Deployments, Scaling, and Monitoring IT organizations are constantly struggling with building and maintaing a standardized way to enable services for their customers, allow seem less deployment and integration with existing systems, scale to meet the demands of the business, and give all of these things with monitoring and a good service level. This is very hard to do — not because there wasn’t a true effort to have and enforce the standard — but because the platform itself didn’t create and dictate the standard With PaaS services are defined in the system automatically for consumption enabling standards by default without any manual configuration or validation. When your team deploys to a Platform as a Service, the system is built to deploy the application for you across all instances and services — relieving the operations team from the task of manually doing a deployment. . This also enables continuous integration to start happening where deployments can be more regular. Scaling of instances are easier via standardization as you can now easily scale up and down the amount of instances needed which the platform will handle the process of adding and removing instances for you. With health monitoring when an instance fails the platform will work to heal itself by moving that instance out of rotation and spinning up another one to replace it. 2. Staffing and Teams Even with the downshift of the economy, tech jobs are in demand. Many companies struggle to find and hire developers. We can all agree that there are insufficient numbers of engineers graduating from college to meet demand. . What we don’t agree on is how business will be able to bring on engineering/development talent without struggling. With a multi-runtime platform as a service offering inside the company — one that can support multiple development languages on the same platform — hiring is much different. . Now don’t start an engineering job description off with a list of supported languages, instead list _all_ of the languages supported by your PaaS and then just focus on hiring a rock star who can add real value. PaaS opens the market, enabling you to go from a one or two language shop to a 5+ language shop. Teams can now choose the language they prefer — or the one that is ideal for a projects — and hire from there. For example, you could have two java teams, one .NET team, and three python teams. PaaS gives you so much hiring flexibility and thought leadership that you can enable a developer to branch out and try other things. 3. Adopting Technology is Easier IT organizations are becoming more critical to business competitiveness and agility everyday. To enable this agility that the business needs from IT new services and IT based projects have continued to grow while staff has not grown to meet that demand. With all of these new services and projects the technical debt of maintaining these solutions grow exponentially making adopting these new services and projects harder. By enabling a PaaS into the organization the transfer of application ownership can be maintained by the development team and business application owners with a supportive role from the IT operations team as the standardization is built into the system itself instead of maintained by manual IT process. With built in service discovery and modular based architecture for services in PaaS the IT organization has a pattern and best practice for bringing on new services and features that are easily enabled for the organization. Already platforms such [Cloud Foundry ](http://www.cloudfoundry.org/) support over 7 runtime languages, multiple databases, and messaging systems. 4. Enabling Standardized Consumption of Services Today enabling/provisioning IT resources is typically very difficult to achieve. . IT organizations have to keep pace with constant technology changes and all the effort in bringing new technologies into the fold to be supported. This often creates multiple “one-off” offerings that are more difficult to support across the organization. With PaaS, discovery of services are built directly into the platform for easy integration and discovery . Developers, application owners, and operations can easily manage and architect their application with standardized scaling, monitoring with best practices built directly into the service. With the built in flexibility and standardization of PaaS the operation team can now focus on the platform itself and not creating multiple “one-off” scenarios. 5. IT at the Speed of Business Within most companies there is the “IT Department” (yes, I am over generalizing). Business teams often consider this department stagnant and a major cost center for operating tasks. Strict policies, limited flexibility, project delays, not using the latest and greatest software, slow development are common complaints causing business users to work very hard to avoid IT. The IT organization is simply not able to move at the “speed of business” because they are working to maintain legacy while also offer value to the business. By moving to PaaS not only are you enabling the rebirth of what IT is to your business, but you are also creating the agility needed for the business to thrive. Standard processes built into the core of your environment that enable delivery of applications with the scalability for the demands of the enterprise will streamline your development and delivery to your users. Being able to use the platform to recruit from the broadest possible pool for the best talent available without restriction is key. --- ### Four Golden Rules of High Availability Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing URL: https://jaredwray.com/blog/four-golden-rules-of-high-availability/ For over the past decade I have worked in the enterprise building large, high-availability systems. As CTO of a cloud company, one thing that still surprises me is the general lack of industry understanding of what it means to the business and application to have high availability. So I felt inspired to share a few rules for enabling high availability that I follow each time I build a system. But first… Baseline Setting Before the rules, let’s set some quick baseline on high availability measurements and how these apply in context of businesses. You have probably heard over and over again providers promising a percentage of uptime for a service such as 99.95% or 99.999%. This is how the majority of service providers and applications show the amount of time in agiven year the service is available and working. Normally this does not include maintenance windows (where they are doing an upgrade of the service), or even things out of their control such as the connection to the service (such as internet). Here are the standard percentages, amount of service disruption, and some context on each one provided by [Wikipedia: High Availability](http://en.wikipedia.org/wiki/High_availability). Now that you have a baseline, let’s talk about… The Golden Rules 1. No Single Point of failure: This is the most common starting point when building a high availability system, but in truth it is _very hard_ to do. Most complex systems need to be able to write back transactional data to a centralized database layer. Even with clustering there are parts that don’t handle partial failure well. A better architecture for high availability is for easy fail over to alternative backup services with the ability to bring it back online and sync data. The application layer needs to be more aware of failure and work to heal itself. Remember, with datacenter facilities there is no such thing as 100% uptime, no matter how good their N+1 configuration. Eventually at some point they willmiss a beat. In the end, leveraging the flexibility and cost structure of the cloud is a better solution than building your own two facilities. 2. Self-healing is Required: When it comes to the application layer, self-healing is one of the hardest thing to do. There are so many possibilities. From my experience half of the things you thought would have issues — and spent a lot of time architecting for — just never happen. While it is always good to add some of the architecture around the standard items such as service and datalayer fail over, in the end as the system/application is rolling out you will start to see what components have the greatest possibility of failure. 3. It will go down so plan on it: No matter how good your team is or how amazing the architecture is, or even if you are _“cloud powered,”_ your application will have disruption in service. When that happens (and it will) what is most important is how fast it can recover. By developing good monitoring tools and ways to quickly diagnose the issues, recovery will be much faster. 4. It is going to cost more: Many times you will hear from the business that their application should “never go down!” The discussion instead should be what downtime is acceptable for the business. Find out what is that number really is and move towards it._ If you do not have the honest discussion with the owner of business owner of the system/application, then you should never build it!_ Is cloud changing this? You have probably heard that just by moving to the cloud your applications will never go down. That is what happens when marketing gets involved and starts to sell false hope. The real truth is that cloud providers are on the forefront of giving better high availability than you could achieve yourself. Where they can — and where it is cost effective — these providers are building high availability into theirsystems. They offer an SLA (Service Level Agreement) with ramifications (usually financial) if there is service disruption. These SLAs incentive them to build in as much high availability as they can and to quickly respond to any service disruptions. That level of SLA is very hard to achieve and carry out inside a larger enterprise IT shop, and almost impossible for a mid-size business to do themselves. _But.. but… Netflix did it on a provider that doesn’t have a great SLA!_ Yes and when you are the size of Netflix with hundreds of engineers working on your service offering, then you can do the same. If the provider does not have a good SLA then you need to walk in with eyes wide open to the reality that the availability will be handled only by your application. In most cases this will be _more costly_ than picking a good provider. Why? Developers are expensive. On the other hand, working with a cloud provider that delivers a strong SLA and high availability in the underpinning infrastructure should _reduce the overall cost _dramatically over doing it all at the application layer. What is very unique about the cloud today is for the first time there are providers focusing only on making your application work better and providing instant access to resources. All of this flexibility and all of these best practices delivered as a service offering. Cloud is enabling the business to easily architect for high availability. Cloud providers can provide multiple data center locations to deploy your application across multiple regions which is _WAY _cheaper than building two of your own data centers forhigh availability. They are also moving more difficult items “as a service” for built in high availability — such as database as a service where it will setup replication and fail over for you. The next big thing to watch with cloud providers is “platform as a service” or PaaS. This technology can instantly deploy your application across multiple datacenters with a few clicks of the mouse. PaaS is in its young adult stages but is gaining rapid adoption. These innovations are the key reason you should use the cloud as they are focusing on making HA easy inherently while you focus on your application/business. In Short… - Will the cloud have outages? Yes - Will the cloud have less downtime? For the most part, Yes. - Is Cloud going to be cheaper than doing it internally? Yes. - Should I use the cloud for my application? Unless there is a compliance reason, Yes. - Will the cloud be more innovative at enabling and automating the infrastructure layer for my application? _Loaded question,_ but I have to say Yes as that is what cloud providers focus on. Conclusion Let’s be honest: The biggest problem with high availability is setting the right expectations with the business/consumer and being transparent on the reality of what they should expect. Today many people consuming these systems/services are told that “no matter what the cloud makes so your application_NEVER_ goes down.” Not true. While it does help a lot, you can achieve better availability with the right SLA and application, cloud marketing has failed by setting false expectations. The cloud is getting better every day and is focused on providing a better environment with high availability, but… things will go down. By remaining transparent on your goals of availability and following the golden rules with the cloud and your application, high availability is not only achievable and cost effective, but also easier to achieve than ever. ... --- ### Is Judgement the Number One Trait for a Great Developer? Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Coding, Entrepreneurship URL: https://jaredwray.com/blog/is-judgement-the-number-one-trait-for-a-great-developer/ Great blog post from Tammer Saleh on the number one trait for a developer: [http://www.engineyard.com/blog/2011/the-number-one-trait-of-a-great-developer/](http://www.engineyard.com/blog/2011/the-number-one-trait-of-a-great-developer/) The only thing I would wonder about here is that the definition of a rock star is usually their experience + their ability. Without judgement I doubt you would have a rock star as experience comes from having good judgement and making the right decision. Ability uses judgment to figure out really what should be learned and focused on. Here are some of the traits that I always look for in a developer to define them as a rock star: - Experience - Leadership - Problem Solving - Team focused - Hard worker - Passionate Just a short list that I see as a developer can be a really good coder but in the end to become a rock star it is the list above that makes it happen. --- ### It’s the Polish that Makes Something Special Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/its-the-polish-that-makes-something-special/ When you look at applications today it is very easy to tell which ones have the “polish” — and because of that, are exceptional. Many times it is just the simple way of taking a complex three step workflow to one or no steps at all. At [Tier 3](http://www.tier3.com/) one of the simple examples of adding polish was adding a “Maintenance Mode” button for virtual machines and groups. This feature was built to help simplify the maintenance mode process that a administrator has done many times in the past. When a system administrator needs to do patching, updating, or just needs to put a system in maintenance mode they usually do the following steps during this time: 1. Notify their operational team letting them know the server is going out of rotation. 2. Logging the event to an internal system for tracking. 3. Pause all monitoring for that server so that it doesn’t do false alarms. 4. If it is in a load balanced rotation pull it out of rotation and drain the sessions if possible. 5. Perform tasks that need to happen on the system. 6. Turn on monitoring to verify everything is good with the system. 7. If it is load balanced put it back into rotation if everything was good with monitoring. 8. Log that it is not completed with maintenance 9. Notify the operations team letting them know it is back into rotation. Now these steps on average for each server probably do not seem to take a lot of time but if you do the averages that we have seen across our platform it is about 15 minutes not including step number 5. Now enters the “Maintenance Mode” feature (available via API and a button): 1. Enter Maintenance Mode: The system will do steps 1–4 for you including notify the NOC team, pausing monitoring, and checks if it is in load balanced rotation. 2. Perform tasks that need to happen on the system. 3. Remove Maintenance Mode: The system will do steps 6–9 with enabling monitoring and verifying that everything is ok, moving it back into rotation, logging the system as coming out of maintenance mode, and notifying the operations team. This is a great example of a simple feature that eliminates 6 steps and about 13 minutes per server. Here are the savings for operational teams just handling patch Tuesday on their systems: - Small (about 8 servers): ~ 21 hours saved - Medium (about 65 servers): ~168 hours saved - Large (about 300 servers): ~840 hours saved _(Note: savings based on annual usage)_ My grandfather was a constant perfectionist and always believed that if something had to be done then it should be be done as good or better than the last time. This constant perfection is an accelerator for “polish” to happen when the process is constantly refined. Many times in dealing with software and the enterprise we often forget about the polish that has to happen to make it not just better than what they were using before but exceptional. [Amazon](http://www.amazon.com/) made it easy to shop online with tools that understand you as the customer and a very fast checkout process. [37 Signals](http://www.37signals.com/) has paved the way with keeping web applications simple and streamlining processes that really dont need to exist. Last but not least, [Apple](http://www.apple.com/) provided exceptional polish by keeping their products simple and very easy to use. Always remember … the first 90% can make you successful but the last 10% will make you exceptional. --- ### My Greatest Successes Have All Come From Small Failures Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/my-greatest-successes-have-all-come-from-small-failures/ My father-in-law recently sent me an article from the NY Times ([http://nyti.ms/nLBqp4](http://nyti.ms/nLBqp4)) asking the question “What if the Secret to Success Is Failure?.” This really hits home on many fronts as I was somebody that did not take the path most taken. I never went to college and even though I don’t have regrets, I do see the value in a higher education. By simply marking a success in my life and then back tracking how it was achieved every time I say small failures that really became the stepping stones to create that success. Back in 2000 a company I worked for was running a very large web environment which served millions of images. The company negotiated a deal with Yahoo! (one of the internet greats at the time) to have them serve those images from their portal as a new feature. Everybody was jazzed about this but the day we went live it was an utter disaster. So much of a disaster that we had to urgently call the engineers at Yahoo and ask them to please turn it off asap. From there we began debugging what was going on and why this traffic was killing our web application. After some digging in to a legacy system we found out that the developers decided it would be ___REALLY___ cool to stick all images into the blob column of the database. Then we also found out that they were trying to be even more cool and removed the static images on the web servers and setup a 404 redirect handler that would pull the image from the database ___EVERY TIME___. In the end all we had to do is get it back to static image paths and then we were able to get the site live with Yahoo. What is amazing about this are the failures and learning points that the company had when this happened: - The operation team started to work more closely with the development team on how to architect for large scale and performance. We even started to really get the QA team on board with stress testing each item. - The development team started giving even more detail on the changes they were making and working with QA and Operations on what the new features do and how they architected it. - The business development people started to really plan for load on the system and would get operations involved ahead of time with what they are working on and how it would technically work. Most important in this is that we all adjusted our systems and made a better system for handling scale by __learning__ from this failure. Even now to this day the experience that all of us have come from small stumbling failures that amount to how we strive to create a better process / application / or even way of life. We sometimes don’t even realize it but as you seek to create excellence in something failure will/must happen. --- ### Once You Click Send the Internet Owns Your Data Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Kids URL: https://jaredwray.com/blog/once-you-click-send-the-internet-owns-your-data/ With graduation happening for many people right now I often wonder what they have learned in High School and College. We often see the daily emails forwarded on or the twitter/Facebook feeds that get sent to us because of the funny or embarrassing nature. These usually are from people who don’t fully understand the power of the internet and what it can do to their lives. Today I was alerted to another internet sensation [here](http://www.youtube.com/watch?v=mTTwcCVajAc&feature=player_embedded) where you often wonder if this was “real” or not. Either way this person will become an internet sensation and for the rest of their life will have this documented in their digital resume as right now the internet keeps pretty much everything! So you would think that eventually the Internet would stop saving these little precious nuggets of content but what really happens is that with the onset of data expansion happening at 10x the rate predicted companies are now just adjusting to the fact that growth happens and we should allocate for keeping things. At the [company](http://www.tier3.com/) I work for we have been on an amazing growth pattern where every year we have more than doubled our storage capacity to handle all the data being ran on our platform. This really seems impossible to keep up with but at this time we don’t see it slowing down anytime soon. Bottom line… with graduation right around the corner I have one piece of really good advice for them: Before you post the video, comment, or picture that you think could be really funny or will go to only a select group please think about what it would be like applying for a job when you are 35 and they ask about it in the interview…. --- ### Performance is a Feature… Even for IT Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing URL: https://jaredwray.com/blog/performance-is-a-feature-even-for-it/ Recently Jeff Atwood over at [coding horror](http://www.codinghorror.com/blog/2011/06/performance-is-a-feature.html) wrote a great blog about how performance is a feature. I not only completely agree with him but I also wanted to point out that performance for back office services are also things that just need to happen. Often the internal IT staff forget that they are providing a service to customers. These customers are internal which in the past have given these IT teams a great monopoly over providing service. That is already starting to change and the IT group that had the monopoly are fighting tooth and nail to keep their services an offering with their group. One of these key features is performance. Not only do you need to provide network and desktop performance but also you need to think about performance at the business level. Business performance and agility are more around the line of business applications that are being supported and also the projects currently in scope at the organizational level. The IT organization needs to perform at the level of business and needs to be less of the road block and more of the enabler for these things. --- ### Scalable Development… If You Need Scale Choose Wisely. Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing URL: https://jaredwray.com/blog/scalable-development-if-you-need-scale-choose-wisely/ I see many different applications at [Tier 3](http://www.tier3.com/) from our customers and how they plan on scaling it in the cloud. This usually becomes a debate about what site is running what application and then another debate about how that site really does not know what they are doing. Here the base examples that I would submit for review… - Twitter: From Ruby on Rails to Java — The Gory Details: [youtube]http://www.youtube.com/watch?v=ohHdZXnsNi8[/youtube] - Facebook trapped in MySQL ‘fate worse than death’:[http://gigaom.com/cloud/facebook-trapped-in-mysql-fate-worse-than-death](http://gigaom.com/cloud/facebook-trapped-in-mysql-fate-worse-than-death) - @spolsky: Digg: 200MM page views, 500 servers. Stack Overflow: 60MM page views, 5 servers. What am I missing?:[https://twitter.com/#!/spolsky/status/27244766467](https://twitter.com/#!/spolsky/status/27244766467) This really isn’t about what language you think is best overall or how another language sucks. This is really about planning your application and architecture to scale in your environment. The examples above talk about some of the largest social media sites out there that really founded the Web 2.0 era. These companies scale to millions of requests per second and have the growth issues that every company would ___kill___ to have. With each of these you can see a common theme that is going on where they first build the application and then scale. I agree with this as a new application you really have no idea what you are going to need until after your first launch. With any application you should also know what the requirements are for uptime and performance. If you are a web application that is needing to processing millions of transactions you might want to think about the development platform you use as with Twitter they are now moving to a more scalable platform that shows a massive (10x or more) performance improvement just in output with less processor. With Facebook being ___trapped___ really is how they look at what their needs are because Facebook is a one in a million tech company who has requirements far above most companies. If you had to scale to the size of these companies would you really be able to do any better? With great success comes great problems… --- ### What You Think You Need vs. What You Really Need Date: Sat Oct 03 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Cloud Computing URL: https://jaredwray.com/blog/what-you-think-you-need-vs-what-you-really-need/ Every business wants to keep costs down and save money, right? Choosing a dynamic environment gives you a way to do just that by ensuring you only buy what you really need…and use. Most people tell you to only allocate what you need, but of course the theoretical is always easier than the practice. We’re going to help you make sense of this notion, so you can put the theory into practice to cut your costs. First a little background about where we’ve been before we talk about where we are now. Over the past 10 to 15 years, engineers have based decisions on business requirements that predicted growth, meaning they’ve been building environments for what might be, not for what is. Typically, engineers have built for three years out, because that’s about how long you’d keep a physical piece of hardware in production. The engineer thinks he or she has to keep those servers up and running for at least the next three years, based on growth projected out of the entire system. So even if all a business really needed was a couple of web servers and a database backend, the engineer would have scaled those web servers out to be multiple processors, with multiple gigs of RAM, and a lot of storage space. What you’d end up with is an environment that’s much more than you currently needed…and all the costs and risks that go along with it. And in the end, it might be that none of that capacity was needed at all. This mindset still exists, and engineers still build environments this way, but cloud computing is starting to change how people think. And as soon as people start changing their mindsets, they’ll start building more flexible, scalable and cost-effective environments! With cloud computing, instead of setting up something for the next three years, you ask yourself, “What do we need now and what will we scale to in the future?” With cloud computing, you don’t have to worry about planning ahead. Even if you do experience that optimistic growth, you can scale up down the road for less money than if you bought all the hardware upfront. If the opposite happens and you need to scale down, you can do that too. There’s no risk in cloud computing. You can easily scale down and remove servers and services. With cloud computing, you only allocate what you really need right now. Need more? That’s easy. You can add processors and processes within minutes, in the course of a reboot. Compare that to the other way, where it can take days or even weeks to allocate something. With cloud computing, you can add resources on the fly to enable what you need when you need it. On the flip side, you can also do bursts. Say you need to add resources for a big campaign for two weeks. You can. And then you can drop them back down. And save the company a lot of money. Here’s how cloud computing works for you to enable you to have only what you need when you need it: Underneath the covers, there are many servers. And your VM guest is sitting on top of it. Even though you say you’re allocating one processor and two Gigs of RAM, that’s what you’re going to get allocated out of a beefier server that’s sitting underneath this physical piece of hardware. So when you need that, it’s already there because the cloud computing provider has already allocated that performance and will enable you to do it. Many cloud computing providers also let you edit the configuration which is a huge benefit. People with SQL Server, Active Directory or Dynamics from Microsoft, for example, are not going to want to change their server out because they probably spent a lot of money getting it configured exactly how they want it. The other question to ask is, what are you actually using? Many people don’t know and they often have multiple servers that aren’t even using all of the required CPU that they actually have. To look at the load, do a performance chart that has the total cpu, memory, and storage read and writes. Set it up, run it for 48 hours or a week or a month, and then see what the highs and lows are. Configure it for what you need in the cloud computing environment. I can’t stress this enough: You should only allocate what you need when you need it. Of course you want some buffer. We recommend about 30%, or if you bump through a processor, add a second processor, so you’re not hitting the top threshold. But most of the time processors are really fast, especially in the hypervisor environment. All of the CPU offload is going to the CPU processor. The other issue is memory. Memory is usually the biggest killer and applications are very heavy on memory these days. Memory should match what you’re currently doing. The worst thing you could ever do is swap the disc. It’s also the slowest possible thing you can do on a VM. Never, ever swap! The more memory you allocate, the better it’s going to be. In the end, this new mindset is about saving your business’ money, not spending it, by helping you allocate only what you really need right now. That’s cloud computing. --- ### Get Your Kids to Start Coding Date: Fri Oct 02 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Coding, Kids URL: https://jaredwray.com/blog/get-your-kids-to-start-coding/ Coding is cool. Getting your kids to code is even cooler and will help them long term in our technology driven world. Out of the blue my eight year old son asked me if he could start building his own web site and learn to code. I realized this is going to be a big trend because kids want to create things. This is also being fueled more by programs like [code.org](http://code.org/). After doing the typical search I started to realize that this is still a evolving market with no real leader in the space. I started to ask for some recommendations today and received some responses that people were looking also. To make this really simple I decided to do a quick post on what I have seen so far. Here are some of the services to start with that were recommended by the twitter users below: - [Scratch](http://scratch.mit.edu/): With Scratch, you can program your own interactive stories, games, and animations — and share your creations with others in the online community. - [CoderDojo](http://coderdojo.com/): CoderDojo is a movement orientated around running free not-for-profit coding clubs and regular sessions for young people. - [Hopscotch (iPad)](http://www.gethopscotch.com/): Love their statement: We founded Hopscotch so we could build the toys we wish existed when we were kids. Made with ♥ in NYC by these friendly people. I am going to have my son start on Scratch and Hopscotch to see how it goes as they look like a great starting point. CoderDojo looks like a great concept but I need to dig in more to see how it really works. Special thanks to [@benkepes](http://twitter.com/benkepes), [@jamesurquhart](http://twitter.com/jamesurquhart), [@osbornm](http://twitter.com/osbornm), and [@andyknosp](http://twitter.com/andyknosp). If you have any more feel free to let me know and I will add it in. ... --- ### Moving to Three Languages Date: Fri Oct 02 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Coding URL: https://jaredwray.com/blog/moving-to-three-languages/ I’ve made the move to just three languages: JavaScript/Node, .NET / C#, and Go. In an age where new coding languages pop up more often than a Windows update, you may question my sanity with this move. Let me explain why I’ve moved to using only three coding languages. You probably know that the traditional college track is to learn multiple languages — individuals with computer science degrees are usually trained in at least half a dozen languages by graduation. But is there any value in multilingual coding when you move out of the theoretical world of the classroom and into the real world and workplace? Different coding languages are just different tools for different jobs — but they also shape how you think about programming. Learning similar languages may not progress your thinking much — that’s why I’ve gone for three very different coding languages with very different paradigms. First up, there’s JavaScript/Node. Javascript is just everywhere and no matter how painful you may find it to learn, it’s a must-have language to build anything these days. If you know JavaScript then Node is a great add on as it gives you the server side capabilities to create simple and quick solutions. Plus there’s an amazing community behind it to make the learning process a little less painful. C# could be the greatest language ever invented because of the changes that Microsoft has introduced. I’d even go as far to say that it surpasses Java. For a long time I have loved C# and the .NET Framework but became disillusioned by the inaccessibility of the code. Microsoft effectively locked it in so it was near impossible to run across different platforms and use with next generation tool sets. This has all changed in recent times. .NET is now open source [https://msdn.microsoft.com/en-us/library/dn771552.aspx](https://msdn.microsoft.com/en-us/library/dn771552.aspx) and will be cross platform. It’s fast, functional, one of the best languages out there, and can work for the smallest or largest of projects. Finally, there’s Google’s Go, which is a new compiled programming language designed for modern hardware architectures and concurrency. It’s an engineered language, which has been designed to natively take advantage of modern hardware architectures and solve problems with existing languages and tools. The combination of these three languages gives me the fundamental tools to solve any technical issue and keep up to date with different concepts and trends in the coding arena. They balance the old with the new, the established with the cutting edge and the back with the front end. ***Which languages should you learn?*** Coding languages are just tools in my development belt to solve real-world problems. These three tools need to be able to swing between the two opposite ends of the coding scale and balance scripting/ease of use with a more server side language. So which ones should you choose? This is a matter of preference — what sort of developer do you want to become? If we glance at the TIOBE’s popularity index then Java, C, C++, PHP, JavaScript and Python all dominate. This gives a useful snapshot into the most popular languages within the current development community — which is an important consideration as you need a large community to support and answer your questions when you start coding. There is no single answer here. There is no superior coding language — it’s like comparing apples to oranges — you have to ‘go’ with what works for you (no pun intended). In the end, just use a tool that gets the job done. --- ### Picking a Co-Founder is Hard Date: Fri Oct 02 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Startup, Entrepreneurship URL: https://jaredwray.com/blog/picking-a-co-founder-is-hard/ I had a great opportunity at this year’s Interop Las Vegas IT Conference and Expo to talk with some amazing entrepreneurs at [Work In Progress](http://www.workinprogress.lv/). I focussed on the many lessons I have learnt as an Entrepreneur but one of the unexpected talking points that came up was picking a great co-founder and sourcing the right team for your fledgling business. Let’s just start off by saying this process is really HARD. Picking the right co-founder is arguably one of the most important decisions involved in your startup and it can impact your business hugely. That’s why you may have heard so many horror stories about the Entrepreneur who settled on the wrong set of people to grow their business. Imagine Honey Boo Boo and Duck Dynasty trying to build a nuclear reactor together with nothing but a roll of duct tape and a Death Star Lego set. It isn’t going to end well. I’ve been really lucky with some great co-founders and initial employees who I still count as friends and work with today. I’ve also had some extreme experiences that could have stopped the company in its tracks. But every experience, whether good or bad, has been a learning experience. It’s taught me what works — and what really does not work. It’s simple advice but I’d always recommend that you go with who you know. Some of the most successful business relationships are formed where the people have known each other in contexts prior to the business at hand. There are a few warning signs to be aware of with regards to your initial team and co-founder. Classic red flags are individuals that ask for too much money in the early days of a startup as everyone should be channeling funds to investing in the company, not fattening their own wallets. In fact, almost two-thirds of founders only make $50,000 or less per year in the startup phase [(info)](http://blog.startupcompass.co/73-percent-of-startup-founders-make-50-dollars-000-per-year-or-less). That’s not to say the hard times will only crop up in the early days. You need to check in with your co-founder to ensure they are just as committed many years down the line as they were from day one. You and your co-founder could end up going without a salary for a while as your business gathers pace — this can be incredibly tough for everyone. Make sure your co-founder is completely committed for as long as they are a co-founder and throughout the highs and lows of a new business endeavour. Having a co-founder splitting after just one year, taking half of the company out of the door with them. To stop this happening, make sure you create vesting restrictions [http://thestartuptoolkit.com/blog/2013/02/equity-basics-vesting-cliffs-acceleration-and-exits/](http://thestartuptoolkit.com/blog/2013/02/equity-basics-vesting-cliffs-acceleration-and-exits/). If your co-founder dithers over vesting terms, you may want to question their commitment to the company. Trust, but Verify ‘Trust, but Verify’ is a great piece of advice that fits well with the co-founder selection process. It means that, no matter how reliable a source of information appears, you should always conduct your own research to double check your information is trustworthy. The business world is a dog eat dog world. Sometimes you learn that lesson the hard way and find that some people are not aligned with your startup. As an Entrepreneur, I have fallen foul of this lesson and allowed people into my company who were not all that they seemed. It’s a sad fact, but such individuals can manipulate your team and poison your company up to the board level. In the end, once the rot sets in, they could destroy the company if you don’t identify them and pull the ripcord before the company hits rock bottom. How can you identify these people? There’s no easy answer. They tend to talk a good talk, make claims that sound a little too good to be true and sometimes pull in other unscrupulous individuals to vouch for their efforts. But the facade always comes down in the end — they never were a company leader, or ran half the P&L, and the people that vouched for them were most likely on the take in some way as well. There are a few simple measures you can take to protect yourself and verify individuals: - Meet their nearest and dearest. If I’m planning to work with someone at a critical level, I always ask to meet the other important people in their lives. The individuals who surround you, also influence you. This is a critical tactic that has worked for me many, many times. - Do extensive background checks. If anything comes up then you can make an informed decision. Would you bring in a child minder to look after your kids and not check their references? Probably not. Remember that your company is your baby and not doing extensive background checks could put it at risk. If you have known an individual for most of your career, then this could be the exception. But most of the time it is better to carry out a quick background check.. - Talk. Talk to their references and then talk to other people in their network. Old work colleagues are a great source to validate the facts. “Did this person really run half the P&L of the company? No! He ran only 30M of it, and only 30 people reported to him when he claimed a bunch more? Holy sh*t!” If you have made a mistake with your co-founder then it’s time to quit while you’re ahead. A bad business relationship will poison your company and ultimately lead to its failure. So what if you do decide to break up with your co-founder? If you have a board then you need to go to them first and discuss what is going on. They have experience in this and can help you understand what is possible and how to handle the situation. Some splits can be amicable so always try to talk things through and reach a solution that suits all parties. If you cannot reach a consensus, it’s time to turn to a third-party arbitrator that you both trust such as an accountant or attorney. Consulting an attorney before a breakup could also be a savvy decision. Removing a co-founder from a legal standpoint may depend on whether your business is a partnership, corporation or limited liability company, as well as the state that the business is set up in. Some states have laws preventing a co-founder from kicking a partner out of the company without buying that individual out, regardless of whether the co-founder initiating the breakup believes the partner deserves compensation. And that’s the key message from this post. It’s better safe than sorry. Don’t get to that stage where you’re calling in the lawyers. Make sure you chose a co-founder and a fantastic team of people to set up your business and the sky’s the limit. Trust your gut, trust the people you know. And never, never, never trust a professional duck hunter and a child beauty pageant contestant to build a nuclear reactor with rudimentary equipment. --- ### Work / Life Balance for Founders Date: Mon Sep 21 2015 00:00:00 GMT+0000 (Coordinated Universal Time) Tags: Productivity, Entrepreneurship URL: https://jaredwray.com/blog/work-life-balance-for-founders/ I read an article recently about a [high powered CEO who quit his job in light of a letter](http://www.9news.com.au/world/2014/09/25/06/42/high-flying-ceo-quits-after-daughter-sends-him-22-things-he-missed) from his daughter that highlighted 22 milestones he had missed. This brought a few thoughts to the foreground for me. How can you balance the ambition and drive of being a founder and still have a fulfilling work/life balance? I still remember the long hours I spent building [Tier 3](http://www.ctl.io/) and, even worse, the heated moments when I snapped at my wife saying: “I’m building a company here!” trying to justify the crazy schedules and missed family engagements. A founder’s job is a constant juggling act and, to be perfectly honest, the workload and pressures of setting up a company are recurring themes throughout my working life. I am a very driven individual and often push everything out of the way to focus on the end goal. This ability to focus and push forward is a key requirement for any founder. While this drive is the perfect attribute from a work perspective, it can cause other priorities to fall by the wayside. I am trying to adapt to and better handle the situations I find myself in. It’s not a complete list but here are a few tips I’d like to share: - Get some sleep — you cannot run on empty or resolve the demanding decisions a founder must face without a good night’s sleep.Work out how much sleep you need to function (mine is 9 hours) to maximize your brainpower. - Get some exercise — we’ve all heard of the phrase ‘a healthy body, a healthy mind’ but taking time out to pound the pavements or hit the gym to give you an outlet away from the office. One of the best things I do is just going for a walk every day. Exercise clears your mind and keeps your body in check. I should have adhered to this and made it part of my daily regiment as a founder. - Be task oriented — it’s easy to get distracted. Draw up a list of tasks you want to accomplish on a day-to-day basis and try to stick to this. There are loads of time management methods out there to help — try something like the [pomodoro](http://pomodorotechnique.com/) technique where you focus on one task for a 25 minute block, then take a 5 minute break. Do not get randomized by items as, without focus, your main mission will fall by the wayside. - Schedule working nights — you can’t be a founder without pulling a few all-nighters but try to schedule in these nocturnal shifts so you are prepared and well rested. These nights give you the opportunity to work completely uninterrupted and set up boundaries without the guilt of neglecting your family and friends. I often find myself hitting a coffee shop a couple of night a week to focus on my work and rid myself of distractions such as phone calls, meeting and answering emails. - Block at least one day of no meetings — it really helps to have one day where you can knuckle down and focus on nothing other than your work rather than being pulled into numerous meetings. This was an amazing suggestion passed along to me from [Lucas Carlson](http://twitter.com/cardmagic) and has made such a difference. - Really “be there” — you are pulled in all directions as a founder, there’s just so much to do. When you are at an event though, make sure that you give it 100 per cent of your attention to get the most out of the experience. Before you head home or to be with friends take a moment to pause and clear your head realizing that there will always be more to do but now is time to focus on what is coming. - Work to schedule time with your kids — this may sound a little formulaic but scheduling time with your children is so important. It gives you a break from work to spend time with your favorite people, and your children a guaranteed time when you’re not a founder — you’re their parent. - When home … be home and be active — working as a founder can be exhausting but don’t just hit the couch and turn on the television as soon as you get home. Be present and active — make sure you give your family your full attention. - Learn your pulse and the season you are in — a startup can quickly snowball from just having a couple of customers to a sprawling company that requires you to travel all over the place and raise your next round of funding at the same time. Be clear with your friends and family so they understand what’s going on and keep them in the loop about upcoming events. It is hard for every family unit, especially if you have little ones, when you are gone. Prepare yourself for those busy seasons by preparing for the downtime with family that you are going to need to recover. - Unplug at least once a year completely — take a vacation without your laptop, smartphone or any other device that connects you to your work. It’s important to disconnect and recharge your batteries, so you’re ready to hit work with renewed vigor on your return. Just by doing these things you will be more productive and able to chase the dream while enjoying your life.