React Video Player Component Using Hooks, TypeScript, and xState

There are a lot of interesting options for commercial and open source players. In the last several years HTMLVideoElement has become cross platform standard and simplified media player development considerably. No Flash fallback required! Despite the availability of a standard approach for loading…

Read Article

Collaboration on a Product with a Partner

If you want to launch a course, project, e-commerce store, or some other product there are a shit load of services on the internet that you can fire up, add your credit card details, and be off to the races. Seems simple! These products are tuned for the masses, the least common denominator and…

Read Article

Strategy of Preeminence

This video from Jay Abraham is a great introduction to the strategy of preeminence.

Read Article

Self-Paced Email Course in Customer.io

I split this into two campaigns and multiple segments for clarity.  This lets me loop through the logic instead of "stacking" a bunch of repetition in a single campaign. I'm not sure if this is technically fine in CIO and haven't tested it yet. Course: Emailing and Course: Progress Course…

Read Article

useVideoJs: a React Hooks for Video.js

The Video.js docs have a good explaination for using Video.js with React, but it focuses on a class based implementation. Getting Video.js to consistently work with React Hooks is fairly straight forward, with a gotcha or two. Here's the hook: The hook returns the Video component, which is…

Read Article

Using a Random Number to Segment Emails in ConvertKit Automations using Liquid

If you want to generate a (pseudo) random number using a Liquid filter in Convertkit , here's the code: What's actually going on here? This is a complex liquid template, so let's break it down, starting from the right and working our way left. using modulo in liquid The modulo of a number is the…

Read Article

Serverless Marketing Automation with Convertkit and Next.js

Tools like Convertkit provide a lot of powerful tools you can use for marketing automation, but as a developer I want to goa layer deeper and find that using serverless functions with a framework like Next.js provides immense power to customize automation. In this episode of Learn with Jason , I…

Read Article

What to Teach Web Developers in 2021

Over the last few years, we've done a lot of React . Which is great. I love using React personally, and building egghead-next using Next.js and TypeScript has been fantastic. This year we'd like to give some of the other great frameworks and tools the stage while continuing to help folks learn…

Read Article

Crafting a Business Oriented Developer Portfolio that Stands Out

There are many reasons to create a portfolio as a software developer. You might be new to the career and need a way to represent your capabilities. You might have worked exclusively at companies that firewall your work examples behind non-disclosure agreements (NDAs) that protect their intellectual…

Read Article

Just Fucking Do It

This is an initialism I picked up from my good friend Alex Hillman. What JFDI really means I got it tattooed on my wrist with Alex's permission 😅

Read Article

how we iterate and collaborate with creators at egghead

Over the years egghead has evolved from my good friend John Lindquist making the goto screencasts on Angular.js into a platform for technical content creators to produce and publish high-quality courses for a broad audience of web developers. When we first started, things were simple 😅 Over time…

Read Article

A Child's Totally Innapropriate Introduction to Hip-Hop

