Created
October 15, 2014 15:57
Revisions
-
bevacqua created this gist
Oct 15, 2014 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,32 @@ Hey there! I'm pleased to announce that [the Pony Foo blog][1] has been **completely rewritten from scratch!** I've put a few months into it, but I got in many improvements, which I'm going to write a few articles about. Firstly, I wanted to write this email to introduce you to some of the concepts introduced to the engine. #### Features The blog is now backed by [NGINX][3], properly and aggressively caching static assets. I'm using [recluster][4] to achieve zero-downtime deployments while keeping the application servers on two separate processes. I've moved away from Heroku, and now the production environment is hosted on AWS EC2. It's provisioned, configured with sensitive environment variables, and deployed-to using [fast bash scripts][5]. > Bash? Non-sense! In this iteration I experimented with `npm run`, and I must say I became sort of addicted to it. For that reason, build and deployment scripts are now entirely written in bash. Of course, all of the regular Node CLI tooling was used, such as [JSHint][9], [UglifyJS][8], [Penthouse][10], etc. As far as performance goes, the build process completely automates asset optimization. Styles and scripts are minified, and so is the Markdown markup used to render articles. Views are compiled into functions ahead of time, and _even inline assets are compressed using [UglifyJS][8]!_ Then comes the fun times, [Penthouse][10] is used to extract critical above the fold CSS. Those styles get inlined into the page to improve **time-to-first-byte performance**. Closer to the front-end, it features a shared-rendering model, using [Taunus][2]. This allows Pony Foo to render views in the server-side and the client-side alike. The first request goes through the server, and every subsequent request is rendered on the browser. This results in fast client-side routing while being entirely crawlable by search engines and web crawlers _(looking at you social media)_. [Taunus][2] is made possible thanks to extensive use of [Browserify][6], enabling vast code reuse across the platform. Browserify is used to share views, [Markdown compilation][7], input validation, and more. ###### Notice If you feel this email was unsolicited, please unsubscribe using the link found in the footer. Due to a database migration _you might've been re-subscribed to the mailing list_, but I promise **you won't get any further emails if you unsubscribe**. You'll find the unsubscription link in the footer of every single email sent by [Pony Foo][1]. [1]: http://ponyfoo.com [2]: http://github.com/bevacqua/taunus [3]: http://nginx.org/en/docs/ [4]: https://github.com/doxout/recluster [5]: https://github.com/ponyfoo/ponyfoo/tree/master/build/ec2 [6]: http://browserify.org/ [7]: https://github.com/bevacqua/ultramarked [8]: https://github.com/mishoo/UglifyJS2 [9]: https://github.com/jshint/jshint/ [10]: https://github.com/pocketjoso/penthouse