Friday, June 24, 2016

Discussions

Reminder to myself since i am guilty as hell of the below sin - As a developer, discussions should be about how to do things, rather than about how to improve Process, self-improvement etc.

Do - what is the best language/framework to implement ABC application ?
Don't - how can we find time to learn that language/framework

Friday, June 17, 2016

Understanding of underlying software systems

This seems to be an awesome blog for learning the basics of how systems work: https://ruslanspivak.com/
Hi! I’m Ruslan Spivak, a 36 year old Software Team Lead from Canada, and if you’ve ever asked yourself:
  • “How do I create my own programming language?”
  • “How does an interpreter, compiler, or VM work and how do I create one?”
  • “How do I implement my own database and a small operating system?”
  • “How do I code my own web server?”
  • “How do I write my own web framework?”
Or if you’ve just wanted to know more about software development in general and how to become a better developer - then you are in the right place!
Here’s the deal:
I believe to become a better developer you MUST get a better understanding of the underlying software systems you use on a daily basis and that includes programming languages, compilers and interpreters, databases and operating systems, web servers and web frameworks. And to get a better and deeper understanding of those systems you MUST re-build them from scratch.

Serverless

http://martinfowler.com/articles/serverless.html
https://github.com/serverless/serverless

What is Serverless?

Like many trends in software there’s no one clear view of what ‘Serverless’ is, and that isn't helped by it really coming to mean two different but overlapping areas:
  1. Serverless was first used to describe applications that significantly or fully depend on 3rd party applications / services (‘in the cloud’) to manage server-side logic and state. These are typically ‘rich client’ applications (think single page web apps, or mobile apps) that use the vast ecosystem of cloud accessible databases (like Parse, Firebase), authentication services (Auth0, AWS Cognito), etc. These types of services have been previously described as ‘(Mobile) Backend as a Service’, and I’ll be using‘BaaS’ as a shorthand in the rest of this article.
  2. Serverless can also mean applications where some amount of server-side logic is still written by the application developer but unlike traditional architectures is run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation), and fully managed by a 3rd party. (Thanks to ThoughtWorks for their definition in their most recent Tech Radar.) One way to think of this is ‘Functions as a service / FaaS’ . AWS Lambda is one of the most popular implementations of FaaS at present, but there are others. I’ll be using ‘FaaS’ as a shorthand for this meaning of Serverless throughout the rest of this article.

System Design - Design a Key-Value Store

App Servers benchmarked for: Ruby, Node, Elixir, GO, Java, Crystal

https://github.com/costajob/app-servers

Excerpt: 

Results
Here are the benchmarks results ordered by increasing throughput.
App ServerThroughput (req/s)Latency in ms (avg/stdev/max)
Rack29208.813.13/0.348/13.28
JRuby-Rack32331.470.99/0.598/44.34
Plug33583.073.35/7.62/145.87
Node Cluster47576.682.51/3.40/120.02
Jetty52398.881.90/0.432/22.45
ServeMux58359.971.70/0.315/18.63
Crystal HTTP75159.451.33/0.270/6.02

Linux: how to find out which processes are attached to which ports

Followers

Blog Archive