RSS Amplifier

Blog

Harry Wolff

Personal site of Harry Wolff (hswolff). Find articles on JavaScript, videos about code, and stories of my life.

hswolff.comRSS feed ↗65 posts

Latest posts

Things I Don’t Like about Vue.js (as a React engineer)

This blog post is a follow up from my last article What Vue.js Does Better Than React . This article, instead of focusing on what Vue.js does better than React, will take the opposing perspective. Let's take a dive into all the things that I think React does better than Vue.js Notable preface: I've used React professionally for the past 5 years, so it's obviously my UI framework of choice. I've…

What Vue.js Does Better Than React

I've been a React engineer for the past 5 years. I love React. I love making React applications. I think it's one of the best UI frameworks available right now. However, there are a few competitors in this space. One of the biggest is Vue.js . I've played around with Vue.js a little bit in the past but I figured it was way past due to do a deep dive into how Vue.js works, and how it makes my life…

My Tech Stack (2020 Edition)

In my spare time I enjoy working on side projects. Little websites and projects that I can play around with to either learn new things or to create something for fun. In the past I've always been stymied in my attempts to create something for fun because some part of the process becomes laborious and boring to work on. So when that inevitably happens, I stop working on the project, and dust begins…

2019 In Review

So not only is the end of 2019 quickly approaching, but so is the end of a decade. The 2010s are drawing to a close. An entire decade is over, and we're just about to enter the 2020s. What an amazing time to be alive. I wanted to take a few moments to reflect on the past year. Quite a lot happened and I would be remiss if I didn't reflect on the growth and exciting events that happened to me in…

Pro VSCode Tricks

One of the most important things you can do to become a highly efficient programmer is to learn how to use your code editor. Most text editors, or IDEs , host a huge amount of functionality that help you code fast and efficiently. The only thing that sucks is that it can be very hard to learn all of those pro features - there's almost too much! I've been using VSCode now for over two years and…

Why Is React Concurrent Mode Exciting?

A guide for non-React engineers. Last week the React team released an experimental version of Concurrent Mode to the public. It's been in development for over a year and the React community has been very excited about its release. What is Concurrent Mode? The documentation pages has a nice and concise description: Concurrent Mode is a set of new features that help React apps stay responsive and…

React Alicante 2019

On September 27th, 2019 I gave a conference talk in Alicante, Spain at React Alicante 2019 . Believe it or not this was my first true conference talk of 2019! What fun! Had a great crowd show up for my talk. It was in the middle of the morning on the first day which turned out to be a great time to get high attendance. My talk was called Evergreen Legacy Applications , here was the summary: While…

Guest on FreeCodeCamp Podcast

Recently I was a guest on freeCodeCamp's Podcast ! I had a lot of fun chatting with Abbey , the host, who asked wonderful questions that let me talk at length about my career. There's a wonderful blog post up about the contents of the episode if you want to read the cliff notes, but to get most of the meat definitely tune in and listen. Here's a direct link to the episode .

How To useContext With useReducer

Welcome back to the last installment of our mini-course on useReducer ! If this is your first time here I recommend you check out the first two posts in this series: Why I Love useReducer Level Up useReducer with Immer Today's post rounds out this trilogy. Today we learn about useContext , and how it makes your usage of useReducer flexible for any size application. useContext is of course the…

Level Up useReducer with Immer

If you're just joining us, this post is an add-on to my Why I Love useReducer post. If you haven't read that already, I recommend you take a second and have a peek before you continue reading this post! And if you want to skip to the third installment of this trilogy then go ahead and check out How To useContext With useReducer So, now that we all agree that useReducer is the best thing since the…

Why I Love useReducer

This post is the first of a trilogy. Check out the other two posts as well: Level Up useReducer with Immer How To useContext With useReducer I didn't realize until recently how much I loved the React Hook useReducer . It's one of those advanced hooks, and while I read the documentation about it and already have a good amount of experience with Redux , it took a little while for me to fully…

What is React Ink?

The first time I learned about React Ink I was immediately intrigued. A project that lets me take all my React knowledge and use it to make a CLI program? Sounds great to me! In this video we'll explore what React Ink is and what you can do with it. We'll get up and running from a blank project and get our own React Ink project working locally. <div class="videoWrapper"> <iframe width="560"…

