[ { "id": "/behind-a-nat", "title": "Self-hosting behind a NAT", "category": "cloud self-hosting linux", "url": "https://blog.jdonado.com/behind-a-nat/", "coverfile": "https://blog.jdonado.com/assets/images/behind-a-nat.jpg", "date": "2019-11-16", "tags": "cloud, self-hosting, and linux", "description": "\n No one knows what it’s like to be a bad man, to be a sad man… behind a NAT\n\n", "type": "post", "author": "" } , { "id": "/kubernetes", "title": "Kubernetes: beyond docker compose", "category": "cloud", "url": "https://blog.jdonado.com/kubernetes/", "coverfile": "https://blog.jdonado.com/assets/images/kubernetes-logo.jpg", "date": "2018-12-26", "tags": "kubernetes, docker, docker-compose, and linux", "description": "Beyond docker compose\n", "type": "post", "author": "" } , { "id": "/cmd-magic", "title": "CMD Magic", "category": "command-line", "url": "https://blog.jdonado.com/cmd-magic/", "coverfile": "https://blog.jdonado.com/assets/images/terminal.jpg", "date": "2018-07-06", "tags": "linux, command-line, shell, and macosx", "description": "Command Line Magic\n", "type": "post", "author": "" } , { "id": "/reasonml", "title": "ReasonML", "category": "programming-language", "url": "https://blog.jdonado.com/reasonml/", "coverfile": "https://blog.jdonado.com/assets/images/reasonml.jpg", "date": "2018-05-26", "tags": "functional-programming, programming-language, javascript, ocaml, and reasonml", "description": "ReasonML Programming Language\n", "type": "post", "author": "" } , { "id": "/lifescope-project", "title": "Lifescope Project", "category": "projects", "url": "https://blog.jdonado.com/lifescope-project/", "coverfile": "https://blog.jdonado.com/assets/images/lifescope.jpg", "date": "2017-09-27", "tags": "python, ai, nlp, nodejs, docker, architecture, reactjs, and redux", "description": "An artificial intelligence software looking for solutions to healthcare problems\n", "type": "post", "author": "" } , { "id": "/useful-npm-commands", "title": "Useful npm commands", "category": "vim", "url": "https://blog.jdonado.com/useful-npm-commands/", "coverfile": "https://blog.jdonado.com/assets/images/npm-icon.svg", "date": "2017-06-18", "tags": "npm and nodejs", "description": "Quick reference of some useful commands\n", "type": "post", "author": "" } , { "id": "/vim-magic", "title": "Vim magic", "category": "vim", "url": "https://blog.jdonado.com/vim-magic/", "coverfile": "https://blog.jdonado.com/assets/images/vim-icon.png", "date": "2017-05-28", "tags": "vim", "description": "Vim magic\n", "type": "post", "author": "" } , { "id": "/restore-clover", "title": "Restore clover using Windows", "category": "clover", "url": "https://blog.jdonado.com/restore-clover/", "coverfile": "https://blog.jdonado.com/assets/images/clover.png", "date": "2017-05-26", "tags": "hackintosh, clover, and windows", "description": "Restore your config.plist\n", "type": "post", "author": "" } , { "id": "/about-fp", "title": "About Functional Programming", "category": "functional-programming", "url": "https://blog.jdonado.com/about-fp/", "coverfile": "https://blog.jdonado.com/assets/images/lambda-cover.jpg", "date": "2017-03-05", "tags": "functional-programming and javascript", "description": "Introduction\n", "type": "post", "author": "" } , { "id": "/unit-testing-in-angular-2", "title": "Unit Testing in Angular 2: Common Exceptions", "category": "coding", "url": "https://blog.jdonado.com/unit-testing-in-angular-2/", "coverfile": "https://blog.jdonado.com/assets/images/scaffold-parthenon.jpg", "date": "2017-01-21", "tags": "angular, angular2, unit, and testing", "description": "Unit Testing in Angular 2: Common Exceptions\n", "type": "post", "author": "" } , { "id": "/inheritance-in-angularjs-again", "title": "Inheritance in AngularJS, again", "category": "coding", "url": "https://blog.jdonado.com/inheritance-in-angularjs-again/", "coverfile": "https://blog.jdonado.com/assets/images/inheritance-again.jpg", "date": "2016-10-23", "tags": "angularjs, inheritance, and ecmascript5", "description": "Rethinking about inheritance in AngularJS 1.5\n", "type": "post", "author": "" } , { "id": "/ng-show-and-ng-animate", "title": "ng-show and ng-animate", "category": "coding", "url": "https://blog.jdonado.com/ng-show-and-ng-animate/", "coverfile": "https://blog.jdonado.com/assets/images/nganimate.jpg", "date": "2016-08-08", "tags": "angularjs", "description": "If ng-show happens to be too slow without an obvious reason\n", "type": "post", "author": "" } , { "id": "/inheritance-and-observer-pattern-in-angular-js", "title": "Inheritance and Observer Pattern in AngularJS 1.4", "category": "coding", "url": "https://blog.jdonado.com/inheritance-and-observer-pattern-in-angular-js/", "coverfile": "https://blog.jdonado.com/assets/images/observer-angular.jpg", "date": "2016-06-12", "tags": "angularjs, design-patterns, observer, and inheritance", "description": "In AngularJS, when designing services, it is well common to return an instance of the $http service. The code that requests it (usually within a controller), must process then the promise and do whatever it is to be done with the data that come from server.\n", "type": "post", "author": "" } , { "id": "/special-thanks", "title": "Special Thanks", "category": "coding", "url": "https://blog.jdonado.com/special-thanks/", "coverfile": "https://blog.jdonado.com/assets/images/acknowledgements.jpg", "date": "2016-06-12", "tags": "acknowledgements", "description": "Acknowledgements\n\nI have to specially thank the help of the following people when I was developing www.jdonado.com:\n", "type": "post", "author": "" } , { "id": "/hello-world", "title": "Hello World", "category": "coding", "url": "https://blog.jdonado.com/hello-world/", "coverfile": "https://blog.jdonado.com/assets/images/helloworld.jpg", "date": "2016-03-28", "tags": "about and jdonado.com", "description": "What is jdonado.com?\n", "type": "post", "author": "" } ]