---
title: Michael Washburn Jr's Blog | Michael Washburn Jr (2)
description: Hi, I'm Mike. I'm a full-stack software engineer with a passion for web app development and technical leadership. I'm currently working as a Tech Lead at HubSpot. In my free time I like to hike, camp, and brew beer. (2)
---

Filter by tag

All Tutorials React Engineering Best Practices JavaScript Python Django Product Ownership Web Apps Redux Research

# Posts by Michael Washburn Jr

## Author Bio

![Picture of Michael Washburn Jr](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=150&name=AuthorAvatar.jpg)

Hi, I'm Mike. I'm a full-stack software engineer with a passion for web app development and technical leadership. I'm currently working as a Tech Lead at HubSpot. In my free time I like to hike, camp, and brew beer.

---

## Posts

[![Refactoring JQuery to React](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/refactoring-to-react.jpg?height=370&name=refactoring-to-react.jpg) 

](https://michaelwashburnjr.com/blog/refactoring-jquery-react)

[Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials), [React](https://michaelwashburnjr.com/blog/tag/react), [JavaScript](https://michaelwashburnjr.com/blog/tag/javascript)

 January 30, 2018

### [Refactoring JQuery to React](https://michaelwashburnjr.com/blog/refactoring-jquery-react)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

JQuery is quickly becoming a thing of the past, and in it’s place stands React. I mean, [even John Resig, author of JQuery, uses React now](https://twitter.com/jeresig/status/726058698989277185). So how can you refactor your website to use React instead of JQuery?

[Read More](https://michaelwashburnjr.com/blog/refactoring-jquery-react)

[![Redux: Drawing the Line Between Actions and Middleware](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/redux-actions-middleware.jpeg?height=370&name=redux-actions-middleware.jpeg) 

](https://michaelwashburnjr.com/blog/redux-actions-middleware)

[Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials), [React](https://michaelwashburnjr.com/blog/tag/react), [Redux](https://michaelwashburnjr.com/blog/tag/redux), [JavaScript](https://michaelwashburnjr.com/blog/tag/javascript)

 November 30, 2017

### [Redux: Drawing the Line Between Actions and Middleware](https://michaelwashburnjr.com/blog/redux-actions-middleware)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

.When I first started out using [Redux](https://redux.js.org/), I learned very quickly how to use (read: abuse) Redux actions. [Actions](https://redux.js.org/docs/basics/Actions.html) and [middleware](https://redux.js.org/docs/advanced/Middleware.html) used to be simple: if it’s synchronous, put it in an action, but if it’s asynchronous then you should use middleware.

[Read More](https://michaelwashburnjr.com/blog/redux-actions-middleware)

[![The Best Way to Store Tokens in Redux](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/redux-localstorage.jpg?height=370&name=redux-localstorage.jpg) 

](https://michaelwashburnjr.com/blog/best-way-to-store-tokens-redux)

[Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials), [React](https://michaelwashburnjr.com/blog/tag/react), [Redux](https://michaelwashburnjr.com/blog/tag/redux), [JavaScript](https://michaelwashburnjr.com/blog/tag/javascript)

 November 21, 2017

### [What’s the Best Way to Store Tokens in Redux?](https://michaelwashburnjr.com/blog/best-way-to-store-tokens-redux)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

One problem I’ve been struggling with lately is: what is the best way to store tokens when using redux? I could store it in the Redux state, but then it wouldn’t be there after refresh. I could just store it in the browser’s localStorage, but where would I do that?

[Read More](https://michaelwashburnjr.com/blog/best-way-to-store-tokens-redux)

[![Django REST framework](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/django-auth.jpeg?height=370&name=django-auth.jpeg) 

](https://michaelwashburnjr.com/blog/django-user-authentication)

[Python](https://michaelwashburnjr.com/blog/tag/python), [Django](https://michaelwashburnjr.com/blog/tag/django), [Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials)

 November 14, 2017

### [User Authentication with Django REST Framework](https://michaelwashburnjr.com/blog/django-user-authentication)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

User Authentication is a simple concept, but when it comes to properly implementing it in Django, things can get complicated. Django offers an abundance of different authentication mechanisms: `BasicAuthentication`, `TokenAuthentication`, `SessionAuthentication`, and various ways to implement custom authentication mechanisms. 

[Read More](https://michaelwashburnjr.com/blog/django-user-authentication)

[![outstretched hand with water in the background, Narrowing Your Focus: The Key to Being a Successful Developer](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/pexels-photo-296282.jpeg?height=370&name=pexels-photo-296282.jpeg) 

](https://michaelwashburnjr.com/blog/narrowing-your-focus-successful-developer)

[Engineering Best Practices](https://michaelwashburnjr.com/blog/tag/engineering-best-practices)

 November 7, 2017

### [Narrowing Your Focus: The Key to Being a Successful Developer?](https://michaelwashburnjr.com/blog/narrowing-your-focus-successful-developer)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

I’ve recently come to the realization that I can’t work towards all my goals and achieve the progress that I need. When you’re actively trying to make progress on too many goals, it makes it harder to get to your milestones. You’re spread too thin. When you can’t complete milestones, you quickly lose the drive to work on anything. Before long, you’ll give up. **But it doesn’t have to be that way.**

[Read More](https://michaelwashburnjr.com/blog/narrowing-your-focus-successful-developer)

[![Laptop and notebook on a table, Boost Productivity with the Right Dev Environment](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/dev-environment.jpeg?height=370&name=dev-environment.jpeg) 

](https://michaelwashburnjr.com/blog/productive-dev-environment)

[Engineering Best Practices](https://michaelwashburnjr.com/blog/tag/engineering-best-practices)

 October 17, 2017

### [Boost Productivity with the Right Dev Environment](https://michaelwashburnjr.com/blog/productive-dev-environment)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

 Software Development can be hard on its own, but when your own development environment doesn’t work for you it makes it even harder.

[Read More](https://michaelwashburnjr.com/blog/productive-dev-environment)

[![](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/python.jpg?height=370&name=python.jpg) 

](https://michaelwashburnjr.com/blog/5-tips-for-writing-better-python)

[Engineering Best Practices](https://michaelwashburnjr.com/blog/tag/engineering-best-practices), [Python](https://michaelwashburnjr.com/blog/tag/python)

 September 26, 2017

### [5 Tips for Writing Better Python](https://michaelwashburnjr.com/blog/5-tips-for-writing-better-python)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

I’ve been writing Python for some time now, and when I reflect on some of the older code I’ve written… I sometimes cringe. For example, when I was just starting out, I wrote this Sudoku game in python (available on GitHub [here](https://github.com/MichaelWashburnJr/PythonSudoku)). I thought that this was one of my better pieces of work at the time. It turns out I can’t even clone and run this because I didn’t add a setup.py or requirements.txt file, a mistake I would never make today!

[Read More](https://michaelwashburnjr.com/blog/5-tips-for-writing-better-python)

[![Why You Shouldn’t Import Functions and Classes Directly in Python](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/capture-2.jpg?height=370&name=capture-2.jpg) 

](https://michaelwashburnjr.com/blog/shouldnt-import-functions-classes-directly-python)

[Engineering Best Practices](https://michaelwashburnjr.com/blog/tag/engineering-best-practices), [Python](https://michaelwashburnjr.com/blog/tag/python), [Django](https://michaelwashburnjr.com/blog/tag/django)

 September 23, 2017

### [Why You Shouldn’t Import Functions and Classes Directly in Python](https://michaelwashburnjr.com/blog/shouldnt-import-functions-classes-directly-python)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

Today I was doing some programming, trying to finish up an old project that was 80% done, but I never finished. The project is an API for sharing beer ingredient data, being the avid homebrewer that I am. I was in the middle of writing some pretty simple authentication logic, when I found a weird bug in my code. The code, featured below, was pretty straightforward, or so I thought.

[Read More](https://michaelwashburnjr.com/blog/shouldnt-import-functions-classes-directly-python)

[![Building a Web App: Developing a React.js Frontend for an API](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/react-icon_svg_.png?height=370&name=react-icon_svg_.png) 

](https://michaelwashburnjr.com/blog/building-web-app-ground-developing-react-js-frontend-api-part-4)

[Web Apps](https://michaelwashburnjr.com/blog/tag/web-apps), [Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials), [React](https://michaelwashburnjr.com/blog/tag/react), [JavaScript](https://michaelwashburnjr.com/blog/tag/javascript)

 September 11, 2017

### [Building a Web App: Developing a React.js Frontend for an API — Part 4](https://michaelwashburnjr.com/blog/building-web-app-ground-developing-react-js-frontend-api-part-4)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

*This post is part of a series of mine on building web applications from the ground up. It covers everything you need to know to completely finish a web application. If you haven’t been following the series, please go back and [read part 1](https://michaelwashburnjr.com/2017/08/15/building-webapp-tutorial-p1). *

[Read More](https://michaelwashburnjr.com/blog/building-web-app-ground-developing-react-js-frontend-api-part-4)

[![](https://michaelwashburnjr.com/hs-fs/hubfs/Imported_Blog_Media/coding.jpg?height=370&name=coding.jpg) 

](https://michaelwashburnjr.com/blog/building-webapp-tutorial-part-3)

[Web Apps](https://michaelwashburnjr.com/blog/tag/web-apps), [Python](https://michaelwashburnjr.com/blog/tag/python), [Django](https://michaelwashburnjr.com/blog/tag/django), [Tutorials](https://michaelwashburnjr.com/blog/tag/tutorials)

 August 29, 2017

### [Building a Web App: Django Rest Framework API Development — Part 3](https://michaelwashburnjr.com/blog/building-webapp-tutorial-part-3)

![Picture of https://4674423.fs1.hubspotusercontent-na1.net/hubfs/4674423/AuthorAvatar.jpg](https://michaelwashburnjr.com/hs-fs/hubfs/AuthorAvatar.jpg?width=30&name=AuthorAvatar.jpg) [Michael Washburn Jr

](https://michaelwashburnjr.com/blog/author/michael-washburn-jr)

*This post is part of a series of mine on building web applications from the ground up. It covers everything you need to know to completely finish a web application. If you haven’t been following the series, please go back and [read part 1](https://michaelwashburnjr.com/2017/08/15/building-webapp-tutorial-p1). *

[Read More](https://michaelwashburnjr.com/blog/building-webapp-tutorial-part-3)

[ Prev ](https://michaelwashburnjr.com/blog) [1](https://michaelwashburnjr.com/blog) [2](https://michaelwashburnjr.com/blog/author/michael-washburn-jr/page/2) [3](https://michaelwashburnjr.com/blog/author/michael-washburn-jr/page/3) [ Next ](https://michaelwashburnjr.com/blog/author/michael-washburn-jr/page/3)