Setting Up TypeScript

Now that we've gotten a nice and easy introduction to what TypeScript is we can start talking about how to code with TypeScript. Specifically how to get our local dev environment set up so that we can actually write TypeScript code. That means getting TypeScript to compile and type check on our local machine. I'm not going to go into how TypeScript works yet - that'll be covered in a future blog…

What is TypeScript?

TypeScript is probably the best way to add static typing to JavaScript. That's probably all that people really know about TypeScript though - that it adds static types. I like to delve a little deeper into a topic before I start to learn it, so I figured I'd take you along for the ride. Check out the video for all the details, or read about the highlights from the video below. <div…

Preview of the JavaScript Ecosystem in 2019

I’m not really in the business of telling the future however I do think it would be fun to mirror all of my year in review posts with one that looks forward to the year to come. There’s a lot of new things I’m very excited about this coming year. I don’t know when I’ll be able to lay my grubby hands onto all these new shiny things but I can tell you that I’m practically drooling at all the…

Top 10 Albums of 2018

2018 was quite the year for me. The biggest and most obvious change was becoming a parent . That was far and above the highlight of the year. Not only was was becoming a father the highlight of the year but it was also a big influence on my music listening behavior. Namely, it put a bit of a damper on how much music I could listen to. Most of the time was spent listening to lullabies. Or rather,…

React Year in Review 2018

Hello everyone! Welcome to my React Year in Review 2018! <div class="videoWrapper"> <iframe width="560" height="315" src="//www.youtube.com/embed/pLh7LMghChE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> React's 2018 was one of steady growth and doubling down on foundational concepts and principles. It was a year…

JavaScript Year in Review 2018

Well that's it! 2018 is coming to a close! What a year it's been, eh? A lot of highs...maybe a few more lows than I wanted. However your year turned out I know we can all agree that it was another great year for JavaScript. There's a lot of 2018 recap posts and I would be remiss not to add my own into the mix. However for my 2018 recap I want to focus on some of the big JavaScript news and…

Make Your Code Beautiful With Prettier

I'm a fan of cleanliness. I like a clean desk and a clean room. My desk at work is pretty sparse and minimal. I try and avoid clutter as it helps me find whatever it is I need at the moment I need it. One of my most disliked tasks is having to clean up my apartment. Inevitably my apartment gets messy - that's just the unhappy side effect of living there and using it every day. And as the clutter…

Use React.lazy and Suspense to Code-Split Your App

The marquee feature of React 16.6.0 was the introduction of React.lazy , a built in way to do code-splitting with React. In all honesty I was hoping to have had this article written about two weeks ago, but in an entirely ironic and unintentional sequence of events that didn't happen because I got lazy. Well that's not truly fair to say - more so that I ran out of time and rather than stay up till…

Priorities

This past weekend was Thanksgiving which meant that I spent the past couple of days with family. It was great to unplug and get away from the ridiculously fast paced world of tech and coding. However by virtue of unplugging it meant I wasn’t able to make anything. Instead I was able to focus on health and family, letting everything else I usually worry about fall to the wayside. I’m a firm…

React Hooks

React Hooks! Hooks! Hooks! Hooks! Sorry, had to yell that a few times to get it out of my system. I definitely find React Hooks to be one of the most exciting new features that has hit React in a long time. I don't think I've been this excited about a new feature since React Fragments and that was way back in the initial React v16.0.0 release... last year . So I guess that means I haven't been…

Fatherhood

On April 7th, 2018, my son was born and I became a father. His birth turned me into a father. A dad. His daddy. Someone who will always be there for him, no matter what. I've long wanted to be a father, to have a child. It's something I've wanted for as long as I can remember. Some people grow up wanting to get married, or to buy their first car. I've always wanted to be a father. On April 7th my…

Top 10 Albums of 2017

2017 was a year in which many of my current favorite artists put out new albums. Going into the year I was super excited and impatient to get my hands on their newest creations. If I liked what they made before, surely I'll like what they make today? Sadly that didn't turn out to be the case. Most of the music that I listened to on repeat was from artists that I had never listened to before. Most…

Experiences With GraphQL

A couple of months ago I started working on a side project called TV Chat. My goal with this project was to create a website where people online could come together to chat about tv shows as they were airing live on TV. I'm a big tv watcher, and I like watching TV shows with friends and family. However my tastes don't always align with theirs. So my hope was to create TV Chat so that I could chat…

