56,966 blogs · [ { "id": "01a08751-4732-718a-8eaa-fcdd9cb31b3d", "title": "2024", "url": "https://blog.ngzhian.com/2024.html", "published_at": "2025-01-05T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541585aff937", "title": "BitNet Scaling 1-bit Transformers for Large Language\nModels", "url": "https://blog.ngzhian.com/one-bit-llm.html", "published_at": "2024-05-24T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541586496aed", "title": "Bouldering gyms in Singapore", "url": "https://blog.ngzhian.com/bouldering-singapore.html", "published_at": "2024-04-21T13:14:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158706478e", "title": "EfficientNet", "url": "https://blog.ngzhian.com/efficientnet.html", "published_at": "2022-11-06T20:35:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541587c189a6", "title": "Emscripten CMake integration - under the hood", "url": "https://blog.ngzhian.com/emscripten-cmake.html", "published_at": "2021-10-18T21:52:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541588aaca40", "title": "awk - state machine matching and printing", "url": "https://blog.ngzhian.com/awk.html", "published_at": "2021-09-25T20:20:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415899ba42e", "title": "PushPush is NP-hard in 2D", "url": "https://blog.ngzhian.com/pushpush-is-np-hard-in-2d.html", "published_at": "2021-02-11T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541589da1b8f", "title": "Abstractions and caller requirements", "url": "https://blog.ngzhian.com/abstraction-prevent-callers.html", "published_at": "2020-12-18T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158a48c40b", "title": "Latency and throughput", "url": "https://blog.ngzhian.com/latency-and-throughput.html", "published_at": "2020-11-09T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158b40bbbf", "title": "Template template parameter and function templates", "url": "https://blog.ngzhian.com/template-template-parameter-function-template.html", "published_at": "2020-10-31T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158bc9f0c5", "title": "Memory alignment requirements for SSE and AVX\ninstructions", "url": "https://blog.ngzhian.com/sse-avx-memory-alignment.html", "published_at": "2020-10-29T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158c8390d0", "title": "iTerm2 with tmux integration", "url": "https://blog.ngzhian.com/iterm2-tmux.html", "published_at": "2020-08-15T12:35:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158d1acb55", "title": "Changing live reload server from WebSockets to Server-Sent\nEvents", "url": "https://blog.ngzhian.com/changing-live-reload-server-from-websockets-to-server-sent-events.html", "published_at": "2020-07-22T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158d4e8ea4", "title": "A History of the Groovy Programming Language", "url": "https://blog.ngzhian.com/a-history-of-the-groovy-programming-language.html", "published_at": "2020-07-19T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158da8d6c5", "title": "Creating a simple live reload server for my blog", "url": "https://blog.ngzhian.com/simple-live-reload.html", "published_at": "2020-07-12T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158e8f7d18", "title": "C++ constexpr", "url": "https://blog.ngzhian.com/cpp-constexpr.html", "published_at": "2020-07-11T12:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158efa690e", "title": "Coming up an epigram", "url": "https://blog.ngzhian.com/epigram-fast.html", "published_at": "2020-07-06T21:50:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158f4a2e89", "title": "Curiously Recurring Template Pattern (CRTP)", "url": "https://blog.ngzhian.com/cpp-curiously-recurring-template-pattern.html", "published_at": "2020-07-05T16:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158f6fdb63", "title": "C++ templates", "url": "https://blog.ngzhian.com/cpp-templates.html", "published_at": "2020-07-05T15:12:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158fc935fc", "title": "Epigrams on Programming - Alan J. Perlis", "url": "https://blog.ngzhian.com/epigrams-on-programming.html", "published_at": "2020-07-02T12:33:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54158fe0d2c6", "title": "A history of Clojure", "url": "https://blog.ngzhian.com/a-history-of-clojure.html", "published_at": "2020-06-30T21:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541590dd51aa", "title": "Porting PBRT to WebAssembly", "url": "https://blog.ngzhian.com/porting-pbrt-to-webassembly.html", "published_at": "2020-06-13T13:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541591873dbe", "title": "IEEE 754 summary", "url": "https://blog.ngzhian.com/ieee754.html", "published_at": "2020-05-23T12:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541591db45dd", "title": "Vim keys", "url": "https://blog.ngzhian.com/vim-keys.html", "published_at": "2020-05-16T21:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541592cf809a", "title": "64x2 integer multiplication", "url": "https://blog.ngzhian.com/i64x2mul.html", "published_at": "2020-03-09T18:13:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541593bef0cc", "title": "WebAssembly SIMD and endianness", "url": "https://blog.ngzhian.com/webassembly-simd-endian.html", "published_at": "2019-09-11T22:13:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541593e864b9", "title": "For loops in bash and memory usage", "url": "https://blog.ngzhian.com/for-loop-bash.html", "published_at": "2019-09-04T21:56:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415943012f0", "title": "Guy Steele - It’s Time for a New Old Language", "url": "https://blog.ngzhian.com/guy-steele-its-time-for-a-new-old-language.html", "published_at": "2018-09-28T21:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415952c78ee", "title": "LZ77", "url": "https://blog.ngzhian.com/lz77.html", "published_at": "2018-06-26T21:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541595d74f18", "title": "Get Off the Tightrope - Tom Stuart", "url": "https://blog.ngzhian.com/get-off-the-tightrope.html", "published_at": "2017-12-09T16:10:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541596854fd5", "title": "Storage strategies for collections in dynamically typed\nlanguages - Bolz, Diekmann, Tratt", "url": "https://blog.ngzhian.com/storage-strategies-for-collections-in-dynamically-typed-languages.html", "published_at": "2017-11-05T18:50:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159734c0a2", "title": "Android startup tour - zygote", "url": "https://blog.ngzhian.com/android-startup-tour-zygote.html", "published_at": "2017-09-24T11:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-541597b3644a", "title": "Android startup tour - init", "url": "https://blog.ngzhian.com/android-startup-tour-init.html", "published_at": "2017-09-20T22:20:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415983791bf", "title": "A Pretty But Not Greedy Printer by Jean-Philippe\nBernardy", "url": "https://blog.ngzhian.com/a-pretty-but-not-greedy-printer.html", "published_at": "2017-09-09T21:40:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415991431dd", "title": "University reflections", "url": "https://blog.ngzhian.com/uni-reflections.html", "published_at": "2017-06-26T19:49:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415997eb062", "title": "G-machine", "url": "https://blog.ngzhian.com/g-machine.html", "published_at": "2017-06-17T22:02:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159989b198", "title": "SKI combinators - Lambda to SKI", "url": "https://blog.ngzhian.com/ski2.html", "published_at": "2017-05-27T18:25:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159a241d2a", "title": "SKI combinators - AST and Evaluating", "url": "https://blog.ngzhian.com/ski.html", "published_at": "2017-05-12T16:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159a78073a", "title": "Category theory", "url": "https://blog.ngzhian.com/category-theory.html", "published_at": "2017-05-05T19:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159b42cfe4", "title": "Algebraic structures", "url": "https://blog.ngzhian.com/algebraic-structures.html", "published_at": "2017-05-03T16:06:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159b89978d", "title": "Zippers", "url": "https://blog.ngzhian.com/zippers.html", "published_at": "2017-04-29T14:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159c46f114", "title": "Some type about Sum types (and more)", "url": "https://blog.ngzhian.com/some-type-about-sum-type-and-more.html", "published_at": "2017-03-22T19:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159d354e05", "title": "Bookmarks for a programming language enthusiast", "url": "https://blog.ngzhian.com/bookmarks-for-a-programming-language-enthusiast.html", "published_at": "2017-03-21T10:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159d735898", "title": "2D physics systems in the wild", "url": "https://blog.ngzhian.com/2d-physics-systems-in-the-wild.html", "published_at": "2017-03-12T18:01:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159ddeced0", "title": "The Next 700 Programming Languages by P. J. Landin", "url": "https://blog.ngzhian.com/the-next-700-programming-languages-p-j-landin.html", "published_at": "2017-03-11T15:12:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159e17d967", "title": "Dates with JavaScript", "url": "https://blog.ngzhian.com/dates-with-javascript.html", "published_at": "2017-01-03T13:35:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159f08f876", "title": "An Axiomatic Basis for Computer Programming by C. A. R.\nHoare", "url": "https://blog.ngzhian.com/paper-axiomatic-basis-for-computer-programming.html", "published_at": "2016-12-04T21:45:00+00:00" }, { "id": "01a08751-4733-722f-82f1-54159ff75530", "title": "How we let you be you without knowing you", "url": "https://blog.ngzhian.com/how-we-let-you-be-you.html", "published_at": "2016-11-16T00:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a002e736", "title": "Chrome offline network emulation and WebSocket", "url": "https://blog.ngzhian.com/chrome-offline-network-emulation-websocket.html", "published_at": "2016-11-15T23:54:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a0db73b0", "title": "How we deploy", "url": "https://blog.ngzhian.com/how-we-deploy.html", "published_at": "2016-11-12T09:37:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a1c0ccbc", "title": "TDD", "url": "https://blog.ngzhian.com/tdd.html", "published_at": "2016-10-28T22:54:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a236828f", "title": "Environment", "url": "https://blog.ngzhian.com/environment.html", "published_at": "2016-10-23T22:32:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a264764f", "title": "Iterative Development", "url": "https://blog.ngzhian.com/iterative-development.html", "published_at": "2016-10-18T21:54:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a2d34cd8", "title": "My experience interning at 3 companies", "url": "https://blog.ngzhian.com/three-internships.html", "published_at": "2016-09-18T21:41:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a393fda4", "title": "Road to React", "url": "https://blog.ngzhian.com/road-to-react.html", "published_at": "2016-08-27T12:24:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a398b390", "title": "Framework v.s. Library", "url": "https://blog.ngzhian.com/framework-vs-library.html", "published_at": "2016-08-27T11:58:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a3b5f9f4", "title": "Resume tips", "url": "https://blog.ngzhian.com/resume-tips.html", "published_at": "2016-05-04T13:35:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a480e7ec", "title": "Error messages from opam when installing packages", "url": "https://blog.ngzhian.com/ocaml-opam-errors.html", "published_at": "2016-05-03T12:24:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a4a0131c", "title": "Installing OCaml from source on Ubuntu", "url": "https://blog.ngzhian.com/install-ocaml.html", "published_at": "2016-05-02T22:32:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a4f88760", "title": "The magic of static", "url": "https://blog.ngzhian.com/static-site.html", "published_at": "2016-04-24T00:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a57929a9", "title": "Haskell’s powerful pattern matching", "url": "https://blog.ngzhian.com/haskell-pattern-matching.html", "published_at": "2015-09-11T14:05:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a5b04d51", "title": "Lexing COOL - Coursera Compilers Course Assignment\n1", "url": "https://blog.ngzhian.com/coursera-compilers-1.html", "published_at": "2015-05-25T14:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a5b5cd53", "title": "ffmpeg to make gifs", "url": "https://blog.ngzhian.com/ffmpeg.html", "published_at": "2015-05-17T09:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a65ed1fb", "title": "Common problems I faced with Vagrant and VirtualBox", "url": "https://blog.ngzhian.com/vagrant-virtualbox-dev-tips.html", "published_at": "2015-05-08T19:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a72343d0", "title": "What are Peephole Optimizations?", "url": "https://blog.ngzhian.com/peephole-1.html", "published_at": "2015-04-28T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a76695a2", "title": "Set up Vim for JavaScript development", "url": "https://blog.ngzhian.com/vim-javascript-development.html", "published_at": "2015-04-24T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a7ab78cd", "title": "What the heck is Google Closure Compiler?", "url": "https://blog.ngzhian.com/closure-compiler-1.html", "published_at": "2015-04-20T19:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a7ae165f", "title": "So I set up a Jenkins CI server today", "url": "https://blog.ngzhian.com/jenkins-setup.html", "published_at": "2015-01-18T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a82e5c79", "title": "NOC New York Financials", "url": "https://blog.ngzhian.com/noc-financials.html", "published_at": "2015-01-09T19:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a903e94f", "title": "NOC New York Module Credits mapping for SoC", "url": "https://blog.ngzhian.com/noc-soc-mc-mapping.html", "published_at": "2015-01-02T16:30:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a9246487", "title": "Suggest - My Hack for TimeIncHack2014", "url": "https://blog.ngzhian.com/time-inc-hack-2014.html", "published_at": "2014-11-20T08:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a946ac40", "title": "I will never be able to log in to Flickr again", "url": "https://blog.ngzhian.com/yahoo-flickr.html", "published_at": "2014-05-24T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415a9eb8603", "title": "MBeanScanner a utility class to generate sample\nconfiguration file for JMXetric", "url": "https://blog.ngzhian.com/mbeanscanner.html", "published_at": "2014-05-19T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415aa68d14f", "title": "Exploring Apache Karaf MBeans using JConsole", "url": "https://blog.ngzhian.com/explore-apache-karaf-mbeans-using-jconsole.html", "published_at": "2014-05-10T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415ab51bc00", "title": "Default value of ATTLIST, attributes of an XML Element, XML\nDoctype", "url": "https://blog.ngzhian.com/attlist-attributes-of-xml-element.html", "published_at": "2014-05-10T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415abf7b2a9", "title": "Using JConsole to look at MBeans", "url": "https://blog.ngzhian.com/using-jconsole-to-monitor-mbeans.html", "published_at": "2014-05-08T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415ac255789", "title": "JMX and MBeans", "url": "https://blog.ngzhian.com/jmx-mbeans.html", "published_at": "2014-05-07T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415acecac95", "title": "GSOC 2014, jmxetric", "url": "https://blog.ngzhian.com/gsoc-jmxetric.html", "published_at": "2014-05-07T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415ad1aa34f", "title": "Debian Jessie, Screen resolution, and VirtualBox Guest\nAdditions", "url": "https://blog.ngzhian.com/debian-jessie-virtualbox-screen-resolution.html", "published_at": "2014-05-04T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415ada14dc6", "title": "Rock Paper Scissors in Haskell", "url": "https://blog.ngzhian.com/rps-haskell.html", "published_at": "2014-05-01T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415adb0b3dd", "title": "Scissors Paper Stone and their ordering (Or is it Rock\nPaper Scissors?)", "url": "https://blog.ngzhian.com/scissors-paper-stone-and-ordering.html", "published_at": "2014-04-28T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415ae3e6fab", "title": "How Java sorts Objects", "url": "https://blog.ngzhian.com/how-java-sorts-objects.html", "published_at": "2014-04-28T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415aeb3e90d", "title": "Setting up a killer development environment for\nCS2103T", "url": "https://blog.ngzhian.com/how-to-build-a-killer-cs2103t-development-environment.html", "published_at": "2014-04-27T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415af4ef996", "title": "Don’t waste their time!", "url": "https://blog.ngzhian.com/dont-waste-users-time.html", "published_at": "2014-04-26T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415aff4d446", "title": "Configuring XMonad", "url": "https://blog.ngzhian.com/configuring-xmonad.html", "published_at": "2014-04-25T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b0e11bcb", "title": "Planes, Airports, and Monads - Adventures in\nHaskell", "url": "https://blog.ngzhian.com/planes-airports-and-monads.html", "published_at": "2014-04-20T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b13d1f87", "title": "Learning Haskell through Maybe - Functors", "url": "https://blog.ngzhian.com/learn-haskell-through-maybe-functors.html", "published_at": "2014-04-18T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b18e6d99", "title": "CS2101 - Should news agency ask Google to pay up?", "url": "https://blog.ngzhian.com/should-news-agencies-ask-google-to-pay.html", "published_at": "2013-03-04T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b191ce67", "title": "Notes on “Thinking Forth”", "url": "https://blog.ngzhian.com/notes-on-thinking-forth.html", "published_at": "2013-03-03T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b1b2f39e", "title": "Thanksgiving 2013", "url": "https://blog.ngzhian.com/thanksgiving.html", "published_at": "2013-03-02T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b1d724a0", "title": "Hack&Roll 2013", "url": "https://blog.ngzhian.com/hacknroll2013.html", "published_at": "2013-02-03T18:00:00+00:00" }, { "id": "01a08751-4733-722f-82f1-5415b1f734e1", "title": "What I learned about fonts on Linux", "url": "https://blog.ngzhian.com/what-i-learned-about-fonts.html", "published_at": "2013-01-11T18:00:00+00:00" } ] posts Claim your blog
Back to blog.ngzhian.com
Blog · corpus.blog/blogs/blog.ngzhian.com/posts

blog.ngzhian.com

blog.ngzhian.com

2025

2024

2022

2021

2020

2019

2018

26 Jun 2018

2017

2016

28 Oct 2016

2015

2014

2013