Monday, April 05, 2021
this holiday I rewrote one my personal project
the origin stack was immutant with undertow as web server, compojure for routing and selmer as template engine
I replaced it with ring, jetty and {{ mustache }} almost a complete rewrite, but I had so much fun
I have better understanding about ring, handlers and middlewares, also there're less magic feelings
compojure has dependency of a parser Engelberg/instaparse, nice but I don't need it
I checked Clojure Web Routing Library Recommendations 2020 tried reitit and bidi, they're not dead simple so not suitable for my project but I agree that reitit is a good choice for real projects
since my project has very few routes and I decided to use cond
to do it
to extract parameters from a route, I borrowed the idea from Clojure: string interpolation
so far the result is good, not too complicated to setup routes comparing to compojure
like routes, I don't have much logic in my templates, selmer is relative large comparing to mustache (also I used an early version of selmer that includes the whole clojurescript as dependency, generates large uberjar, it is fixed in newer version)
first I used fhd/clostache, but I found it doesn't handle nested sections well I switched to davidsantiago/stencil and it works great
one thing that didn't work out is replacing markdown with org, I couldn't find a library that has good support on org files other workarounds are more complicated than markdown
found this interesting app: LiteStore - A tiny NoSQL database for rapid prototyping
the creator is quite crazy, he had created a frontend microframework, a web server, a NoSQL store, a Markdown processor, a static site generator, and even a programming language
maybe one day I'll have my own stack like him, because I found reinventing the wheel is super fun
Friday, April 09, 2021
a good summary: The Architecture Behind A One-Person Tech Startup
github writes about How we scaled the GitHub API with a sharded, replicated rate limiter in Redis
more about rate limiter on redis:
- Rate-limiting strategies and techniques | Solutions
- An alternative approach to rate limiting
- brandur/redis-cell: A Redis module that provides rate limiting in Redis as a single command.
an alternative approach without redis: Gubernator: Cloud-native distributed rate limiting for microservices
and shopify's stack: E-Commerce at Scale: Inside Shopify's Tech Stack
Sunday, April 11, 2021
few good books show up in safari online, I still have problem with keeping records for my reading list.
started a new readling-list page, maybe will find another tool to replace it.
Saturday, April 24, 2021
to test fetch data logic with network delay, can save graphql
response to a json and start the server
json-server db.json --port 3001 --delay 5000
Sunday, April 25, 2021
an old colleague sent me this: jcs/progman: progman.exe^H^H^H^H
I'm not sure the correct way to switch a window manager, I added a new file in /usr/share/xsessions
and selected it in lightdm
menu
it doesn't have a run dialog in menu, installed grun
and it's good now
funny that I could just started emacs
and not really needed anything else
for my reference, eww
shortcuts:
TAB
: Next link- Shift+TAB: Previous link
b
: Add bookmarkB
: View bookmarksd
: Download link under pointl
: Go backr
: Go forwardH
: View historyg
: reload the pageG
: Enter a new URL or searchR
: Attempt to improve readabilityw
: Copy the current URL (link when pointer is on it)- M-
: Open link in new tab s
: Get a list of eww tabsF
: toggle fontsw
space
/ shift space
for screen up / down
the dev news page was an old express app by node js, using jade template, it works fine by I migrated to clojure today
it surprisingly doesn't have any index in tables, it's quite fun to tune the SQL (it's a large db)
Friday, April 30, 2021
few books I'm interested in:
- PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries
- Pointers in C Programming: A Modern Approach to Memory Management, Recursive Data Structures, Strings, and Arrays
- Introducing Blockchain with Lisp: Implement and Extend Blockchains with the Racket Language
saw this paper from 2019 on hackernews: Zanzibar: Google’s Consistent, Global Authorization System
some related links found on the discussion:
- Looking at Zanzibar through ORY Keto
- Oso - Authorization Academy
- Himeji: A Scalable Centralized System for Authorization at Airbnb
Blog Archive
- Newer Entries
- 2021 May
- 2021 June
- 2021 August
- 2021 September
- 2021 December
- 2022 March
- 2022 April
- 2022 May
- 2022 June
- 2022 July
- 2022 August
- 2022 September
- 2022 October
- 2022 November
- 2022 December
- 2023 January
- 2023 February
- 2023 March
- 2023 April
- 2023 July
- 2023 August
- 2023 September
- 2023 October
- 2023 November
- 2023 December
- 2024 January
- 2024 February
- 2024 March
- 2024 April
- 2024 May
- 2024 June
- 2024 August
- 2024 September
- 2024 October
- 2024 November
- Older Entries
- 2021 March
- 2021 February
- 2021 January
- 2020 December
- 2020 November
- 2020 October
- 2020 September
- 2020 August
- 2019 December
- 2019 November
- 2019 October
- 2019 July
- 2019 May
- 2019 April
- 2019 March
- 2019 February
- 2019 January
- 2018 December
- 2018 November
- 2018 October
- 2018 September
- 2018 August
- 2018 July
- 2018 June
- 2018 May
- 2018 April
- 2018 March
- 2018 February
- 2018 January
- 2017 December
- 2017 November
- 2017 October
- 2017 September
- 2017 August
- 2017 July
- 2017 June
- 2017 May
- 2017 April
- 2017 March
- 2017 February
- 2017 January
- 2016 December
- 2016 November
- 2016 October
- 2016 September
- 2016 August
- 2016 July
- 2016 June
- 2016 May
- 2016 April
- 2016 March
- 2016 February
- 2016 January
- 2015 December
- 2015 November
- 2015 October
- 2015 September
- 2015 August
- 2015 July
- 2015 June
- 2015 May
- 2015 April
- 2015 March
- 2015 February
- 2015 January
- 2014 December
- 2014 November
- 2014 October
- 2014 September
- 2014 August
- 2014 March
- 2014 February
- 2014 January
- 2013 December
- 2013 October
- 2013 July
- 2013 June
- 2013 May
- 2013 March
- 2013 February
- 2013 January
- 2012 December
- 2012 November
- 2012 October
- 2012 September
- 2012 August