Vlog: Deep Dish Pizza and MongoDB World 2017

Last month I had the pleasure to attend MongoDB World 2017. It was my first time attending a conference as an organizer rather than an attendee. It was a lot of fun seeing behind the scenes. Getting a feel for all the work that is required to run a successful conference was a great experience. I always knew it was hard work to run a conference, but to actually see it and live it was an amazing…

Creating My First Atom Package: tree-view-extended

A little while ago I decided to play with Facebook's Nuclide project. I was curious what enhancements it added to Atom and if any of them would increase my workflow. I found the project altogether nice, bringing in some nice additions to Atom. However it also adds a lot of other functionality that I will never use. So I ended up disabling Nuclide, with the added features not outweighing the other…

The Bridge to Teaching Redux

I've long struggled with teaching Redux. It's such a fundamental different way of thinking. When I search for comparisons to ease the concepts I always find myself sputtering words that never quite bridge that gap. I've realized the reason I struggle with teaching Redux is because there is no easy bridge that can be used to get to the island that is Redux Comprehension. A learner is typically…

React Native NYC Meetup

I gave my presentation on React Native ART and D3 at the React Native NYC Meetup . <iframe width="640" height="360" src="https://www.youtube.com/embed/_OWsWNICfy4?rel=0&t=39m7s" frameborder="0" allowfullscreen></iframe>

ForwardJS Course

I gave a workshop for ForwardJS 2017. <a href="https://forwardcourses.com/workshops/116"> <img width="640" src="/images/forwardjs-conference.jpg" /> </a>

Top 10 Albums of 2016

2016 was a damn good year for music. Great albums were released by established and new artists alike. My favorite moments this year were when I tried a new album from an established artist and found myself appreciating their new sound and style. Two marquee moments this year were when The Avalanches and Frank Ocean released their sophomore albums. They were years in the making, and while they…

React Native ART Presentation

Earlier this year I had the great opportunity to be a speaker at the Crater Remote Conference . I presented about my experiences with using React Native ART and D3 , giving a complete walkthrough and explanation of my example application BetterWeather . The recording of this talk was recently posted online and I wanted to share it with you all. There's a slight technical snafu that happens in the…

Introducing Reptar 2.0.0

Introducing Reptar 2.0.0! It is with great pride that I announce the release Reptar 2.0.0, a static site generator that roars. Install it now! npm install -g reptar Now hold on a second, you might be asking yourself, What happened to Reptar 1.0.0? Well Reptar is actually the static site generator formerly known as Yarn . Yarn was renamed to Reptar because another NPM module was recently released…

React Native ART and D3

This is a follow up to my previous article about my experiences using React Native I gave a talk on this topic which you can watch The most powerful feature of React Native is that it lets you write your native application using React and JavaScript. React is certainly powerful as it greatly simplifies the mental model required when constructing your UI. However what's even more powerful is the…

React Native

A couple of months ago I wrote a React Native application, the new Chartbeat iOS App . It was a great experience. I got to learn a lot about React Native and was able to create and launch an app. If there's anything I like more than writing software, it's releasing it. I was able to give a talk recently at SyntaxCon about getting started with React Native. I named the talk Going Native with React…

Introducing Yarn

Note! Yarn has been renamed to Reptar Hello everyone! I want to introduce you to my newest creation, Yarn ! Yarn is a static site generator that I wrote. It was built due to my frustrations with the current static site generators available. I figured, "Hey, it can't be that hard to write my own static site generator!" So I started working on Yarn. Seven months later and I'm now proud to introduce…

Top 10 Albums of 2015

For a long time the main way I listened to music was as an album. I would get an album and listen to it in its entirety, from start to finish. All my opinions and feelings about those tracks would be heavily shaped within the context of the album. Occasionally I'd hear a song on the radio before hearing it on the album and it would warp my attachment to that song, and by extension the album. If…

Technical Debt, Organizational Debt

Debt, in the context of a company, takes on many forms. From the quite literal of owing money to the more abstract concept of technical debt . Technical debt is, to use Wikipedia's tidy definition: The [technical] debt can be thought of as work that needs to be done before a particular job can be considered complete or proper. If the debt is not repaid, then it will keep on accumulating interest,…