This is a playlist of rap songs that I enjoy that I put together for a youngster that was listening to some questionable music. There's a lot of "missing" songs. Great songs. Hit me up on Twitter if you think I'm making any greivous errors here 😂 I like it on shuffle, usually... (Spotify limits…

Read Article

Discovery and Roadmapping Engagements for Hiring Consultants

Working with consultants can be great. We've always hire consultants to help build egghead and had a lot of success with that. Hiring anybody is risky, and "doing business" is an iterative exercise in risk management on many levels. Broadly, you can divide collaborators into two columns…

Read Article

The Barber Shop Paradox

When the barber, an expert in their field, insists that you tell them how you want your hair cut. You fuckin tell me how it should be cut please. 😂

Read Article

Use Markdown for Emails in Convertkit

One time I was hanging out in Philidelphia and witnessed something fantastic. Patrick McKenzie (better know as patio11 on the Internets) delivered a full on rap enforcing his long standing rule that everything is markdown when it comes to text. This stuck with me, as many pieces of advice patio…

Read Article

Self-Paced Email Course and Evergreen Product Pitch using Convertkit Automations

Convertkit automations provide a powerful mechanism for delivering self-paced email courses that can transition into an evergreen product pitch and promotion for your product. A typical approach is to offer some form of lead magnet as a call to action to attract new subscribers to your email…

Read Article

7 Steps to 30x500: a System of Product Success

30x500 is a repeatable product development system presented and designed by Amy Hoy and Alex Hillman. The system is research and value focused and provides and end to end cycle for creating products that people actually want to buy. This summary of the 30x500 system is very " draw the rest of the…

Read Article

Should I use automated dependency management?

It's Monday morning. You have a sip of your favorite morning beverage and open your email client. 3632 emails from dependabot spanning every repository you've ever create on Github wait for you. What do you do? Most likely ignore them, but keeping your massive list of dependencies updates is on one…

Read Article

Continuous Integration with Jest Tests and Github Actions

If you want to jump right to the finish line and have an existing Github repository you want to run tests on, drop the following into a file here .github/workflows/tests.yml and you'll be running your tests whenever you push to your main branch or a PR is created. If you'd like to actually…

Read Article

Understanding by Design

Most of us have an ingrained sense of how to teach. This comes from the typical 12-16 years folks spend in school being taught to. Through a sort of osmosis process we get the feeling of how to teach and approach sharing knowledge with others. It builds intuition. When it comes to online courses…

Read Article

useState React hook allows updating state with a function

The useState hook in React is a great way to persist and update data within your React components. A simple component might look like this: This approach works for most cases but relies on the value of count in the current render. In this second example we are passing setCount a function…

Read Article

How to be a Tummler: Designing for Conversation

My friend Alex Hillman introduced me to the concept of tummling ^1 and it has been something I've strived to be better at since I learned about it. Alex believes that we shouldn't try to be "community managers" instead we should work on being really good tummlers for our communities ❤️ Here's a…

Read Article

⚔️ Knowledge Adventure Club

Knowledge Adventure Clubs are the intersection of book clubs and Dungeons & Dragons. When I was in Jr High I'd show up to school carrying a leather briefcase. Inside of that case there were several thick books, paper, and a bunch of oddly-shaped dice. I'd sit down at a lunch room table, crack open…

Read Article

Basic 30x500 Painstorming

Painstorming is part of the 30x500 course by Amy Hoy and Alex Hillman. These are my notes from the course. Painstorming is like blamestorming, but we are hunting for the pains that people experience trying to achieve the outcomes they need and desire. When we painstorm, we aren't synthesizing our…

Read Article

Progressive Summarization for Non-Fiction Books

Consuming information is really fucking easy. Transforming information you consume into understanding you can implement? That's hard af. 😅 Progressive summarization is a layered asyncrounous approach to absorbing content (books, articles, videos, etc) and summarizing it at varied levels. This is a…

Read Article

Use Calibre to Convert Kindle Books You've Purchased to PDF

Calibre can be used to convert kindle books to PDF by installing a plugin called DeDRM_tools. You'll need the serial number of your Kindle device . As far as I know this only works with books you've purchased and if you own a Kindle. Install Calibre v4.20.0 Download the latest release of DeDRM…

Read Article

Build a Second Brain

Building a Second Brain is a course from Tiago Forte that presents a structured approach to consuming knowledge for interative understanding. It's rooted in Getting Things Done and the idea of progressive summarization . Tiago also presents the PARA approach as a taxonomy for high level…

Read Article

Using PDF Expert to Highlight and Summarize Non-Fiction Books on the iPad Pro and Mac

PDFs on the iPad Pro using PDF Expert are extremely versatile to annotate and use for studying non-fiction texts such as books and academic papers. The PDF Spec has been open for years and you aren't forced to use Acrobat if you want to harness the full annotation capabilities of the PDF format…

Read Article

5 Layers of State Management in React Applications

One of the challenges with state management in React is coming to terms and deciding as a team how you will categorize the layers of state in your application. It's variable and often nuanced to describe the layers but framing them in a simple hierarchy is an excellent tool for communicating with…

Read Article

Using React Context and Custom React Hooks for State Management in React Apps

In a complicated web application there are going to be several pieces of truly global state that you'll need across your application. This is state that components need, but it's tedious and error prone to use prop drilling to pass state data around to all of the components that might need it…

Read Article

🌱 My blog is a digital garden, not a blog

The phrase "digital garden" is a metaphor for thinking about writing and creating that focuses less on the resulting "showpiece" and more on the process, care, and craft it takes to get there. While not everybody has or works in a dirt garden, we all share a familiarity with the idea of what a…

Read Article

Start Shipping More Accessible React Applications Today with Erin Doyle

We unlocked Erin Doyle's amazing course on accessibility as a Community Resource on egghead. This means that it is free to view for every web developer on the planet with a device and an internet connection. This is part of our long term goal of making every egghead course free to view for all as…

Read Article

egghead vs Udemy for professional web developers

There are a two facts that we understand very well at egghead: Constant learning is an essential habit for professional web developers. There's not enough time in the freaking day. 😱 Some of us are lucky enough to work at companies that provide us with space and freedom to pursue continued…

Read Article

Using a dSLR as a Webcam for Live Streaming

Broadcasting on the internet is here to stay. More and more we are seeing people use sites like Twitch and Youtube to deliver real-time video and audio to connect with their audience. Increasingly over the years as a remote worker video chats have become more and more the standard of communication…

Read Article

React is a Potato Plant 🥔: Drawing the Invisible by Maggie Appleton

My friend and long-time collaborator Maggie Appleton delivered one of the most compelling talks on React I've ever seen at the online version of the Women of React conference. Here's the best part, the talk wasn't really about React! 🤯 Maggie delivered a Trojan Horse learning surprise the likes I…

Read Article

Mastering CSS as an Advanced Beginner

CSS is an oddly polarizing programming language. For years I've said to myself, and out loud on more than one occasion, that I 'hate' CSS. Over the years I've got to great lengths to avoid it entirely: Frameworks : I've used frameworks like Bootstrap to avoid needing to understand what was going on…

Read Article

Essential Gear: The Elevation Lab Anchor Pro Under Desk Headphone Hook

A good pair of headphones is something that every desk studio setup would benefit from. For me they always end up laying around on top of the desk with a long cord getting in my way and even potentially getting caught up in the wheels of my chaior and destroyed. These days I put an Elevation Lab…

Read Article

🎙 The best, highest quality microphone boom arm for your desk.

Most boom arms are cheap pieces of shit that struggle to hold your mic still, make noise, don't hold their position, and are generally bad. They are "fine" and sort of do the job they were built to do but they make very high quality microphone boom arms so you don't have to waste money on cheap…

Read Article

📼 Archiving Zoom Videos with Dropbox and Notion

We record a lot of video at egghead.io. As a fully distributed remote team we've got several channels of communication, but one of the most popular and useful channels for us is Zoom. Being able to talk face to face has a lot of benefits and allows for nuance and expression as well as mutual…

Read Article

Work from Home

I've spent the last 10 years working from the comfort and convenience of my home office. 6 of those years have been fcused on building a 100% completely distributed team for egghead.io. To add to the equation we also home educate our 5 kids and my home office has never had doors. 😂 I do not…

Read Article

Write for somebody specific.

It can be useful to consider writing for a specific individual, alive or dead, doesn't matter. Just pick somebody and write to them. Explain your point in a context and tone that they would enjoy. There are many alternatives, but writing for "everybody" without a clear inteded audience is often too…

Read Article

🧠 skill recordings creator vision

This is a collection of thoughts around the nature of our business from November 2018 and what it might look like going forward. Some of it was implemented, some not! Posting it here for posterity. We help content creators build a “community brand” around their knowledge, experience, and desire to…

Read Article

Creating a self-paced email course with ConvertKit, Typeform, and Zapier

We (egghead) partnered with Dan Abramov and Maggie Appleton to help produce their online course Just JavaScript that explores the foundational mental models that surround JS as well as how those same mental models apply to programming in general. Dan's been thinking about these mental models for…

Read Article

Improve the Lighting for Your Webcam Videos

Once you get your dSLR setup as your webcam , you're likely going to want to start tweaking your environment to get the light dialed in so you look your best. The camera makes a huge difference, but with a few tweaks you can dial it in and really pop. This video is an excellent overview:

Read Article

Your Evergreen Newsletter Sequence is a Bonsai Tree

My experience is that people tend to take things literally, want to do too much, and think in binary terms by default. I'm a big fan of evergreen newsletter sequences that line up a series of emails that get sent to your email list once a week when they subscribe to your newsletter. The mechanics…

Read Article

a decade of code (2009-2019)

Below is a chart that represents 10 years of concentrated effort. I started using Github in 2009, which was also the year that I landed my first full-time coding gig. robotlegs was the project I worked on and contributed to heavily for a full year. It was a ton of fun, great tech, and I owe so…

Read Article

ad tracking

I stopped participating in ad tracking in 2019 across most of the sites I have control over. This means that I removed mixpanel and Google Analytics from those sites and to the extent possible stopped sending them data about how users use my sites. If you had of told me a few year ago that I'd stop…

Read Article

🖋 Stop Giving af and Start Writing More

In 2019 I wrote more than the previous 5 years combined, at least publically. There's several places that I write that aren't as obvious. I spend quite a lot of time writing and curating howtoegghead.com . I also write a lot of emails that go out on the egghead newsletter . And then there are the…

Read Article

Don't just write words. Write music.

Writing is a subtle and nuanced craft. If you want people to read your words, it's on you to make it interesting and pleasing to their eyes and brains. Words have rhythm.

Read Article

6 Years of Peddling JavaScript Tuts Online

We crossed the $16M milestone on 2019-12-05, and I've been staring at the little charts Stripe shows on the dashboard. For the first two years we were really trucking along. The new customers metric is interesting. You see it growing at a steady clip and then two years in a row in April it just…

Read Article

Team collaboration and productivity in 2020

We've been testing Basecamp at egghead. 2021-01-01 Update : Basecamp didn't work out for us, and we ended up back on Slack for most day-to-day discussion and Roam for async co-thinking/planning. So far, it feels like a great tool to add to our general practice and hits a lot of sweet spots in terms…

Read Article

Mastering ConverKit by Brennan Dunn

Building an email list is both art and science. The tactics aren't obvious. The skills are built over time with slow trial and error. It's really a pain in the ass sometimes. Over the years while building egghead's list to over 150,000 subscribers there has been one continuous shining light that I…

Read Article

How do You Choose a Front-End Framework?

Have you ever experienced the crippling fear of choosing a frontend framework to go deep on, to use for your next project, or to specialize in? We've got sparse time to spend learning, and how we choose to specialize is a critical aspect of being a web developer. It's a choice that makes a…

Read Article

🤠 Gatsby on Rails

We've got a robust Rails app that does a lot of heavy lifting for us. We've crafted a full hateos REST api with a delightful GraphQL layer over the top. We started using React as our primary UI a few years ago, and we do SSR via React on Rails. It's a great project and our pages are pretty fast…

Read Article

🤔 "Should I use a framework?"

This is a question that comes up a lot: "Should I use a framework?" It's a good question, and something that I've both asked myself and thought about quite a lot over the years. Here's the thing... If you aren't using a framework there is a good chance that you are creating an ad-hoc, undocumented…

Read Article

Creating a Node.js serverless function as a proxy endpoint using express on Zeit Now

Serverless functions are incredibly convenient. Being able quickly and easily deply api endpoints with almost zero friction is luxurious! 🥰 One of my primary use cases for serverless functions has been to access and coordinate with third party APIs. If I'm deploying a static site with Gatsby for…

Read Article

💰 Making Other People Money

Early on when I started learning about business there was a lot of advice about what type of business you can run. You've got Rich Dad Poor Dad describing a real estate empire or E-Myth talking about franchises as systems. It wasn't until I got deeper into it that the advice started to be more honed…

Read Article

Remote Work: Over Communicate with Context 🙏

Being able to work remotely is probably one of the coolest fuckin things that's ever happened to me. For well over a decade I've been able to wake up and commute myself 20 feet to my home office, sip a cup of my favorite fussy coffee, and work in the comfort of my favorite pair of sweat pants. It's…

Read Article

🚌 Teaching Workshops

The first live code workshop I did was at Adobe Max. It was a huge room, with tons of attendees. Since I'd never done, or even been to a technical workshop at that point I followed the direction that were given to me. The result was a thick booklet of dead tree paper given to each attendee to follow…

Read Article

Instead of due dates we use next check-in dates for projects at egghead

Have you used Jira? It's a hellscape of dates, swim lanes, buzzers, metrics, and productivity wanking that leads to an entire career option of full-time employment as a Jira wrangler. A "project manager" if you will. At some point in our software journey the entire idea of product management…

Read Article

how to use egghead.io to level up as a web developer

The single biggest factor in continued success as a software developer, or any deeply rewarding career, is the practice of continued learning over time. Web development changes fast. Technology shifts. Innovations happen. For me, this realization came in November 2011 when Adobe made the…

Read Article

I ❤️ Really Good Notes

At egghead our workshops are accompanied by Really Good Notes. Really Good Notes can take a variety of formats: sketch notes cheat sheets flash cards written notes code examples ??? They can be a combination of those things too, which is where good notes start to become Really Good Notes. A good…

Read Article

💰 salary negotiation for web developers

Getting paid what you are worth and deserve doesn’t just happen. It’s up to you to get it. None of us are born negotiators. It takes practice. Fact is, we could all earn more if we were better salary negotiators. Take me, for instance. For my first several jobs, I was so freaking desperate to get…

Read Article

What I know about freelancing as a developer

I've spent a lot of time freelancing and will be filling this page in with what I know about doing it. Generally I send people to two resources: Double Your Freelancing from Brennan Dunn Kai Davis Both of these fellas produce amazing legit useful free content and have offerings for you to upgrade to…

Read Article

The Checklist Manifesto - Atul Gawande

The Checklist Manifesto has a very solid underlying premise, but it is crammed full of anecdotes and ultimately boils down to "a really good article". I think that checklists can be an excellent tool and facilitate higher level thought. My favorite idea for a "checklist" is Amy Hoy's Pep . It's…

Read Article

Starting your own social network with your mailing list

An email list is a social network. You list is a lot like Twitter. Folks can sign up and get notified of updates. They can unsubscribe whenever they like, and resubscribe in the future. When you start to think about your list like this, it opens a lot of possibilities, and for me anyway, removes…

Read Article

Review of Thinking in Systems: A Primer

Thinking in Systems is a wonderful book by Donella H. Meadows who was an environmental scientist. It is one of the most inspirational, terrifying, and absolutely essential texts that I've ever read. Systems thinking isn't the default. It's not something that I remember studying directly in school…

Read Article

I'm very proud of the egghead podcast.

Recording a podcast is a shitload of work. I'm not gonna try to polish that aspect of it and make it seem like it is anything but work. It's particularly difficult if you want to maintain it as a practice over time. That's true for most difficult things that are totally worth it. For me, podcasting…

Read Article

Thinking Backwards is the Way to Plan

When we sit down to plan anything, the obvious choice is what we've been taught all of our lives. Start from the beginning! It makes sense. What's the first step? Once we know where to start, it's just a matter of working step by step to the finish line. ✅ Done! This approach of starting at the…

Read Article

60-minute Consultation on Your Project

If you want to schedule an hour to discuss your code, business, marketing plan, content strategy, or other endeavor I'd be happy to help.

Read Article

How I think about sending a lot of email.

"FUCK YOU SPAMMER!" For the first year or so of egghead's existence I avoided sending email. I was nervous. I didn't even want to send receipts when we charged people, because I thought they'd see the receipt and just cancel leaving John and I destitute. That's an extreme outcome that wouldn't…

Read Article

🌲 Shadow Newsletter for Evergreen Emails in ConvertKit

For years I spent immense amounts of effort broadcasting one-off emails to to my newsletter. Millions of them! This is fine, a broadcast does the job of delivering your emails to the eager recipients at the other end of the wire. Mission accomplished, right? yes and no. The problem with this…

Read Article

Badass: Making Users Awesome by Kathy Sierra

What is a badass? I love the word itself, because there is practically no way to use it in a negative way. It's a good word. In Kathy Sierra's book, the word badass is used to describe an expert. Somebody that has learned a skill, crossed the "valley of suck" and achieved mastery. You can buy…

Read Article

Transforming exported CSV data for use in a React chart.

There are many ways to build a new feature for your applications. For me, when I need a new tool, component, or functionality I like to take a step back and think about it in terms of data. What data do I have, what data do I need, and how am I going to present and interact with the data. At egghead…

Read Article

A handy npm script for creating a new Gatsby blog post

This blog is built with Gatsby and uses MDX for the post content. It's a great setup, and so far I've enjoyed using it very much. One thing I missed from my old Octopress/Jekyll configuration was the ability to run a rake task to create a new post with all of the basic required frontmatter metadata…

Read Article

Exporting Drip Tags for Import into Convertkit

If you need to migrate your email list subscribers from Drip to Convertkit , you will run into the problem of importing each of your tags as an individual list into Convertkit . If you follow the official recommendation , they suggest that you export each individual tag from Drip. With each…

Read Article

2018 in Review

I've done these posts for several years in a row, and this year as I sit down to write it out, there's a bit of a blank spot. 2018 was a pretty good year. But why? Hah, and more importantly why should YOU care?? These posts aren't about the reader though, mostly, they are about the author and a…

Read Article

I've got a confession to make 😭

We don’t have a single test covering our front-end/UI for egghead.io. It’s embarrassing. You know how it is. Testing is a good idea. It’s objectively better than the opposite, which in our case is click testing, twitter notifications, and relying on our user base to “smoke test” the application…

Read Article

how we work at egghead.io in 2018

egghead.io is a platform to empower humans, built to challenge the status quo of how we work and learn new skills. We produce high quality, concise web development screencasts created by expert open-source contributors and other talented professionals. While we offer a lot of this content for free…

Read Article

Living and learning in 2017

Make all the big life changes at once... In 2016 we moved our family of 6 out of our home of 15 years across the country to settle in Vancouver, WA. That's quite a lot of change for everybody involved. My partner lived her entire life in Fort Worth, TX. Her family was, for the most part, within a 2…

Read Article

Why we hire consultants to help build egghead.io

Over the past few years we have built egghead.io from a relatively simple “video blog” and into a full blown platform for developers to publish their knowledge about software development as screencasts and get paid for it. The process has been intense! Every step of the way was a new road block…

Read Article

2016 was amazing. Best year yet.

2016 as a year took a lot of criticism as a year. Beloved celebrities died in a seemingly endless parade of "noooooooo". We were subjected to a painful and divisive US federal election cycle, which resulted in another shameless ass-clown getting elected to the highest office in the land. The entire…

Read Article

Setting goals for (my version of) success.

There is this amazing conference in Las Vegas once a year called MicroConf. It's a gathering of like-minded entrepreneurs that (for the most part) are boot-strapping their business. This means that they aren't taking outside investment, specifically of the venture capital variety. It's a spectacular…

Read Article

Build an Image Gallery Using React, Redux and redux-saga

Building an Image Gallery The image gallery we will build is a simple application that displays an array of image URLs loaded from a service (Flickr), and allows the user to select them individually. It will be built with React, using Redux and redux-saga. React is being used as the core framework…

Read Article

2015 Year in Review

It’s been two years since I woke up dreading a workday. And I work almost every day. When we first set out to build egghead, I told my parter John that all he had to do was make amazing content, and that I would do the rest . {% emoji flushed %} For the most part, I took that very seriously, and…

Read Article

Bootstrapping egghead.io to feed my family: 2014 in Review

2014 Year in Review It's that time of the year. People dusting off the blog and endeavoring to capture the past 12 months of their life in a wordy nutshell. It's something that I've never participated in, but I thought I'd give it a try. I quit my job. This still frightens me. In February I quit a…

Read Article

Let's Make Full-Ass AngularJS Directives

With best intentions we set forth to create the mighty directive. The steepest slope of the dreaded AngularJS learning curve. The "place where the jQuery goes." So what is a directive? We've talked about this before , and decided that they are not where the jQuery goes... usually... if you are…

Read Article

Stop writing For loops. Start using underscore.

How many for loops did you write today? This week? Sure. That's harmless enough. Ugly and weird, but not something to really complain about. But this is all too common: Which on the scale of bad code, isn't even that bad, but you start throwing some if s in there and the insanity really starts. I…

Read Article

How to Build a Subscription Service on Rails: A Noob's Guide

There are few things as nerve-wracking as pushing your first subscription website into production. Am I covering all the bases? Will everything break and leave me in a pit of customer support sadness? How do I even take payments? Are they just going to laugh at me? Some Background My friend John…

Read Article

How to Record a High Quality Screencast

Audio: convert mono to stero add a slight delay to one channel use an EQ add a touch of reverb (not too much) add a little compression

Read Article

Why I Built an AngularJS Training Site on Rails

If you're into AngularJS at all, you are probably familiar with the kickass AngularJS video training from egghead.io. If you haven't seen egghead.io, it is a collection of 50+ short "bite-sized" training videos, largely focused on the AngularJS framework. The videos are created by (and feature…

Read Article

Configuring Dependency Injection in AngularJS

Dependency injection is the act of supplying values or object instances (dependencies) to target objects from outside of the target object. In many (most?) cases this is automated by a framework, such as AngularJS. This means that a given target object does not create its own dependencies, through…

Read Article

Learn AngularJS this Weekend

AngularJS has a reputation for a steep learning curve. It's definitely complex, but follows the 80/20 rule. 20% of the features are what you will use 80% of the time . If you are new to AngularJS and have a weekend to study, there are some very high quality resources that will let you start Monday…

Read Article

Using AngularJS? Stop using jQuery as a crutch.

Have you ever heard (or said!) this: "Directives? That's where the jQuery goes." I definitely have. In an effort to better understand @joshdmiller 's excellent ng-boilerplate , I wanted to understand its dependency on Boostrap. More specifically, I wanted to see if I could swap out Twitter…

Read Article

The basics of using ui-router with AngularJS

URL routing is a popular approach to matching the contents of a URL to specific functionality within a web application. URL routes programatically present specific content to users based on the URL that they are visiting. It is a popular approach that has proven to be very effective. Something that…

Read Article

AngularJS Directives That Override Standard HTML Tags

Directives are the heart and soul of AngularJS. They are incredibly powerful. AngularJS sets out to extend the grammar of the browser to supply semantics that facilitate the creation of web applications, going beyond the standard hyper-linked web page. The primary weapon to accomplish this is the…

Read Article

Why Doesn't My Photography Studio Website Appear in Search Results?

This is a series of post examining why our Fort Worth photography studio website performs poorly in Google search results, and why it fails to convert the visitors it does get into new clients. The first post sought to analyze Google Analytics data and get a clue as to how users arrive to the…

Read Article

Optimizing a Photography Studio Website for Converstion and SEO: The Analysis

The internet is a competitive place for small businesses, and this is especially true when we are talking about portrait photographers. My lovely wife is a family photographer in Fort Worth , Texas. She's been doing portrait photography professionally since 2007, and being the good nerd husband I…

Read Article

Coming to Terms With Enterprise JavaScript

What is enterprise javascript? Good question. One that might even make you chuckle 1 a little bit on the inside. The word "enterprise" is definitely a loaded term. It could be considered by some to be a buzzword. Others might say "Why are we talking about starships?" When I use the term "enterprise…

Read Article

The Paralyzing Grip of Fear

My sons love playing basketball. After a certain age (around 12), youth sports change. The court or field is no longer filled with kids that were dragged to the game by their parents. These kids are here because they love playing the game. So what do you do if your kid loves the game, but just isn't…

Read Article

What I Learned From Brennan Dunn's Consultancy Masterclass

Consulting is something that I truly love. Helping businesses succeed, helping employees to stop focusing on mundane repeatable tasks, helping enterprises drive large scale commerce... these are truly activities that I enjoy. Getting into the mix, digging up core problems and providing solutions is…

Read Article

My Sketchnotes and Thoughts from BaconBizConf 2013

It is hard to explain how excited I was when Amy announced BaconBizConf in April of 2013. A small conference devoted to like-minded people that either are, or want to be, bootstrapping product businesses. The speaker lineup included personal "gurus" that I look up to and listen to closely like…

Read Article

Lessons Learned: A Year with a Large AngularJS Project

After a year of working with a large AngularJS project, I thought I'd share a few of the lessons that I learned in the process. Firstly, I love AngularJS. It suits my needs exceedingly well, and I expect it will be my goto for the forseeable future when I need a solid framework for "thick client…

Read Article

Size and Composition of Effective Software Teams

The success or failure of any project is based on the team or teams working on it. Teams are like fingerprints and snowflakes. They are composed of individuals with unique experiences and skillsets. When we set out to build large applications in a reasonable amount of time, we will generally build…

Read Article

AngularJS, Dependency Injection, and when is a singleton not a Singleton?

The Singleton is the Highlander of design patterns. There can be only one . An example of a Singleton implementation might look something like this: from Tom Roggero The above JavaScript is from an answer from StackOverflow that seemed resonable. I've never actually needed an enforced Singleton…

Read Article

A rose by any other name?

I posted an article about using models to assist in creating leaner, meaner controllers. It resulted in a lively conversation in the comments that spawned an interesting rebuttal from Rob Conery that essentially says I am full of it, and the names I attach to the patterns I use are wrong. This…

Read Article

Modeling Data and State in Your AngularJS Application

Respect your data. Contain your state. Data and state are the foundation of your application. These two items should be absolutely respected. As you work through the AngularJS documentation, these two items are generally stored on the controllers. This works OK, but as your app grows beyond the…

Read Article

5 Essential VIM Plugins That Greatly Increase my Productivity

There are a lot of VIM plugins to choose from. An individual's list of what would be considered "essential" is largely a personal matter. For any given plugin, there is also probably going to be an excellent alternative plugin that does the same basic thing in a slightly different way. I'm just…

Read Article

It is Tiny. One Week Developing With an 11" MacBook Air

For as long as I can remember, all of my computer upgrades have been "bigger and badder." Outside of moving from a FULL ATX DESKTOP WORKSTATION to a laptop, Moore's law has played out nicely. Every few years I'd get something bigger and better. Not this time. After several years of lugging around a…

Read Article

Getting to Know VIM

It's like coming full circle. When I was first introduced to computers, they very much resembled what I see in Terminal today. I've always had a distinct fondness for the command line interface. That said, when I started using computers professionally most of my time has been spent in fancy GUIs…

Read Article

VIM Adventures: A Fun Way to Pick up Some Basic Skills

Vim Adventures is a fun browser based game that teaches basic VIM skills while adventuring. It is kind of silly, and can be a bit... frustrating... but that is the point. This is VIM after all! No pain, no gain ;)

Read Article

Using Custom Jasmine Matchers to Make Unit Tests More Readable

Image from purplemattfish I'm a stickler for the "single assertion per test" guideline. One of the pillars of good unit tests is readability. Multiple asserts undermine this principle and make tests that are more difficult to read, understand, and maintain. A clean solution to this problem is to use…

Read Article

Practical Object Oriented Design is Excellent

I've been reading the Rough Cut of Practical Object Oriented Design , and I have been absolutely enjoying every page. It isn't very often that a technical book comes along that really strikes me as a "new classic," but this one qualifies. Sandi Metz has compiled a concise review of SOLID design…

Read Article

On Transitioning to JavaScript From AS3/Flex

I'm currently working on a large enterprise JS application, and enjoying myself quite a bit. We've implemented standards and practices that remove most of the bad parts of JS dev. We are using straight up JS with AngularJS . We are covering our important logic with solid unit tests. We are…

Read Article

Code Review: How to Make Friends and Influence Developers

I'm a huge fan of peer review, especially with Atlassian's Crucible tool. It can be hard to introduce code review to a group that isn't used to doing it, or has had bad experiences with "hostile" review process in the past. It can be a very effective way to share knowledge and increase quality of…

Read Article

Fresh Start: Migrating from Wordpress to Octopress

I've been wanting to part ways with WordPress for some time. It's been expensive, running a VPS for the hosting. I've been "attacked" on multiple occasions that result in blacklisting from the Google when I ran on much less expensive shared hosting. It is probably theme dependent also, as well as…

Read Article

What I'm Doing Now

Currently focused on applying core instructional design principles to egghead.io with more interaction with instructors, live events, and content development before releasing the final product.

Read Article