<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Matthias Hager</title>
    <link>https://matthiashager.com/</link>
    <description>Recent content on Matthias Hager</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 23 Dec 2025 00:00:00 -0421</lastBuildDate>
    <atom:link href="https://matthiashager.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Analyzing Writing of American Founders</title>
      <link>https://matthiashager.com/projects/founders/</link>
      <pubDate>Tue, 23 Dec 2025 00:00:00 -0421</pubDate>
      <guid>https://matthiashager.com/projects/founders/</guid>
      <description>Founders Online is a public archive housing nearly 200,000 documents penned by seven American founders, a few of whom the average American has actually heard of. It’s a historical goldmine, and given the sheer volume of text, it seemed like a target ripe for over-analysis and unnecessary visualization.&#xA;A Few Caveats First, the dataset is restricted to letters involving seven specific men: John Jay, George Washington, John Adams, Thomas Jefferson, Benjamin Franklin, Alexander Hamilton, and James Madison.</description>
    </item>
    <item>
      <title>TravelList</title>
      <link>https://matthiashager.com/projects/travel/</link>
      <pubDate>Sun, 23 Nov 2025 00:00:00 -0421</pubDate>
      <guid>https://matthiashager.com/projects/travel/</guid>
      <description>My wife is a comprehensive travel planner. But every trip, she writes down her checklist, from scratch, in a notebook. Realizing the inefficiency and potential for error, and being the sort of geeky helpful husband that she claims to love, I naturally digitized it and made it way more complex than a list on a sheet of paper.&#xA;Features Create checklist templates and reuse them for multiple trips. Templates have customizable criteria for when items should be included.</description>
    </item>
    <item>
      <title>Are you the lucky one?</title>
      <link>https://matthiashager.com/projects/lucky/</link>
      <pubDate>Fri, 23 May 2025 00:00:00 -0421</pubDate>
      <guid>https://matthiashager.com/projects/lucky/</guid>
      <description>Every day one person gets lucky and is blessed with a special celebration. Will it be you?&#xA;Inspired in part by old school hit counters.&#xA;I threw this together pretty quickly using Python and Falcon. It picks a random number each day from a range which scales up based on the number of visits the previous day. And it tracks page loads. Yep, that&amp;rsquo;s it.&#xA;How fast can you spam F5?</description>
    </item>
    <item>
      <title>Coffee Quiz</title>
      <link>https://matthiashager.com/projects/coffee/</link>
      <pubDate>Sun, 11 May 2025 00:00:00 -0421</pubDate>
      <guid>https://matthiashager.com/projects/coffee/</guid>
      <description>A retro-nostalgia, coffee-fueled, over-caffeinated-and-over-hyphenated coffee quiz.&#xA;It was created out of an interest in early-2000s internet culture and&amp;hellip; coffee. The intent is to be a fun, easy, sarcastic, and somewhat useful questionnaire determining the best coffee making mechanism for your particular interests.&#xA;It utilizes extremely simple, framework-less JavaScript and CSS. I&amp;rsquo;m sure that somewhere out there exists a boring, corporate, React-driven alternative. No doubt&#xA;State It&amp;rsquo;s plain HTML and JavaScript. It will probably outlive you.</description>
    </item>
    <item>
      <title>Nice Things People Have Said About Me</title>
      <link>https://matthiashager.com/nice-things/</link>
      <pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://matthiashager.com/nice-things/</guid>
      <description>He&#39;s killing it.&#xA;— The Pope&#xA;Matthias was such an integral part of our very first 6 figure launch. Every time we had an important sales or marketing decision he had a ton of knowledge to share and we came up with a solid plan of action.&#xA;— Rachael Lowe, Soul Level Love&#xA;He immediately took charge of our entire marketing strategy and turned it into a well oiled machine.</description>
    </item>
    <item>
      <title>Let&#39;s Explore GUI Options for Nim</title>
      <link>https://matthiashager.com/gui-options-for-nim/</link>
      <pubDate>Mon, 01 Apr 2019 12:39:00 -0400</pubDate>
      <guid>https://matthiashager.com/gui-options-for-nim/</guid>
      <description>The details in this post are not likely to be kept up to date. It&#39;s just a starting point for your own research.&#xA;Nim is still a fringe programming language, so unfortunately the tl;dr is that there are no booming, mature options for creating a native GUI with Nim. There are a handful of efforts being made toward this end, with various degrees of success and ongoing effort. I&#39;ve chosen to run with NiGui for now, for simple interfaces, as it does not yet have the support for more complex elements or layouts but is simple to use for very basic GUIs.</description>
    </item>
    <item>
      <title>Let&#39;s Explore proc and method in Nim</title>
      <link>https://matthiashager.com/proc-method-nim/</link>
      <pubDate>Tue, 19 Mar 2019 13:00:00 -0400</pubDate>
      <guid>https://matthiashager.com/proc-method-nim/</guid>
      <description>When starting out with Nim, I came across what appeared to be a frustrating little bug. I had a series of objects which inherited from a parent level object. There were overloaded procedures that were called on each of these objects, and a fallback procedure for the parent object. (Sample code below.) However, every time I called the proc, it would get called on the parent object rather than the inherited type.</description>
    </item>
    <item>
      <title>Converting Snake Case to Camel Case Object Keys with Javascript</title>
      <link>https://matthiashager.com/converting-snake-case-to-camel-case-object-keys-with-javascript/</link>
      <pubDate>Fri, 14 Dec 2018 15:30:00 -0500</pubDate>
      <guid>https://matthiashager.com/converting-snake-case-to-camel-case-object-keys-with-javascript/</guid>
      <description>I run into a situation frequently when dealing with APIs where my JavaScript frontend expects camel case object keys while APIs tend to return snake case keys. I&#39;ve settled on a few utility methods for converting these that are worth sharing here.&#xA;I&#39;m using ES6 conventions throughout the article. And so there is no confusion, this is what I mean when I talk about the different cases during this article.</description>
    </item>
    <item>
      <title>Object Types in Nim</title>
      <link>https://matthiashager.com/nim-object-oriented-programming/</link>
      <pubDate>Mon, 10 Dec 2018 11:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/nim-object-oriented-programming/</guid>
      <description>Recently I was writing a small utility library with Nim in which I needed to deal with different object types in different ways within the same procedure. I am new to Nim, and to statically typed languages, so it&#39;s important to warn you that this is almost certainly not the correct, best, or the idiomatic way to handle this situation. If you&#39;re writing production code please look elsewhere. On the other hand, this worked for me in my situation and I thought it was a good solution.</description>
    </item>
    <item>
      <title>Programming is Like Fixing a Broken Toilet</title>
      <link>https://matthiashager.com/programming-fixing-a-broken-toilet/</link>
      <pubDate>Fri, 11 May 2018 11:10:00 -0400</pubDate>
      <guid>https://matthiashager.com/programming-fixing-a-broken-toilet/</guid>
      <description>Programming is like fixing a broken toilet.&#xA;Some people just keep flushing the toilet, hoping it fixes itself. Sometimes this works, most of the time not.&#xA;These are the programmers who restart the server every time there&#39;s a problem, or they wrap large sections of code in try-except blocks to avoid errors crashing the system. This might temporarily cure the symptoms, but it rarely fixes the problem.&#xA;Some people Google the problem, and then dump a bucket of water in the bowl or manually hold up the chain in the tank.</description>
    </item>
    <item>
      <title>Vue.js Media Player Tutorial</title>
      <link>https://matthiashager.com/vue-js-media-player-tutorial/</link>
      <pubDate>Fri, 04 May 2018 14:00:00 -0400</pubDate>
      <guid>https://matthiashager.com/vue-js-media-player-tutorial/</guid>
      <description>Vue.js often gets used for large, single-page applications (SPAs). While it excels at these, especially with incredible tools like vue-router and vuex to intelligently manage routes and state, Vue.js also shines as an embedded interactive application or widgets. These often get used in otherwise static websites where a small piece of interaction is required. Personally, I&#39;ve used Vue.js to build one-off photo sliders, navigation menus, tabbed boxes, dynamic form wizards, modals, data tables, and much more.</description>
    </item>
    <item>
      <title>First Look at a Programming Tutorial Concept</title>
      <link>https://matthiashager.com/first-look-at-a-programming-tutorial-concept/</link>
      <pubDate>Fri, 04 May 2018 13:39:00 -0400</pubDate>
      <guid>https://matthiashager.com/first-look-at-a-programming-tutorial-concept/</guid>
      <description>Online programming tutorials offer a terrible experience.&#xA;They are constrained by a linear format and lack of proper tooling. It is stunning to me that, with all the tools programmers build for themselves, and the multitude of programming education platforms out there, that no one has built a better process for writing, publishing, and consuming tutorials. Instead, nearly every guide out there is written in an editor meant for blogging, following a format that hasn&#39;t been updated since the first line of code was ever published.</description>
    </item>
    <item>
      <title>Movie Watch</title>
      <link>https://matthiashager.com/projects/movie-watch/</link>
      <pubDate>Tue, 20 Feb 2018 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/movie-watch/</guid>
      <description>A movie rating platform built on Python/Django.&#xA;My goal was to create an incredibly simple way to track movies I have watched, and movies I would like to see. It had to be fast. It had to be fun. The end result met those challenges.&#xA;What makes this app especially unique is its dead simple onboarding and login system. Instead of creating a username or connecting to a third party service, you simply start rating movies.</description>
    </item>
    <item>
      <title>Programming Tutorial Concept</title>
      <link>https://matthiashager.com/projects/programming-tutorial-concept/</link>
      <pubDate>Tue, 20 Feb 2018 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/programming-tutorial-concept/</guid>
      <description>This project was two-fold: a tutorial on building a simple Vue.js media player, and a proof of concept of a new programming tutorial concept.&#xA;State The media player and the tutorial concept are both still functional without any updates after 5+ years. The concept received a warm reception on Hacker News, but I never invested in building it into a true product.</description>
    </item>
    <item>
      <title>Vue.js Media Player</title>
      <link>https://matthiashager.com/projects/vuejs-media-player/</link>
      <pubDate>Tue, 20 Feb 2018 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/vuejs-media-player/</guid>
      <description>This project was two-fold: a tutorial on building a simple Vue.js media player, and a proof of concept of a new programming tutorial concept.&#xA;State The media player and the tutorial concept are both still functional without any updates after 5+ years. The concept received a warm reception on Hacker News, but I never invested in building it into a true product.</description>
    </item>
    <item>
      <title>Umoja</title>
      <link>https://matthiashager.com/projects/umoja/</link>
      <pubDate>Mon, 15 Jan 2018 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/umoja/</guid>
      <description>Umoja is decidedly anti-social&#xA;You&amp;rsquo;re not here to share with your friends. You don&amp;rsquo;t want to worry about your boss looking over your digital shoulder. This is the space for your private life with your partner.&#xA;Umoja focuses on sharing all the personal moments in your journey with your partner. These moments are sometimes silly, sometimes sad; they might be look miniscule to someone else, but to you they are the most cherished.</description>
    </item>
    <item>
      <title>First segment of my Vue.js tutorial is published!</title>
      <link>https://matthiashager.com/first-segment-vue-js-tutorial-published/</link>
      <pubDate>Thu, 16 Mar 2017 03:00:00 -0400</pubDate>
      <guid>https://matthiashager.com/first-segment-vue-js-tutorial-published/</guid>
      <description>The first 6 sections of my complete Vue.js application tutorial are now published. This series is designed to give a broader scope than most of the existing Vue.js learning material available while being practical and pragmatic. It will cover the complete development of a personal budgeting application with topics such as&#xA;dealing with local storage using Vuex and Vue-Router project structure for a mid-size application development workflow (for a solo programmer) communicating between components and modules writing DRY, decoupled Vue.</description>
    </item>
    <item>
      <title>Phaser Health Meter</title>
      <link>https://matthiashager.com/projects/phaser-health-meter/</link>
      <pubDate>Mon, 20 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/phaser-health-meter/</guid>
      <description>Phaser Health Meter is a Phaser plugin that lets you easily insert health meters for your sprites. Meters can be attached to any sprite and update dynamically based on the sprite&amp;rsquo;s health component.&#xA;State Phaser is still a popular game engine. I&amp;rsquo;m sure better options exist now.</description>
    </item>
    <item>
      <title>Step 1: Planning Your Application</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/planning-application/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/planning-application/</guid>
      <description>This is part 1 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 10: Styling &amp; Navigation</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/styling-navigation/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/styling-navigation/</guid>
      <description>Want to put some lipstick on this pig? Let&#39;s do it. Most of this update is CSS styling. Since that is outside the scope of this tutorial, I&#39;m going to magically tackle it in one commit without boring you with the details here. Skim through the diff, though, because we do move around and change some HTML elements that might cause things to break if you don&#39;t notice them.</description>
    </item>
    <item>
      <title>Step 11: Finishing Budgets with Vue.js Dynamic Components</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/vuejs-dynamic-components/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/vuejs-dynamic-components/</guid>
      <description>This is part 11 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 12: Planning for Transactions</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/planning-transactions/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/planning-transactions/</guid>
      <description>This is part 12 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 13 - All Aboard the Transaction Train</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/transactions/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/transactions/</guid>
      <description>This is part 13 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 14 - User Testing</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/user-testing/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/user-testing/</guid>
      <description>This is part 14 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 2: Data Architecture</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/data-architecture/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/data-architecture/</guid>
      <description>This is part 2 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 3: Setup &amp; Project Structure</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/project-structure/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/project-structure/</guid>
      <description>This is part 3 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 4: Create &amp; View Accounts</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/create-list-accounts/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/create-list-accounts/</guid>
      <description>This is part 4 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 5: Edit &amp; Delete Accounts</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/edit-delete-accounts/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/edit-delete-accounts/</guid>
      <description>This is part 5 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 6: Adding LocalStorage to our Vue.js Application</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/localstorage-vuejs/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/localstorage-vuejs/</guid>
      <description>This is part 6 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 7: Interlude &amp; Refactor</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/refactor/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/refactor/</guid>
      <description>This is part 7 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 8: Budgeting</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/vuejs-budgeting/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/vuejs-budgeting/</guid>
      <description>This is part 8 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>Step 9: Racing Through Budgets</title>
      <link>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/budget-app-vuejs/</link>
      <pubDate>Wed, 15 Feb 2017 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/complete-vuejs-application-tutorial/complete-vuejs-application-tutorial/budget-app-vuejs/</guid>
      <description>This is part 9 of an 18 part series titled Vue.js Application Tutorial - Creating a Simple Budgeting App with Vue. It is highly recommended that you read the series in order, as each section builds on the last.&#xA;Step 0: Intro Step 1: Planning Your Application Step 2: Data Architecture Step 3: Setup &amp;amp; Project Structure Step 4: Create &amp;amp; View Accounts Step 5: Edit &amp;amp; Delete Accounts Step 6: Adding LocalStorage to our Vue.</description>
    </item>
    <item>
      <title>A Comparison of Vue.js Frontend Frameworks</title>
      <link>https://matthiashager.com/vuejs-frontend-ui-frameworks-comparison/</link>
      <pubDate>Thu, 02 Feb 2017 03:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/vuejs-frontend-ui-frameworks-comparison/</guid>
      <description>With the surge of popularity of Vue.js over the past year, a multitude of Vue-specific front end frameworks have appeared on the scene. Having options is great for the developer. But it can also be overwhelming when choosing between them. This is an effort to compare the various options available, in an unbiased and approachable manner, while highlighting the strengths of each one so the developer can make an informed decision.</description>
    </item>
    <item>
      <title>Vue.js Testing - A High Level Overview</title>
      <link>https://matthiashager.com/testing-vuejs-overview/</link>
      <pubDate>Wed, 01 Feb 2017 03:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/testing-vuejs-overview/</guid>
      <description>Testing in Vue.js is easy. To start a new project with the testing framework already in place:&#xA;$ npm install --global vue-cli $ vue init webpack my-project $ cd my-project $ npm install $ npm run test Wait until it finishes and you&#39;ll see passing unit and end to end tests. Whoever said the JavaScript ecosystem is a mess?&#xA;This is a great starting point, and it helps the newcomer get started with Vue.</description>
    </item>
    <item>
      <title>A Comparison &amp; Review of Note Taking Applications</title>
      <link>https://matthiashager.com/comparison-review-note-taking-apps/</link>
      <pubDate>Wed, 25 Jan 2017 03:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/comparison-review-note-taking-apps/</guid>
      <description>When Benjamin Franklin sat down to write in his diary what would eventually become the Gettysburg Address, he agonized over his choice of medium - stick with the tried and true stone tablet with hammer and chisel, or lend credence to this new fangled paper and pen? Here I am, 972 years later, faced with a similar decision. I have some 30 notebooks in my closet, begging me to fill them up.</description>
    </item>
    <item>
      <title>Mocking HTTP Requests with Vue.js and Vue-Resource</title>
      <link>https://matthiashager.com/mocking-http-requests-with-vuejs/</link>
      <pubDate>Fri, 04 Nov 2016 03:00:00 -0400</pubDate>
      <guid>https://matthiashager.com/mocking-http-requests-with-vuejs/</guid>
      <description>While writing unit tests for a growing Vue.js application last week, I needed a simple way to return test data for various HTTP requests that vue-resource fired off, without actually querying the server. There are libraries out there that can help with mocks and stubs and spies and a thousand other situations, but my needs were simple. Simple needs often call for simple solutions.&#xA;Vue-resource gives us request interceptors that allow us to mutate every step of the request processing.</description>
    </item>
    <item>
      <title>Building an Image Slider with Vue.js</title>
      <link>https://matthiashager.com/image-slider-vuejs-tutorial/</link>
      <pubDate>Tue, 30 Aug 2016 03:00:00 -0400</pubDate>
      <guid>https://matthiashager.com/image-slider-vuejs-tutorial/</guid>
      <description>Here is the demo and the final code on JSFiddle.&#xA;Update April 16th, 2018: this tutorial and the accompanying code have been brought up to date with more recent Vue.js updates.&#xA;An image slider is the quintessential use case for vue.js. It&#39;s a single, distinct component that requires data management, DOM updates, and user interaction. I recently needed a very simple image slider on a marketing page I was developing for a project built with vue.</description>
    </item>
    <item>
      <title>5 Minutes at a Time</title>
      <link>https://matthiashager.com/projects/5-minutes-at-a-time/</link>
      <pubDate>Fri, 20 Feb 2015 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/5-minutes-at-a-time/</guid>
      <description>A series of tiny, daily challenges that aim to improve your life in small ways.&#xA;We all lead busy lives. It&amp;rsquo;s tough to find time to experience new things or change old habits. 5MAT gives you a unique challenge every day designed to do just that, in 5 minutes or less.&#xA;State This was a personal experiment I created years ago but never marketed.</description>
    </item>
    <item>
      <title>Auroraboard</title>
      <link>https://matthiashager.com/projects/auroraboard/</link>
      <pubDate>Fri, 20 Feb 2015 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/auroraboard/</guid>
      <description>Daily task boards that hold you accountable. Aurora Board helps you plan out your day, and stick to your goals.&#xA;This is the digital adaptation of my pen &amp;amp; paper task management system. It helps you plan your work 1 day at a time in a simple format. Small triggers help you accomplish your tasks.&#xA;Built on Python/Django and the Django Rest Framework, with a Backbone.js frontend.&#xA;State This was a personal experiment I created years ago but never marketed.</description>
    </item>
    <item>
      <title>Logos</title>
      <link>https://matthiashager.com/projects/logos/</link>
      <pubDate>Fri, 20 Feb 2015 00:00:00 -0500</pubDate>
      <guid>https://matthiashager.com/projects/logos/</guid>
      <description>A writing habits application. Logos was one of the first Django applications I built, meant to apply Jerry Seinfeld&amp;rsquo;s habit tracking calendar to your writing goals.&#xA;State This was a personal experiment I created years ago but never marketed.</description>
    </item>
  </channel>
</rss>