Airbnb's Management Style

It's always interesting to hear how other companies are managed. It gives greater context for what I experience every day at work and broadens my idea for what people are doing to improve their company. I've been reading First Round's The Review magazine for a couple of weeks now. Some of the articles are pure recruiting fluff but a couple have some real interesting tidbits. I found the recent…

First Impressions of AngularJS 2.0

Over the weekend I created a clone of Hacker News with Angular2 . I've read a lot about the changes Angular 2 will have and I wanted to see for myself what it would be like to create an app. What would it be like? How will it be better than Angular 1? Will I enjoy writing an Angular 2 app? Before I delve into my impressions let me preface everything that follows with the obvious: Angular 2.0 is…

Essential Atom Packages

Atom is a hackable code editor from the fine folks at GitHub. It's written entirely in JavaScript (specifically CoffeeScript) and runs in a self contained Chromium environment. It's new and young, yet slowly growing in popularity and features. After using Sublime Text for the past three years I found myself experiencing some growing pains. ST doesn't seem to be actively maintained, communications…

Top 10 Albums of 2014

Music. In 2014. God, how can I even begin? 2014 wasn't even a year of music for me, it was a year of growth with Rachel and starting a whole new chapter in my life. The marriage was what consumed the entire year, with everything else just a blur in the background. Yet the music of this year is what accompanied me along the way towards saying my blessed vows. It was the music, and the story of how…

Building Hacker News With Angularjs

This week Hacker News announced its official API . This is really great news. Prior to this official API all 3rd-party apps resorted to scraping the website to as their data source, a brittle and unscalable practice. This new API provides a standard and efficient way to create 3rd-party Hacker News applications. Last night I decided to try out this new API. I randomly decided to sprint and see how…

Chartbeat Presents at Front-end Meetup

Last Thursday Chartbeat hosted the Frontend Innovators Meetup group at our office. The focus was Angular.js , and my co-workers and I had the good fortune of being presenters. Our goal was to share some of the experiences and insights we’ve gained over the past year working with Angular.js. From Closure To Angular <iframe src="//www.youtube.com/embed/IVVzM6upJN4" width="560" height="315"…

Building an Entire Product in 6 Weeks (How we built the Chartbeat Paid Content Tool)

A little while ago we released our Paid Content product after two consecutive six week sprints. The first six weeks were spent creating the MVP , and the second six weeks were spent polishing it up. This is the breathless tale of those first six weeks. Part 1: Research This whole thing began because we saw that our clients were struggling. Paid content, sponsored content, native content – whatever…

Don't Deal With It, Fix It

I've used Sublime Text for a long time. I started using it when it hit version 2 and clung to it like all hell was about to break loose. It fit my needs well. Opened nearly instantaneously, had sensible defaults for editing, and a lush and vibrant community of third-party packages that I could install to extend its core. There were a few things that bothered me about Sublime Text 2. Things that I…

The Modern Front-end Workflow - From Start to Finish

Front-end engineers have gone through a bit of a renaissance in recent years. There's been a wild and wonderful spurt in innovation that has completely changed what it means to be a front-end developer. We now have a vast and wide array of tools available to us, allowing us to develop faster and smarter. We now can push the limits of what a modern web browser can do, accomplishing things that two…

Smarter Express Routing

In a large ExpressJS application it is not optimal to define all your routes and handlers in the same file. For the sake of code clarity and cleanliness Express route handlers are often placed in their own file. Those files are then included in the file that is bootstraps your application. What you usually ends up with are two files, user.js and app.js . user.js module.exports = function(req, res)…

An easy introduction to AngularJS

<p>AngularJS doesn't do much. When you take it out of the box (i.e. load it on a webpage) you're only given five things to play with: modules, services, controllers, directives, and filters.</p> <p>Each of these things complements the other. There are very slim overlaps in functionality between all the moving pieces of AngularJS. That fills my heart with joy because I only have to learn how to do…

Make Your Code Pretty

<p>All too often I'll see code that'll make me gag.</p> <p>There's inconsistent indentation, no linting, and trailing white space run amok. It won't effect how your code is executed but it makes for an unwholesome experience for whoever reads your code.</p> <p>I won't place the blame for these types of code 'errors' on the programmer. If you don't have the proper software installed they are…