# Jonathan Creamer > Building Frontend tooling #DivOps. Senior Engineer @microsoft 🏢. Previously @eventbrite 🎉 @lonelyplanet 🌎JavaScript | Typescript | React | Node.js Public Ghost content for AI and LLM tooling. Use `/llms-full.txt` for consolidated page and post context. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages - [About Me](https://www.jonathancreamer.com/about.md) - JavaScript and front end technologies are my passion. I also believe that you cannot ever stop learning which is why I stay active in the development community attending user groups like http://nashjs.org, and NashDotNet, blogging on http://jonathancreamer.com, Net Tuts, and Smashing Magazine, twee… - [Developer Language Learners](https://www.jonathancreamer.com/developer-language-learner.md) - You a developer that wants to get with hang with other developers that love learning languages?! We're not talking JavaScript, Rust, C++, etc. We're talking, Español, French, German, Polish, etc. Come and join the DLL! Join the DLL - [Newsletter](https://www.jonathancreamer.com/newsletter.md) - [nick](https://www.jonathancreamer.com/nick.md) - Some of my BFF nickfranciosi's [https://twitter.com/nickfranciosi] best work... - [Products](https://www.jonathancreamer.com/products.md) - Here's some products that I've been loving! Fitness Item Price Link Bar $56 https://amzn.to/3X4vN3Y Ball $37 https://amzn.to/3VQbp5C Dumbbells $50 https://amzn.to/3Qjd9TB Kettlebell $41 https://amzn.to/3iawxpf Box $110 https://amzn.to/3GzlVcY Rope $18 https://amzn.to/3QbtWYI Total $312 -- Yes4All H… - [Resume](https://www.jonathancreamer.com/resume.md) - Here's my resume [https://d.pr/f/IpQ9hs+]! - [Scaling Monorepos](https://www.jonathancreamer.com/scaling-monorepos-talk.md) - Gave this talk at Connect Tech in November 2021. It goes into detail about how to scale JavaScript monoepos by investing in tooling to solve problems that come with dealing with millions of lines of code. - [Talks](https://www.jonathancreamer.com/talks.md) - Scaling Monorepos Gave this talk at Connect Tech in November 2021. Here's the deck... Recording coming soon. Deep dive into the React Lifecycle methods Advanced Webpack Getting Started with React and typeScript Using VSCode's debugger for Jest and node.js - [Wish List](https://www.jonathancreamer.com/wish-list.md) - * https://steelseries.com/gaming-headsets/arctis-7x * https://www.amazon.com/Xbox-Gift-Card-Digital-Code/dp/B00F4CFAV8 [https://www.amazon.com/Xbox-Gift-Card-Digital-Code/dp/B00F4CFAV8?] * https://www.blackriflecoffee.com/collections/hoodies/products/zip-up-camo-poncho-liner-hoodie - [Xbox One EPIC Clips](https://www.jonathancreamer.com/xbox-one-epic-clips.md) - I loves me some Xbox One! Here's some of my favorite clips from me yelling at my Xbox, "XBOX Record THAT!" PubG Titanfall Battlefield 4 Call of Duty Star Wars Battlefront ## Posts - [Using Dev Tunnels to share your local web server](https://www.jonathancreamer.com/using-dev-tunnels-to-share-your-local-web-server.md) - Dev Tunnels can also give you a public HTTPS URL pointing at a port on your laptop in three commands. Perfect for sharing a running webapp with coworkers (or with M365 agents/Copilot connectors) without standing up infra. - [Celebrating my 5th year at Microsoft by developing AI skills](https://www.jonathancreamer.com/celebrating-my-5th-year-at-microsoft.md) - Five years at Microsoft flew by, and it still feels like day one. AI is transforming how we work, and I’ve been lucky to grow into a Principal role while exploring tools like Agency and Copilot CLI. I’m excited for what’s ahead and ready to share more. - [What does Build.SourceVersion actually mean in Azure pipelines](https://www.jonathancreamer.com/what-does-build-sourceversion-actually-mean-in-azure-pipelines.md) - A quick tip for anyone working in Azure Pipelines as I didn't see this particular thing documented very well in any public documentation about what Build.SourceVersion refers to. - [rebase is dead long live the squabaserge](https://www.jonathancreamer.com/rebase-is-dead-long-live-the-squabaserge.md) - Git commit history is another form of documentation and it should be treated as such! It's such a useful tool as a developer to understand the history of how and why you're codebase changed. Use git rebase for a cleaner git history. - [How bin linking works in node.js npm and yarn and monorepos](https://www.jonathancreamer.com/how-bin-linking-works-in-node-js-npm-and-yarn-and-monorepos.md) - yarn pnpm run thing npm run thing are types of run commands we run all the time when working in node.js. But, how does that actually all work? What about monorepos? - [4 Years at Microsoft](https://www.jonathancreamer.com/4-years-at-microsoft.md) - I've reached a new career achievement. My 4 year tenure Microsoft working on 1JS is officially the longest of any job in my career. The previous record was 3 years and 9 months at Lonely Planet. - [Using Typescript in node.js scripts without actually writing Typescript](https://www.jonathancreamer.com/using-typescript-in-node-js-scripts-without-actually-writing-typescript.md) - A few innovations both on the Typescript side, and the node.js side in the last few years have made it way easier to have your cake and eat it too when it comes to writing typesafe Javascript AND get to use modern ES modules! - [How we shrunk our Javascript monorepo git size by 94%](https://www.jonathancreamer.com/how-we-shrunk-our-git-repo-size-by-94-percent.md) - We really did this! We work in a very large Javascript monorepo at Microsoft we colloquially call 1JS. Using some new changes to the git client it went from 178GB to 5GB. - [Reflecting on 3 years at Microsoft](https://www.jonathancreamer.com/3-years-at-microsoft.md) - February 16, 2024 marks 3 years for me at my dream job at Microsoft. I've loved Microsoft since long ago when I was learning ASP.net MVC from Scott Hanselman, Jon Galloway, Phil Haack, etc via blogs and tweets in 2012! I've had every Xbox we've made, every Zune we made, and even bought my 2011 Ford… - [The JavaScript Developer's Guide to Ubuntu on Windows 11 with WSL](https://www.jonathancreamer.com/the-javascript-developers-guide-to-ubuntu-on-windows-11-with-wsl.md) - It's super easy for Javascript developers now to use Ubuntu on Windows 11 with WSL. - [Switched to the Shure MV7 from the Blue Yeti](https://www.jonathancreamer.com/switched-to-the-shure-mv7-from-the-blue-yeti.md) - While I have loved my 9 years with the Blue Yeti, the time has come to make a change. I upgraded to the amazing Shure MV7 over Thanksgiving break. Give a listen to how good this thing sounds! - [Learning how to Learn](https://www.jonathancreamer.com/learning-how-to-learn.md) - The reality is, learning is everything, we should be perpetual learners in every aspect of work, and life. I'd even go so far as to say we're doing our company's a disservice by NOT taking time to learn! - [How to spend a week in Madrid](https://www.jonathancreamer.com/enjoying-a-few-days-in-madrid-spain.md) - As I've traveled for work and conferences, I've learned how to find amazing things to do. One place my wife and I enjoyed a bunch when I had to do a trip working for Eventbrite was Madrid, Spain. - [Tips for writing nodejs scripts using only built-in modules and async](https://www.jonathancreamer.com/write-async-node-scripts-using-the-only-native-nodejs-modules.md) - Below is a list of tips to make writing nodejs scripts fun, fast, and easy using the frontend tools you already know like JavaScript and Typescript. - [Calling an API with authorization using native nodejs with zero external dependencies](https://www.jonathancreamer.com/calling-an-api-with-authorization-using-native-nodejs-with-zero-external-dependencies.md) - Fetching from an API is one of the most repeated tasks with node.js. There are libraries including node-fetch, isomorphic-fetch, axios. But actually there are couple of native ways too! - [Running Typescript scripts in node using esbuild](https://www.jonathancreamer.com/running-typescript-scripts-in-node-using-esbuild.md) - Quickly run typescript scripts in nodejs using esbuild via the esbuild-runner package on npmjs. - [Getting around London for the first time](https://www.jonathancreamer.com/getting-around-london-for-the-first-time.md) - After having travelled to London a few times now, I wanted to share some tips for how to get around using the Tube, Buses, how to use Oyster, and apps to help along the way. - [Inside the pain of monorepos and hoisting](https://www.jonathancreamer.com/inside-the-pain-of-monorepos-and-hoisting.md) - Working in a monorepo comes with a long list of pros, and a few cons. One of the most painful cons, when it comes to working in a specifically JavaScript based monorepo, is the pain that comes from hoisting. - [Setting up WSL2 and the VSCode Remote Containers WSL Plugin](https://www.jonathancreamer.com/setting-up-wsl2-and-the-vscode-containers-plugin.md) - For years, macOS has been the gold standard for tooling when it comes to Web Development. The unix basis of macOS, iTerm, bash, VIM, etc are all things that folks building for the web platform rely on day to day. That all changes with WSL2. WSL2 allows web dev folks working in Windows to get the sa… - [Making powershell pretty](https://www.jonathancreamer.com/making-powershell-pretty.md) - For the first time in a long time, Windows has re-entered my life now that I work at Microsoft. In macOS land, I use iTerm and oh-my-zsh to make a pretty shell environment with all the colors and such, so when I got to Windows again and lanched into the blue Powershell Window, I figured there had t… - [Getting started with Frontend Architecture and DivOps](https://www.jonathancreamer.com/getting-started-with-frontend-architecture-and-divops.md) - Trying to understand the world of Frontend Software Development is like trying to solve a Rubix cube that automatically scrambles itself when you get close to solving it. You'll never fully understand it, and that's ok! What you can do though is maybe stop worrying about the entire cube, and focus… - [Running Typescript programs with babel-node aka how does babel register work](https://www.jonathancreamer.com/running-programs-with-babel-node.md) - Running Typescript programs on demand with babel-node basically uses babel register, but how does babel register work? This post will detail it. - [Understanding typescript generics by example](https://www.jonathancreamer.com/understanding-typescript-generics-by-example-with-window-fetch.md) - Quick intro using real world examples of working with Typescript generics. - [How I fixed webpack tree shaking in 3 easy steps](https://www.jonathancreamer.com/webpack-tree-shaking-in-3-easy-steps.md) - Tree shaking is an important step in Webpack bundling to get rid of unused stuff. This should help describe how to easily get it working. - [Dealing with async jest tests](https://www.jonathancreamer.com/dealing-with-async-jest-tests.md) - There are several ways to deal with async tests in Jest. The done callback for callback or promise methods, returning promises, or async / await. - [Running Cypress tests in a monorepo](https://www.jonathancreamer.com/running-cypress-tests-in-a-monorepo.md) - Cypress is a fantastic testing tool for running your applications in a browser like environment. It can be leveraged in a monorepo to do cross package acceptance and feature testing. - [For of loops in Javascript one loop to rule them all](https://www.jonathancreamer.com/for-of-loops-in-javascript-one-loop-to-rule-them-all.md) - For the longest time, for in and for were the main loops you could use to iterate over collections of things in JavaScript. Then we got some fancy array methods like forEach, map, filter, etc. It starts to get a bit confusing of when to use each loop type. For example, you can't use for in on array… - [WFH pro tips](https://www.jonathancreamer.com/wfh-pro-tips.md) - I've had the privilege of getting to work both in offices, at home 100%, and remote working over the course of my career. There are pros and cons to every approach. My personal favorite is having the best of both worlds like where I'm at with Eventbrite. We have an amazing office in Nashville, snac… - [Announcing Div Ops as the Slack, Discord and Reddit communities](https://www.jonathancreamer.com/announcing-div-ops.md) - Let's unite around the idea of frontend tooling by creating a #DivOps community. - [How to successfully manage a large scale JavaScript monorepo aka megarepo](https://www.jonathancreamer.com/how-to-successfully-manage-a-monorepo-aka-megarepo.md) - There are many tools already in the wild for managing a monorepo. This post will discuss using Bolt to manage a monorepo aka megarepo. - [Say bye to monorepos say hello to megarepos](https://www.jonathancreamer.com/say-bye-to-monorepos-say-hello-to-megarepos.md) - Breaking up a monolith can be a daunting task. Oftentimes a monolith gets broken up into many repos, and sometimes into a monorepo. But, here's the problem I have with the term monorepoo. > Monorepos are NOT monoliths! I recently heard a talk by Marcel Cutts called... MonoRepos for the Masses [http… - [Running Cypress with Docker inside CI](https://www.jonathancreamer.com/running-cypress-with-docker-inside-jenkins.md) - I've been looking at Cypress lately as a solution to do better end to end testing, and even in some cases to just dodge TDD altogether, and rely on seeing my code work in a browser like environment and actually see the results. Locally, Cypress runs with ease, just cypress open or cypress run, and… - [How WebPack decides what entry to load from a package.json](https://www.jonathancreamer.com/how-webpack-decides-what-entry-to-load-from-a-package-json.md) - Today I was working on creating a node.js bundle using webpack 4, and came across a fun little doozie of an error which lead me to do a bit of code spelunkery into how Webpack actually decides on what to load when you require something from node_modules. Most package.json files have a main in them,… - [WebPack production environment is NOT the NODE_ENV or BABEL_ENV environment variable](https://www.jonathancreamer.com/webpack-production-environment-is-not-the-node_env-or-babel_env-environment-variable.md) - A revelation came to me the other day when I was reviewing some of our bundling processes at Eventbrite. We currently run production bundles like this... node --max_old_space_size=4096\ ./node_modules/.bin/webpack \ --bail \ --config-name node \ --env.production \ --config ./config/webpack.producti… - [Brite future](https://www.jonathancreamer.com/brite-future.md) - The past almost 4 years I've spent at Lonely Planet are coming to an end, and I'm excited to be joining the Front End Platform Team at Eventbrite! When I started at Lonely Planet 4 years ago. React was barely a thing, node was at version 0.10.33, and Angular was juggernaut framework everyone was le… - [Why would you NOT use TypeScript?](https://www.jonathancreamer.com/why-would-you-not-use-typescript.md) - In a world where JavaScript is arguably the most popular [https://insights.stackoverflow.com/survey/2017#technology] tool for building software these days, it seems like it's everywhere now. With node.js, it's on the backend, with Electron it's native on your machine, with React Native, it's native… - [Using do expressions in redux reducers](https://www.jonathancreamer.com/using-do-expressions-in-redux-reducers.md) - There's an interesting proposal that's stage 1 currently (as of 9/26/2017) called do expressions. Thanks to the magic that is Babel, you can already go ahead and try this out with the do expression transform... https://babeljs.io/docs/plugins/transform-do-expressions/. The basic idea is that you ca… - [Debugging node and Jest tests with VS Code's debugger](https://www.jonathancreamer.com/debugging-node-and-jest-tests-with-vs-codes-debuggger.md) - VS Code [https://code.visualstudio.com/] has become my favorite IDE for pretty much everything these days. There are so many great features it has to offer including the ability to debug node.js. Here is the launch.json I used to get the debugger working for me. - [Getting started with TypeScript, WebPack, and React](https://www.jonathancreamer.com/getting-started-with-typescript-webpack-and-react.md) - We've been integrating TypeScript more and more into our workflow at Lonely Planet. I wanted to just quickly share how easy it is to get started working with TypeScript and Webpack! It takes a very simple webpack.config... module.exports = { entry: "./src/index.tsx", devtool: "source-map", output:… - [Testing typescript classes with Jest and Jest Mocks](https://www.jonathancreamer.com/testing-typescript-classes-with-jest-and-jest-mocks.md) - Typescript is a powerful way to build applications. It offers type checking to catch errors before they make it to the browser. On top of just utilizing typescript to catch bugs, it's still important to make sure Typescript code is tested. Facebook released a testing framework called Jest a while a… - [Chrome back button in express caching issue solved](https://www.jonathancreamer.com/chrome-back-button-in-express-caching-issue-solved.md) - While working in a React/express universal app, I created an express route that serves both JSON and HTML sort of like how Rails has a respond_to block. That way if I just add .json on to the end of some of my requests it will give me the JSON used to render that page. This caused an interesting is… - [Fetching data in a universal react router app with async actions](https://www.jonathancreamer.com/fetching-data-in-a-universal-react-router-app-with-async-actions.md) - One of the most difficult things when working in a universal app is fetching data on the client side. With es2017 and the React lifecycle, it can be done easily. I love async and await in es2017 [http://www.2ality.com/2016/02/async-functions.html]. If you haven't started using them yet. Do it NAOW.… - [How to quickly edit your hosts file on macOS](https://www.jonathancreamer.com/how-to-quickly-edit-your-hosts-file-on-macos.md) - I had a friend ask me the other day how to edit his hosts file for local development. It's something I take for granted because I'm so used to doing it, but for him it was something he hadn't done before. # Use arrow keys to move to what you want. I decided I'd throw together a quick 60 second vide… - [Advanced WebPack Part 3 - Creating a custom notifier plugin](https://www.jonathancreamer.com/advanced-webpack-part-3-creating-a-custom-notifier-plugin.md) - At Lonely Planet we use the heck out of WebPack. It's an incredibly powerful tool. Sometimes it takes a while though. I decided today that rather than watching the command line while it compiles to know when I'm good to refresh the browser, I'd just learn how to write a plugin to notify me about it… - [WebPack Code splitting with ES6 and Babel 6](https://www.jonathancreamer.com/webpack-code-splitting-with-es6-and-babel-6.md) - Today is the day that finally, we decided it was time to make the move from Babel 5 to 6. It's been on our Technical Debt list for quite a while now. Here's what we had to do to get it working! Update the package.json First and foremost was to get all the latest and greatest from the Babel folks...… - [Advanced WebPack Part 2 - Code Splitting](https://www.jonathancreamer.com/advanced-webpack-part-2-code-splitting.md) - WebPack has a feature that utilizes the AMD spec called Code Splitting [https://webpack.github.io/docs/code-splitting.html]. What it allows you to do is "split your code" (insert troll face). Seriously, it's an amazing feature. What generally happens when you work with a standard WebPack build is,… - [Not the Christmas Eve we expected](https://www.jonathancreamer.com/not-the-christmas-even-i-expected.md) - It all started as a normal Christmas Eve this year. Woke up, wrapped presents, spent time with my wife and daughter. On my way to my Grandmother's house for our usual Beef on 'Wek Christmas Eve dinner, things got a bit crazy. While attempting to explain firearm safety, my mom Roberta Creamer was ac… - [A letter for my sister and her husband](https://www.jonathancreamer.com/a-letter-to-my-sister-and-her-husband.md) - Today is the day. My little sister will no longer be a Creamer, and will join together for the rest of her life with a great man of God. Growing up with her has been so much fun. We played together, cried together, and made it through the best of times and the worst of times. Rachel, I love you so… - [Document ES6 with ESDoc](https://www.jonathancreamer.com/document-es6-with-esdoc.md) - I've been writing a lot of ES6(ES2015) at Lonely Planet the past few months. It comes with so many welcome changes to JavaScript, and with tools like Babel, you can use almost all of its features and even ES7(ES2016) features as well. Tools for documenting ES6+ are now rolling out as well, and one… - [Using ES2016 Decorators to Publish on an Event Bus](https://www.jonathancreamer.com/using-es2016-decorators-to-publish-on-an-event-bus.md) - One stage 1 feature for ES2016 is the idea of Decorators [https://github.com/wycats/javascript-decorators] proposed by Yehuda Katz [twitter.com/wycats]. They allow you to annotate and modify entire classes, methods, and getters/setters. We can use ES2016 decorators to attach behavior to methods on… - [Advanced WebPack Part 1 - The CommonsChunk Plugin](https://www.jonathancreamer.com/advanced-webpack-part-1-the-commonschunk-plugin.md) - > "As a front end developer, I want to split my assets up into multiple bundles so that I can load only the JavaScript, and CSS needed for a page" For as long as I can remember in my career as a front end developer, one of the problems I've constantly been faced with was how to properly bundle asse… - [Code on the Beach 2015](https://www.jonathancreamer.com/code-on-the-beach-2015.md) - I was honored to be accepted to speak at Code on the Beach [http://codeonthebeach.com] this year! (2015). Code on the Beach is an amazing conference down in Jacksonville, FL. I can't recommend it enough! Location The conference takes place at a 4 star resort called the One Ocean Resort [oneoceanres… - [Setup ESLint with ES6 in Sublime Text](https://www.jonathancreamer.com/setup-eslint-with-es6-in-sublime-text.md) - ESLint [http://eslint.org/] is a JavaScript linter/style checker that has quickly risen in popularity for a number of reasons. First of all, it's easily plugable. Second, it's sort of a hybrid between JSHint, and JSCS. Third, it's written by none other than Nicholas Zakas [https://twitter.com/slick… - [Comic Con 2015 Friday Highlights](https://www.jonathancreamer.com/comic-con-2015-friday-highlights.md) - Here's some of the highlights of my (SDCC) Comic Con 2015 photos. I'll add some more as I get them uploaded. Seeing the cast of The Walking Dead was definitely one of the highlights as there was a huge rush to grab photos of them as they walked by. - [Hadley's First Laughs](https://www.jonathancreamer.com/hadleys-first-laughs.md) - Yesterday my cute baby laughed for the first time! We were playing with the dogs, and she started little giggles, and then just started rolling laughing. What a cutie I have! - [What the Flux?](https://www.jonathancreamer.com/what-the-flux.md) - I've been really diving into wrapping my brain around React.js [http://facebook.github.io/react/] and Flux [http://facebook.github.io/flux/] architecture the last couple of weeks. Not going to lie, I've been avoiding it. When I look at the docs and blog posts about Flux, and React, my brain goes...… - [Make your GitHub account hack proof with 2 factor auth](https://www.jonathancreamer.com/setting-up-2-factor-authentication-on-github.md) - Security. So important these days. Feels like every day there's some new big site being hacked. One of the best ways to be hack proof on any site is to utilize 2 factor authentication. Log in to your account and go to the settings page by clicking the gear at the top right hand part of the screen.… - [Require.js packages for building large scale angular applications](https://www.jonathancreamer.com/require-js-packages-for-building-large-scale-angular-applications.md) - Require.js is one of my favorite ways to work with large JavaScript applications. It allows you to build AMD (asynchronous module definition) style modules to break up your application into small reusable modules. This is a desirable feature in large code bases. It's important to know when and why… - [Using jQuery's $.ajax in an Angular app](https://www.jonathancreamer.com/using-jquery-ajax-in-an-angular-app.md) - We've all been using jQuery for a long time. It's for this reason that Angular.js works seemlessly with jQuery if it sees it on the page, but also has it's on jQLite available for those who decide to opt out of jQuery. One of the APIs in jQuery that I find myself using the most is $.ajax. Now I kno… - [Adding clarity to scope inheritance in angular](https://www.jonathancreamer.com/adding-clarity-to-scope-inheritance-in-angular.md) - No matter how old JavaScript gets, the concept of prototypical inheritance still confuses developers. In fact, appendTo just gave a training course [-functions-and-objects-8-12-2014/] on functions and objects that talked about it yesterday! Not to mention Jordan Kasper's great talk on OO JavaScript… - [Node.js and express wrapper for Yahoo Fantasy API](https://www.jonathancreamer.com/node-js-and-express-wrapper-for-yahoo-fantasy-api.md) - With the NFL season just 31 days away (8/3/2014), I'm proud to release a Node.js wrapper for the Yahoo Fantasy API! It's not a whole lot yet, and basically just helps with the setup and not with individual API calls, but it's still one of the only one's around, and should greatly ease the pain of w… - [Scope creep, a deep dive into Angular's scope](https://www.jonathancreamer.com/working-with-all-the-different-kinds-of-scopes-in-angular.md) - Getting used to the concept of scope in Angular is among the more difficult concepts to fully grok when first being introduced to the magical land of Angular. Like anything else though, "once you understand it, it's really not that bad"... $rootScope This is the mother of all scopes. Quite literall… - [Object literals and prototypes in JavaScript](https://www.jonathancreamer.com/object-literals-and-prototypes-in-javascript.md) - You think you know JavaScript and then little things like this happen... My co-worker Aaron [https://twitter.com/aaronbushnell] who is a Visual Design Engineer is in the process of learning JavaScript and he asked me to have a look at a Fiddle. The contents of the fiddle looked like this... functio… - [Understanding Angular.js services the easy way](https://www.jonathancreamer.com/understanding-angular-js-services-the-easy-way.md) - One of the difficulties when first learning angular is understanding services and what they really are. One of the problem with services is there are several different ways to create one. This leads to many people saying which one should I choose? There's been over 131k views on this Stack Overflow… - [The state of angularjs controllers](https://www.jonathancreamer.com/the-state-of-angularjs-controllers.md) - Angular.js is based on the ever popular MVC architecture pattern. However, like many other JavaScript frameworks, MVC can very easily be muddied up and misused. Understanding the framework you're using, whether that be Angular, Backbone, etc, and how the different M-V-? pieces work together is impo… - [An angular.js event bus with postal.js](https://www.jonathancreamer.com/an-angular-event-bus-with-postal-js.md) - Ideally in an angular application, controllers are independent units of code that have no reference to any other controllers. There are cases though in which you may need to communicate with other controllers in your application. For example you may have an Orders controller, that needs to tell a C… - [Epic return to the wonderful land of appendTo](https://www.jonathancreamer.com/epic-return-to-the-wonderful-land-of-appendto.md) - The last 5 months of my life have been filled with great things while working for the startup over at Tech.pro. Sometimes good things don't last super long though, and today is my first day back with my great friends at appendTo [http://appendto.com]. In the last few months I've gotten my mind blow… - [Excited to become a Microsoft MVP](https://www.jonathancreamer.com/excited-to-become-a-microsoft-mvp.md) - Yesterday I was honored to join the list of Microsoft MVP's! I am now an MVP for Internet Explorer. http://mvp.microsoft.com/en-us/mvp/Jonathan%20Creamer-5000770 An IE MVP is recognized for supporting the web community at large, meaning I'm an MVP of JavaScript, HTML, and CSS, etc. I hope to contin… - [The most beautiful sound in the world](https://www.jonathancreamer.com/the-most-beautiful-sound-in-the-world.md) - Went to the doctor for our 13 week baby appointment today. Doctor said everything was all good! Here's the heartbeat of little Creamer... So excited for this October when our family will grow by one... - [Javascript Patterns Mediator vs Observer](https://www.jonathancreamer.com/javascript-patterns-mediator-vs-observer.md) - An approach to separating your Ajax requests from your DOM is to use messaging. Messaging allows different parts of an application to communicate with each other without knowing that the others even exist. This means that various pieces of the application are hot swapable! So, if you have an Ajax r… - [Building Decoupled JavaScript Applications with Postal.js](https://www.jonathancreamer.com/building-decoupled-javascrip-applications-with-postal-js.md) - Working with asynchronous code is one of the best features of JavaScript. With Ajax, it's very simple to request some JSON API, add a callback and update the UI with the result of that request very easily. Especially when using jQuery. However, writing an application that is testable, decoupled, an… - [A new blog, and a new adventure](https://www.jonathancreamer.com/a-new-blog-and-a-new-adventure.md) - A new blog I'm happy to finally have launched a new website for myself. Thanks to the new Ghost blogging platform! I gotta say this is a great platform. Super easy, clean, and extremely easy to modify and plug in to. I'd been using Wordpress for a longtime, but I accidentally got myself got up in a… ## Optional - [RSS Feed](https://www.jonathancreamer.com/rss/) - [Sitemap](https://www.jonathancreamer.com/sitemap.xml) - [Full content of pages and posts](https://www.jonathancreamer.com/llms-full.txt)