2016-12-26

Logical Fallacies in The Lab

I found a cool blog about logical fallacies, here's all of its images :3 (until today: 15), check their blog for more updated content :3
















2016-12-09

Javascript ES6 to ES5 Transpiler

When you are so eager to use ES6 features but you know that most browsers not yet implement all ES6 features completely (that's why there are also HTML5 pollyfills). Here's the list of transpiler to convert Javascript ES6 to ES5:
Almost 2 years ago comparison between Babel and Termi. Oh and yes, you can use Babel with WebStorm.
Note that every transpilers (CoffeeScript, TypeScript, Elm, Haxe, etc) suffer the same problem: compile duration (hey, one more thing to do [=minify] before testing/deploying) and hard debugging (easier if you use source maps, only for JS transpilers, I don't know if these things exists for transpiler for other language). Still I wish for wAsm to come faster. Btw I learned ES6 just for react-native-web, otherwise I would always still stick with ES5.


2016-12-08

Programming Language Libraries

Woot woot! I found a website that crawls for libraries *__*)b
And I think it awesome that Go got first rank.

By Language/Editor

By Package Manager, note:

go (go get), npm (js), rubygems (ruby), maven (java), packagist (php), pypi (python), nuget (.net, c#, vb.net, and f# mostly), bower (js), wordpress (php), cpan (perl), cocoapods (objective-c and swift), clojars (clojure), meteor (js), cran (r), hackage (haskell), atom (text editor), cargo (rust), homebrew (osx), emacs (text editor), swiftpm (swift), hex (erlang, elixir), pub (dart), sublime (text editor), platformio (iot), julia (julia), carthage (objective-c, swift), dub (d), haxelib (haxe), jam (js), elm (elm), alcatraz (xcode ide), nimble (nim), inqlude (qt), shards (crystal)

2016-12-02

List of Tech Migrations

I'm quite fascinated with the decision (and obviously the effort) of leaving a language or database to another technology, here's the list that I found:
  • Twitter (2011) from Ruby to Scala
  • Urban Airship (2011) from MongoDB to PostgreSQL
  • Mixpanel (2011) from Erlang to Python
  • LinkedIn (2012) from Ruby to NodeJS
  • MoovWeb (2012) from ? to Go
  • NTP Pool (2012) from Perl to Go
  • DLGoogle (2012) from C++ to Go
  • Bitly (2012) from Python/C to Go
  • SoundCloud (2012) from Ruby to Go
  • SmartyStreets (2012) from .NET to Go
  • Toggl (2012) from Ruby to Go
  • Shareaholic (2012) from MongoDB to Riak
  • DigiDoc (2012) from MongoDB to PostgreSQL
  • Etsy (2012) from MongoDB to MySQL
  • TekPub (2012) from MongoDB to PostgreSQL
  • TargeterApp (2012) from NodeJS to Ruby
  • PayPal (2013) from Java to NodeJS
  • Koding (2013) from NodeJS to Go
  • Iron.io (2013) from Ruby to Go
  • Zalora (2013) from PHP to Go
  • TimeHop (2013) from Ruby to Go
  • Canonical Juju (2013) from Python to Go
  • Instill (2014) from AngularDart to Polymer
  • Workia (2014) from ActionScript to Dart
  • TrustWave (2014) from ActionScript/Flex to Dart
  • Facebook Chat (2014) from Erlang to C++
  • Auth0 (2015) from Apache Kafka to ZeroMQ
  • President University (2015) from PHP/MySQL to Go/PostgreSQL 
  • UserLike (2015) from MySQL and MongoDB to PostgreSQL
  • Olery (2015) from MongoDB to PostgreSQL
  • CrowdStrike (2015) from Scala to Go
  • DockYard (2015) from Ruby to Elixir
  • CrowdStrike (2016) from Scala to Go
  • Tokopedia (2016) from Perl to Go
  • Uber (2016) from PostgreSQL to MySQL
  • Uber (2016) from NodeJS to Go and Java
  • Uber (2016) from Python to Go
  • Digg (2016) from NodeJS to Go
  • Google AdWords (2016) from GWT to Angular Dart
  • UpGuard (2017) from JRuby to Go
  • Movio (2017) from Scala to Go
  • Discord (2017) from MongoDB to Cassandra
  • Uber (2017) Riak/Solr to Cassandra
  • Swat.io (2017) from MySQL to PostgreSQL
  • Poki (2017) from PHP to Go
  • Stream (2017) from Python to Go
  • Baidu (2017) from MySQL to CockroachDB
  • GeekyAnts (2017) from ReactNative to Google Flutter (not yet)
  • AppTree (2018) from Java/Kotlin/ObjC/Swift to Dart
  • SendGrid (2018) from Perl/Python to Go
  • Bukalapak (2018) from Ruby/MySQL to Go/MongoDB/ElasticSearch
  • AppsFlyer (2019) from Clojure to Go
  • Deliveroo (2019) from Ruby to Rust
  • Amazon (2019) from OracleDB to Aurora Postgres and DynamoDB
So many migrating to Go ^^. If it's not about migration, there's a lot more here that apparently choose Go (interviews also more here).

Btw why not MongoDB or CockroachDB.. but I think now they are getting better.


If you found any more news like this, paste the link on the comment, I'll gladly add them on the list.

2016-12-01

Faster than Go? Yes, plenty

Is there anything that faster than Go? yes, there are plenty, but I'm not sure if it would be fun to code with.. What are they?

G-WAN

G-WAN is closed-source web application server (not a language like Go). If I'm not mistaken G-WAN caches GET request, so second hit within few ms won't execute the backend function, practically this is cheating for benchmark (not merged), but for real application this feature quite great (can cope up with DDOS attack) :3 Btw did I mention that this web application server support whole lot of language? asm, C, C++, C#, D, Go, Java, Javascript, Lua, Objective-C, Perl, PHP, Python, Ruby, and Scala with CGI-like writing. One note that you must really learn how HTTP works (parsing header, setting cookie, parsing POST parameters, etc) if you want to use this.


I don't really know if this suffer the same problem similar to others that use CGI instead of FastCGI: connection pooling to database (but we can use pgpool).

LWAN

LWAN is also web application server that uses C, can be used with LuaJIT (fast implementation of Lua). For the framework you can use Sailor (Example).



PyParallel 

PyParallel is a programming language implementation, forked from Python3, removes GIL (Global Interpreter Lock).


Julia

Julia is one awesome programming language that uses LLVM, it focuses


Actually there's a lot more implementation that faster than Go for certain (or all) cases, such as: C, C++, Ada, Rust, Java, and Fortran, be sure to check on BenchmarkGame site.


But, don't choose a language or web framework or web application platform just based on performance, there's a lot of things to consider, for example:
  • either it's waste of time to work with (since you must do many things manually aka there's no framework or so little libraries/function yet)
  • how easy it's to train a new programmer to work with you or continue the project
  • what's the continuity of the technology (if the project abandoned by the author/maintainer)
  • build/compile duration
  • etc..
If you are looking for next hype? try Elixir and Phoenix.