Jim Cheung

Monday, November 02, 2015

by linux kernel 3.9, SO_REUSEPORT allows reuse a port by different process, means you can have old and new apps running on the same port. nginx already supports it: Socket Sharding in NGINX Release 1.9.1

did a little research on clojure shell, found these options:

I think using clojurescript is the way (jvm has slow startup time, no matter how you try), will try it out.

listened Ruby Rogues 231: GraphQL with Lee Byron, actually I don't like restful, so maybe graphql is the way to go.

golang doesn't look well recently (The Go community is hostile towards a Go code of conduct so the Go team reacts by suppressing public discussion about it, Why Go is a poorly designed language)

I like its simplicity, but the error handling really sucks, and most importantly there're too many libraries written by china people. I still like golang, just not coding it anymore.

Wednesday, November 04, 2015

got Let's Encrypt confirmation email for their beta program.

the setup is simple if you already have docker on your server

from their documentation:

sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt \
  -v "/etc/letsencrypt:/etc/letsencrypt" \
  -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
  quay.io/letsencrypt/letsencrypt:latest auth

but this is not gonna work (and yes you need to let they use 80 and 443 ports)

content in this post: Beta Program Announcements is as same as the email i got, you'll need to provide the api url in order to get the valid certificate (the --server option):

./letsencrypt-auto --agree-dev-preview --server \
  https://acme-v01.api.letsencrypt.org/directory certonly

so this line will work

sudo docker run -it --rm -p 443:443 -p 80:80 --name letsencrypt \
  -v "/etc/letsencrypt:/etc/letsencrypt" \
  -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
  quay.io/letsencrypt/letsencrypt:latest --server \
  https://acme-v01.api.letsencrypt.org/directory certonly

also make sure your server using TLS 1.2, chrome shows certificate is untrust when i use TLS 1

Thursday, November 05, 2015

a simple way to generate password:

openssl rand -base64 32

Sunday, November 08, 2015

almost forgot Strange Loop 2015 on YouTube

few projects that look interesting:

upgraded to Docker 1.9, however, don't have to time to play with swarm yet. let's see who will be the winner (mesos kubernetes serf or swarm)

boot supports dependencies in one script and shebang, sounds like it's perfect for shell scripting, but the startup speed is way slower than

exec java -jar clojure-1.7.0.jar "$@"

will give Pallet a try

Wednesday, November 11, 2015

few new podcasts that i'd subscribed:

an updated Podcasts.opml

when working on aws, there're many tiny little things you'll need to be aware of, for example:

Thursday, November 19, 2015

reading Clojure for the Brave and True, so far the best book i've read in 2015.

from my tweets:

read it from here, instead of

{:user {:plugins [[cider/cider-nrepl "0.9.1"]]}}

put it to the repl profile:

{:repl {:plugins [[cider/cider-nrepl "0.9.1"]]}}

non-repl lein tasks' startup time will be shorter.

and finally see a attractive HA solution for postgresql.

re-install f.lux (on linux using Redshift), however, it could be done by sct - set color temperature.

Netflix has a new continuous delivery tool: Spinnaker, but i'm more interested in their previous deployment tool: Asgard.

from Entire Netflix's Stack, noticed few nice tools/services:

What Is New on ThoughtWorks Radar Nov 2015 is quite interesting, never heard of some of tools it mentions.

Oden is a lisp-like language which compiling to golang, i hope it will become popular, i really like go's no-dependency binary.

presentation from GOTO Copenhagen 2015, this conference has some pretty good topics.

golang is six years old, i still don't think i will pick it up again.

and finally some http2 resources:

Friday, November 20, 2015

when using puppet to install packages, some packages require user input. there is a way to prepare answers: Preseed

first install debconf-utils, then install the package manually, select/input the required infomation, use debconf-get-selections | grep [package] to get the config and save to a file.

in puppet set responsefile attribute to the preseed file saved above.

for converting ebooks under ubuntu, install calibre then perform ebook-convert origin.epub output.pdf.

to package gradle project into one jar, use shadow plugin.

from this stackoverflow thread: Idiomatic config managment in clojure?, learned clojure.edn.

Thursday, November 26, 2015

listened to lastest episode of Arrested DevOps: What Is New At Puppet? With Eric Sorenson , pretty good, few notes from the show:

reading The Performance of Open Source Applications, found these interesting chrome tools:

not listened yet: FLOSS Weekly 364 Caddy, but Caddy looks interesting.

Amazon Aurora - Looking Deeper is a nice article about Aurora.

How to boot Linux in one second (pdf), pretty low level, but worth reading.

Blog Archive