41554 blogs · [ { "id": "01a087a0-a3c2-7087-a0e2-78cbcaa6d7ed", "title": "Setting up a Vue.js Project with webpack 4 and Babel 7", "url": "https://markus.oberlehner.net/blog/setting-up-a-vue-project-with-webpack-4-and-babel-7/", "published_at": "2018-04-03T10:30:00+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcad101aa", "title": "Vue.js Application Structure and CSS Architecture", "url": "https://markus.oberlehner.net/blog/vue-application-structure-and-css-architecture/", "published_at": "2018-04-01T11:45:21+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcb9b42a4", "title": "Route Model Binding with Vue.js and Vuex", "url": "https://markus.oberlehner.net/blog/route-model-binding-with-vue-and-vuex/", "published_at": "2018-03-25T05:07:10+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcbe54dbb", "title": "Network Stubs and Timers with Nightwatch.js and Cucumber.js", "url": "https://markus.oberlehner.net/blog/network-stubs-and-timers-with-nightwatch-and-cucumber/", "published_at": "2018-03-18T09:05:31+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcc82f22e", "title": "Automated Acceptance Testing with Cypress and Vue.js Part 2: Network Stubs and Timers", "url": "https://markus.oberlehner.net/blog/automated-acceptance-testing-with-cypress-and-vue-network-stubs-and-timers/", "published_at": "2018-03-11T07:08:12+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcc9fa044", "title": "Automated Acceptance Testing with Cypress and Vue.js Part 1: Setup", "url": "https://markus.oberlehner.net/blog/automated-acceptance-testing-with-cypress-and-vue-setup/", "published_at": "2018-03-04T08:45:32+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbccfb568c", "title": "Dynamically Loading SVG Icons with Vue.js", "url": "https://markus.oberlehner.net/blog/dynamically-loading-svg-icons-with-vue/", "published_at": "2018-02-11T07:12:10+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcd12adfd", "title": "How to Structure a Complex Vuex Store with Modules", "url": "https://markus.oberlehner.net/blog/how-to-structure-a-complex-vuex-store/", "published_at": "2018-02-04T08:01:01+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcd617c7f", "title": "How to Handle Multi-row Forms with Vue, Vuex and vuex-map-fields", "url": "https://markus.oberlehner.net/blog/how-to-handle-multi-row-forms-with-vue-vuex-and-vuex-map-fields/", "published_at": "2018-01-28T09:11:11+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbce433c48", "title": "Money in Open Source", "url": "https://markus.oberlehner.net/blog/money-in-open-source/", "published_at": "2018-01-21T07:26:02+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbce68f846", "title": "Vue.js Form Validation with Vuelidate", "url": "https://markus.oberlehner.net/blog/vue-form-validation-with-vuelidate/", "published_at": "2018-01-14T06:01:21+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbcf22f7b9", "title": "Combining GraphQL and Vuex", "url": "https://markus.oberlehner.net/blog/combining-graphql-and-vuex/", "published_at": "2018-01-06T06:11:11+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd0000993", "title": "Two-Way Data Binding with v-model and Vuex", "url": "https://markus.oberlehner.net/blog/form-fields-two-way-data-binding-and-vuex/", "published_at": "2017-12-31T09:22:24+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd02435a7", "title": "Building a Modal Dialog with Vue.js and Vuex", "url": "https://markus.oberlehner.net/blog/building-a-modal-dialog-with-vue-and-vuex/", "published_at": "2017-12-17T14:22:14+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd05bb3a6", "title": "Exploratory TDD", "url": "https://markus.oberlehner.net/blog/exploratory-tdd/", "published_at": "2017-12-10T04:55:59+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd0c982cb", "title": "Testing Vuex Powered Vue.js Components with Jest", "url": "https://markus.oberlehner.net/blog/testing-vuex-powered-vue-components-with-jest/", "published_at": "2017-12-03T08:48:34+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd16be257", "title": "Git, the pedantic way", "url": "https://markus.oberlehner.net/blog/git-the-pedantic-way/", "published_at": "2017-11-26T07:06:56+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd1ce9b98", "title": "Speeding up Nightwatch.js Powered Acceptance Tests", "url": "https://markus.oberlehner.net/blog/speeding-up-nightwatch-powered-acceptance-tests/", "published_at": "2017-11-19T06:42:22+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd2cb087e", "title": "Intelligent Design vs. Evolution", "url": "https://markus.oberlehner.net/blog/intelligent-design-vs-evolution/", "published_at": "2017-11-12T07:26:18+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd3c0b8b0", "title": "Two-Tier Sass Variables / CSS Custom Properties", "url": "https://markus.oberlehner.net/blog/two-tier-sass-variables-and-css-custom-properties/", "published_at": "2017-11-05T04:52:25+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd3ccaa5a", "title": "The Ultimative Flexbox Based CSS Layout", "url": "https://markus.oberlehner.net/blog/the-ultimative-flexbox-based-css-layout/", "published_at": "2017-10-29T04:26:53+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd4a8906a", "title": "Unit Testing Vue.js Single File Components with ava", "url": "https://markus.oberlehner.net/blog/unit-testing-vue-single-file-components-with-ava/", "published_at": "2017-10-22T11:26:12+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd553221a", "title": "Acceptance Testing with Nightwatch.js and Cucumber.js Part 3: BrowserStack", "url": "https://markus.oberlehner.net/blog/acceptance-testing-with-nightwatch-and-cucumber-browserstack/", "published_at": "2017-10-15T11:04:52+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd5d1529f", "title": "Acceptance Testing with Nightwatch.js and Cucumber.js Part 2: Smart Step Definitions", "url": "https://markus.oberlehner.net/blog/acceptance-testing-with-nightwatch-and-cucumber-smart-step-definitions/", "published_at": "2017-10-12T17:02:14+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd6b8294c", "title": "Acceptance Testing with Nightwatch.js and Cucumber.js Part 1: Setup", "url": "https://markus.oberlehner.net/blog/acceptance-testing-with-nightwatch-and-cucumber-setup/", "published_at": "2017-10-08T05:42:33+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd72605fd", "title": "Setting up a PWA with Vue, Vue Router and webpack Code Splitting", "url": "https://markus.oberlehner.net/blog/setting-up-a-pwa-with-vue-vue-router-and-webpack-code-splitting/", "published_at": "2017-10-01T07:47:23+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd7f129d8", "title": "CSS Selector Namespaces for Stable Acceptance Tests", "url": "https://markus.oberlehner.net/blog/css-selector-namespaces-for-stable-acceptance-tests/", "published_at": "2017-09-24T07:39:12+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd7fa54e3", "title": "Don't Make Things More Complicated as They Are", "url": "https://markus.oberlehner.net/blog/do-not-make-things-more-complicated-than-they-are/", "published_at": "2017-09-17T04:56:54+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd8283cbc", "title": "Payment Request API Part 3: Taxes and Discounts", "url": "https://markus.oberlehner.net/blog/payment-request-api-taxes-and-discounts/", "published_at": "2017-09-14T07:37:14+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd87f2a9d", "title": "Payment Request API Part 2: Building a Shopping Cart", "url": "https://markus.oberlehner.net/blog/payment-request-api-building-a-shopping-cart/", "published_at": "2017-09-10T08:42:04+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd8e1e2a5", "title": "Payment Request API Part 1: Payment Process Using the Credit Card Payment Method", "url": "https://markus.oberlehner.net/blog/payment-request-api-payment-process-using-the-credit-card-payment-method/", "published_at": "2017-09-07T05:38:14+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd97f6ac7", "title": "Dealing with the BrowserStack Parallel Test Limit When Using TestCafe", "url": "https://markus.oberlehner.net/blog/dealing-with-the-browserstack-parallel-test-limit-when-using-testcafe/", "published_at": "2017-09-06T06:52:50+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbd9eb3d09", "title": "Front-End Testing Part 2: Cross-Browser Acceptance Tests with TestCafe, BrowserStack, and npm Scripts", "url": "https://markus.oberlehner.net/blog/front-end-testing-cross-browser-acceptance-tests-with-testcafe-browserstack-and-npm-scripts/", "published_at": "2017-09-04T06:21:21+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbda46e409", "title": "Front-End Testing Part 1: Writing JavaScript Unit Tests with ava and mock-browser", "url": "https://markus.oberlehner.net/blog/front-end-testing-writing-javascript-unit-tests-with-ava-and-mock-browser/", "published_at": "2017-09-03T08:40:25+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdb04e830", "title": "Building a Responsive Priority+ Horizontal Scroll Navigation", "url": "https://markus.oberlehner.net/blog/building-a-responsive-priority-plus-horizontal-scroll-navigation/", "published_at": "2017-08-20T05:50:21+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdbed41d0", "title": "Building npm Packages with TypeScript", "url": "https://markus.oberlehner.net/blog/building-npm-packages-with-typescript/", "published_at": "2017-08-15T16:47:53+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdcc50eab", "title": "Getting Off of Information Addiction (Part 2: News)", "url": "https://markus.oberlehner.net/blog/getting-off-of-information-addiction-part-2-news/", "published_at": "2017-08-13T07:32:14+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdd3bb8b6", "title": "What I’ve Learned from Rewriting an Open Source Project from Scratch", "url": "https://markus.oberlehner.net/blog/what-i-have-learned-from-rewriting-an-open-source-project-from-scratch/", "published_at": "2017-08-06T06:24:33+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdd87d5b7", "title": "Using Gulp and UnCSS in Combination with Sass based Hugo themes", "url": "https://markus.oberlehner.net/blog/using-gulp-and-uncss-in-combination-with-sass-based-hugo-themes/", "published_at": "2017-07-30T10:05:21+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbddbb5b8f", "title": "How to Show a Placeholder for a Tag", "url": "https://markus.oberlehner.net/blog/faking-a-placeholder-in-a-html-select-form-field/", "published_at": "2017-07-16T05:55:22+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbde7dc1b3", "title": "Getting Off of Information Addiction (Part 1: Social Media)", "url": "https://markus.oberlehner.net/blog/getting-off-of-information-addiction/", "published_at": "2017-07-09T05:15:44+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdebaf3ba", "title": "Building a Good Ol' 12 Column CSS Grid Framework with CSS Grid Layout", "url": "https://markus.oberlehner.net/blog/building-a-good-old-12-column-css-grid-framework-with-css-grid-layout/", "published_at": "2017-07-02T05:15:33+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdf49db90", "title": "Dreaming of a Package Based CSS Workflow", "url": "https://markus.oberlehner.net/blog/dreaming-of-a-package-based-css-workflow/", "published_at": "2017-06-27T17:21:11+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdf8eab0b", "title": "Get Going", "url": "https://markus.oberlehner.net/blog/get-going/", "published_at": "2017-06-17T10:33:15+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbdfbd584d", "title": "Creating a Pure CSS Animated SVG Circle Chart", "url": "https://markus.oberlehner.net/blog/pure-css-animated-svg-circle-chart/", "published_at": "2017-06-15T14:36:01+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe05efbe6", "title": "Talk: Monorepos in the Wild", "url": "https://markus.oberlehner.net/blog/talk-monorepos-in-the-wild/", "published_at": "2017-06-07T10:42:01+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe0f79ef8", "title": "An Introvert on a Stage", "url": "https://markus.oberlehner.net/blog/an-introvert-on-a-stage/", "published_at": "2017-05-13T16:57:41+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe18e4e83", "title": "Building the Berlin Skyline with LEGO", "url": "https://markus.oberlehner.net/blog/building-the-berlin-skyline-with-lego/", "published_at": "2017-04-16T08:33:51+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe199121a", "title": "Code Quality Matters (for Developers)", "url": "https://markus.oberlehner.net/blog/code-quality-matters-for-developers/", "published_at": "2017-04-09T06:57:02+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe1dd7c4f", "title": "AMP and the Open Web", "url": "https://markus.oberlehner.net/blog/amp-and-the-open-web/", "published_at": "2017-04-04T04:04:01+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe2886d86", "title": "Building a Blog with the Static Website Generator Hugo", "url": "https://markus.oberlehner.net/blog/building-a-blog-with-the-static-website-generator-hugo/", "published_at": "2017-04-01T18:18:06+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe2ffaf85", "title": "Building a Simple (but Overengineered) Database Abstraction with TypeScript", "url": "https://markus.oberlehner.net/blog/building-a-simple-database-abstraction-with-typescript/", "published_at": "2017-03-18T14:27:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe3e9bb75", "title": "A (Final?) Look at Grid Frameworks", "url": "https://markus.oberlehner.net/blog/a-final-look-at-grid-frameworks/", "published_at": "2017-03-05T11:17:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe4d500ca", "title": "Perfectionism Kills Motivation", "url": "https://markus.oberlehner.net/blog/perfectionism-kills-motivation/", "published_at": "2017-02-26T09:07:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe50b1958", "title": "CSS, BEM and Context", "url": "https://markus.oberlehner.net/blog/css-bem-and-context/", "published_at": "2017-02-18T08:09:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe56ce418", "title": "The Testable Module Pattern", "url": "https://markus.oberlehner.net/blog/the-testable-module-pattern/", "published_at": "2017-02-12T08:19:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe5c57ba8", "title": "Test Driven Development with JavaScript Using ava and Sinon.JS", "url": "https://markus.oberlehner.net/blog/test-driven-development-with-javascript-using-ava-and-sinonjs/", "published_at": "2017-02-05T09:07:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe6138019", "title": "Abbreviations Suck", "url": "https://markus.oberlehner.net/blog/abbreviations-suck/", "published_at": "2017-01-22T07:06:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe654f9c3", "title": "Investing Money (as a Developer)", "url": "https://markus.oberlehner.net/blog/investing-money-as-a-developer/", "published_at": "2017-01-14T08:18:05+00:00" }, { "id": "01a087a0-a3c2-7087-a0e2-78cbe7261e58", "title": "Building avalanche 4.x.x", "url": "https://markus.oberlehner.net/blog/building-avalanche-v4/", "published_at": "2016-12-30T07:15:05+00:00" } ] posts Claim your blog
Back to markus.oberlehner.net
Blog · corpus.blog/blogs/markus.oberlehner.net/posts

markus.oberlehner.net

markus.oberlehner.net

2018

2017

2016