41554 blogs Β· [ { "id": "01a0b68b-4cd2-7299-b5a9-1d74c0d93f8f", "title": "Chen Hui Jing", "url": "https://chenhuijing.com", "published_at": "2026-09-07T05:20:44+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf064add97", "title": "I still like writing websites by hand", "url": "https://chenhuijing.com/blog/i-still-like-writing-websites-by-hand/", "published_at": "2026-08-23T01:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0725aa75", "title": "Building a connect wallet button", "url": "https://chenhuijing.com/blog/building-a-connect-wallet-button/", "published_at": "2026-05-17T01:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf076b1659", "title": "Designing a who-pays-the-fee interface", "url": "https://chenhuijing.com/blog/designing-a-who-pays-the-fees-interface/", "published_at": "2026-03-21T11:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf07c0bafc", "title": "Mathematical precision in Javascript", "url": "https://chenhuijing.com/blog/mathematical-precision-in-javascript/", "published_at": "2026-03-19T11:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf088a5cab", "title": "Database troubleshooting for Umami", "url": "https://chenhuijing.com/blog/database-troubleshooting-for-umami/", "published_at": "2025-10-25T11:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf08f81710", "title": "How standards enhance the developer experience", "url": "https://chenhuijing.com/blog/how-standards-enhance-developer-experience/", "published_at": "2025-10-18T01:14:50+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf09d5f93d", "title": "Let's talk sample apps", "url": "https://chenhuijing.com/blog/lets-talk-sample-apps/", "published_at": "2025-10-08T11:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf09ed8e90", "title": "Migrating from Hugo to Astro", "url": "https://chenhuijing.com/blog/migrating-from-hugo-to-astro/", "published_at": "2025-10-06T01:09:20+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf09fa660b", "title": "Tag, you're it!", "url": "https://chenhuijing.com/blog/tag-youre-it/", "published_at": "2025-04-16T11:44:48+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0aa41efb", "title": "Migrating content collections from Astro 4 to 5", "url": "https://chenhuijing.com/blog/migrating-content-collections-from-astro-4-to-5/", "published_at": "2025-03-29T21:14:50+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0b5a2b7e", "title": "The case for β€œold school” CSS", "url": "https://chenhuijing.com/blog/the-case-for-old-school-css/", "published_at": "2025-03-25T01:14:50+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0b92f9a8", "title": "Implementing pagination on an Astro blog", "url": "https://chenhuijing.com/blog/implementing-pagination-on-an-astro-blog/", "published_at": "2025-03-23T21:14:50+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0c34dc9e", "title": "Learning web extensions", "url": "https://chenhuijing.com/blog/learning-web-extensions/", "published_at": "2025-02-08T21:14:50+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0c79d6c2", "title": "Chill day just HTML-ing and CSS-ing", "url": "https://chenhuijing.com/blog/chill-day-just-html-ing-and-css-ing/", "published_at": "2024-11-01T12:38:36+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0cb14699", "title": "How to try experimental CSS features", "url": "https://chenhuijing.com/blog/how-to-try-experimental-css-features/", "published_at": "2024-07-05T01:10:21+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0d6a141d", "title": "Generating a weekly calendar from JSON data", "url": "https://chenhuijing.com/blog/generating-a-weekly-calendar-from-json-data/", "published_at": "2024-03-18T02:48:51+00:00" }, { "id": "01a0875e-a3c3-70b7-ba5e-00cf0e5df385", "title": "Creating excerpts in Astro", "url": "https://chenhuijing.com/blog/creating-excerpts-in-astro/", "published_at": "2024-03-14T03:05:05+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d02bb59ca", "title": "The value of live web design", "url": "https://chenhuijing.com/blog/the-value-of-live-web-design/", "published_at": "2024-03-05T00:37:11+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0306a920", "title": "Wow, the blog is 10 years old πŸ₯³", "url": "https://chenhuijing.com/blog/wow-the-blog-is-10-years-old/", "published_at": "2024-02-08T23:26:44+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d038b1c25", "title": "My ideal frontend interview", "url": "https://chenhuijing.com/blog/my-ideal-frontend-interview/", "published_at": "2024-01-14T01:28:58+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d038da44e", "title": "Let's inspect a phishing site", "url": "https://chenhuijing.com/blog/lets-inspect-a-phishing-site/", "published_at": "2024-01-11T04:21:32+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d03e08b80", "title": "Pulling content from external API into Drupal 10", "url": "https://chenhuijing.com/blog/pulling-content-from-external-api-into-drupal-10/", "published_at": "2023-12-19T02:19:37+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d048cb245", "title": "Customising content markdown via frontmatter in Astro", "url": "https://chenhuijing.com/blog/customising-content-markdown-via-frontmatter-in-astro/", "published_at": "2023-11-17T07:30:40+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d055edd5c", "title": "Back from blogging hiatus? Maybe…", "url": "https://chenhuijing.com/blog/back-from-blogging-hiatus-maybe/", "published_at": "2023-11-17T06:53:51+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d05ae07f3", "title": "OMG, I'm doing Drupal again", "url": "https://chenhuijing.com/blog/omg-im-doing-drupal-again/", "published_at": "2023-11-17T06:30:40+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d06851d2d", "title": "State of CSS survey 2023 is live!", "url": "https://chenhuijing.com/blog/state-of-css-survey-2023-is-live/", "published_at": "2023-06-20T09:53:40+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d071be227", "title": "Debugging Firefox on Android", "url": "https://chenhuijing.com/blog/debugging-firefox-on-android/", "published_at": "2023-02-07T14:54:24+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d07ee768b", "title": "So your designer wants stuff to overlap", "url": "https://chenhuijing.com/blog/so-your-designer-wants-stuff-to-overlap/", "published_at": "2022-09-06T02:50:07+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d08eb57e2", "title": "Hacking background-clip with gradient colour stops", "url": "https://chenhuijing.com/blog/hacking-background-clip-with-gradient-colour-stops/", "published_at": "2022-08-18T03:15:17+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d09afea38", "title": "The horizontal overflow problem", "url": "https://chenhuijing.com/blog/the-horizontal-overflow-problem/", "published_at": "2022-07-29T04:35:59+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d09e4ac92", "title": "Can we enterprise CSS grid?", "url": "https://chenhuijing.com/blog/can-we-enterprise-css-grid/", "published_at": "2022-06-23T02:50:11+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0a73a0b4", "title": "CSS card shadow effects", "url": "https://chenhuijing.com/blog/css-card-shadow-effects/", "published_at": "2022-06-13T23:54:25+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0a86cc73", "title": "CSS animation on button hover state", "url": "https://chenhuijing.com/blog/css-animation-on-button-hover-state/", "published_at": "2022-05-23T06:26:56+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0af20db7", "title": "@font-face fun times", "url": "https://chenhuijing.com/blog/font-face-fun-times/", "published_at": "2022-05-10T17:22:43+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0b7ecd07", "title": "Random update for 2022", "url": "https://chenhuijing.com/blog/random-update-for-2022/", "published_at": "2022-03-13T04:06:51+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0c30acc0", "title": "The many methods for using SVG icons", "url": "https://chenhuijing.com/blog/the-many-methods-for-using-svg-icons/", "published_at": "2021-12-23T05:53:22+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0c4e0811", "title": "Debugging vertical layouts in 2021", "url": "https://chenhuijing.com/blog/debugging-vertical-layouts-in-2021/", "published_at": "2021-05-08T05:53:22+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0d013212", "title": "DevTools for CSS layouts 2021 edition", "url": "https://chenhuijing.com/blog/devtools-for-css-layouts-2021-edition/", "published_at": "2021-04-23T05:53:22+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0ddb339e", "title": "Understanding browser cookies πŸͺ", "url": "https://chenhuijing.com/blog/understanding-browser-cookies/", "published_at": "2021-04-05T12:31:04+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0e0cc153", "title": "Setting up umami on Heroku", "url": "https://chenhuijing.com/blog/setting-up-umami-on-heroku/", "published_at": "2020-10-08T12:31:04+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0e67b6a3", "title": "Migrating mLab to MongoDB Atlas", "url": "https://chenhuijing.com/blog/migrating-mlab-to-mongodb-atlas/", "published_at": "2020-10-05T03:59:11+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0f277fbf", "title": "What is RedViolaPanda?", "url": "https://chenhuijing.com/blog/what-is-redviolapanda/", "published_at": "2020-08-30T01:36:27+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d0ff80dc8", "title": "Monetizing Your Blog With Coil", "url": "https://chenhuijing.com/blog/monetizing-your-blog-with-coil/", "published_at": "2020-07-03T14:16:41+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d10b69437", "title": "Let's talk about Web Monetization", "url": "https://chenhuijing.com/blog/lets-talk-about-web-monetization/", "published_at": "2020-06-14T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d11228e5a", "title": "On fixed elements and backgrounds", "url": "https://chenhuijing.com/blog/on-fixed-elements-and-backgrounds/", "published_at": "2020-05-25T12:40:20+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d11e8ecb2", "title": "Revisiting Drupal 8 After 2 Years", "url": "https://chenhuijing.com/blog/revisiting-drupal-8-after-2-years/", "published_at": "2020-05-24T02:26:25+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d128246d6", "title": "The one in black and orange", "url": "https://chenhuijing.com/blog/the-one-in-black-and-orange/", "published_at": "2020-05-06T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d12cd633c", "title": "Migrating from Jekyll to Hugo", "url": "https://chenhuijing.com/blog/migrating-from-jekyll-to-hugo/", "published_at": "2020-04-29T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d133871fb", "title": "CSS for internationalisation", "url": "https://chenhuijing.com/blog/css-for-i18n/", "published_at": "2020-04-19T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1418dca0", "title": "Flexbox and absolute positioning", "url": "https://chenhuijing.com/blog/flexbox-and-absolute-positioning/", "published_at": "2020-03-13T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d14c063c6", "title": "Being a bilingual developer", "url": "https://chenhuijing.com/blog/being-a-bilingual-developer/", "published_at": "2020-02-26T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d155b8227", "title": "On attributes for HTML form elements", "url": "https://chenhuijing.com/blog/on-attributes-for-html-form-elements/", "published_at": "2020-02-01T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d15c5bde5", "title": "Can you make a countdown timer in pure CSS?", "url": "https://chenhuijing.com/blog/can-you-make-a-countdown-timer-in-pure-css/", "published_at": "2020-01-25T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1614036a", "title": "Basics of State and Props in React (2020 edition)", "url": "https://chenhuijing.com/blog/state-and-props-in-react/", "published_at": "2020-01-21T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d162a040e", "title": "Is your browser a polyglot?", "url": "https://chenhuijing.com/blog/is-your-browser-a-polyglot/", "published_at": "2020-01-15T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1692f217", "title": "Building a Windows 3.1 application in 2019", "url": "https://chenhuijing.com/blog/building-a-win31-app-in-2019/", "published_at": "2020-01-11T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d172ba975", "title": "Understanding positioning in CSS", "url": "https://chenhuijing.com/blog/understanding-positioning-in-css/", "published_at": "2019-12-18T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d17af6e54", "title": "Talking about talking CSS 2019 edition", "url": "https://chenhuijing.com/blog/conference-season-2019/", "published_at": "2019-12-15T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d17e7340e", "title": "DevTools as the ultimate CSS advocate", "url": "https://chenhuijing.com/blog/devtools-the-ultimate-css-advocate/", "published_at": "2019-11-24T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d17fcb850", "title": "The one which is impossible to spell", "url": "https://chenhuijing.com/blog/the-one-which-is-impossible-to-spell/", "published_at": "2019-11-18T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d189c92f4", "title": "Box alignment and overflow", "url": "https://chenhuijing.com/blog/box-alignment-and-overflow/", "published_at": "2019-10-19T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d18af8524", "title": "The wondrous world of CSS counters", "url": "https://chenhuijing.com/blog/the-wondrous-world-of-css-counters/", "published_at": "2019-10-13T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d199ca886", "title": "Let's talk about some amazing women in my life", "url": "https://chenhuijing.com/blog/lets-talk-about-some-amazing-women/", "published_at": "2019-08-25T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1a5c44cd", "title": "Where did CSS named colours come from?", "url": "https://chenhuijing.com/blog/where-did-css-named-colours-come-from/", "published_at": "2019-08-22T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1b342bfb", "title": "Sub-pixel rendering and borders", "url": "https://chenhuijing.com/blog/about-subpixel-rendering-in-browsers/", "published_at": "2019-08-11T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1b8e907c", "title": "Learning CSS by reading specs", "url": "https://chenhuijing.com/blog/learning-css-by-reading-specifications/", "published_at": "2019-08-06T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1c1c6bfc", "title": "Flexbox and padding", "url": "https://chenhuijing.com/blog/flexbox-and-padding/", "published_at": "2019-07-28T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1c9982e2", "title": "Figuring out CSS animation properties with a magic kittencorn", "url": "https://chenhuijing.com/blog/figuring-out-css-animation-with-magic-kittencorn/", "published_at": "2019-07-27T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1ccff51a", "title": "Recreating the Fool's Mate chess move with CSS Grid", "url": "https://chenhuijing.com/blog/recreating-the-fools-mate-chess-move-with-css-grid/", "published_at": "2019-07-13T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1cfe44ae", "title": "The importance of representation", "url": "https://chenhuijing.com/blog/the-importance-of-representation/", "published_at": "2019-07-10T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1d70672e", "title": "Internet Explorer 3, an adventure in cross-browser compatibility", "url": "https://chenhuijing.com/blog/internet-explorer-3-an-adventure-in-compatibility/", "published_at": "2019-07-03T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1e531b1c", "title": "A thank you and love letter to CSSConf EU", "url": "https://chenhuijing.com/blog/a-thank-you-and-love-letter-to-cssconfeu/", "published_at": "2019-06-02T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1ed3ebef", "title": "Friends don't let friends implement dark mode alone", "url": "https://chenhuijing.com/blog/friends-dont-let-friends-implement-dark-mode-alone/", "published_at": "2019-05-24T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d1fb74712", "title": "Understanding grid placement through building a HTML periodical table", "url": "https://chenhuijing.com/blog/understanding-grid-placement/", "published_at": "2019-05-06T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d203c59e4", "title": "Using CSS to make a print banner", "url": "https://chenhuijing.com/blog/using-css-to-make-a-print-banner/", "published_at": "2019-04-07T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d20c0518e", "title": "A short musing on writing systems", "url": "https://chenhuijing.com/blog/short-musing-on-writing-systems/", "published_at": "2019-04-05T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d211ae291", "title": "CSS variables for fun and no profit", "url": "https://chenhuijing.com/blog/css-variables-for-fun-and-no-profit/", "published_at": "2019-03-28T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d212ce827", "title": "Windows 3.1, a walk down memory lane", "url": "https://chenhuijing.com/blog/a-windows-3-1-revival/", "published_at": "2019-03-20T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d21767c98", "title": "The value of sharing our perspectives", "url": "https://chenhuijing.com/blog/the-value-of-sharing-our-perspectives/", "published_at": "2019-03-11T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2233bc05", "title": "An exercise in progressive enhancement", "url": "https://chenhuijing.com/blog/an-exercise-in-progressive-enhancement/", "published_at": "2019-03-05T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d23108a62", "title": "HTML slides without frameworks, just CSS", "url": "https://chenhuijing.com/blog/html-slides-without-frameworks/", "published_at": "2019-02-09T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d23e31ac9", "title": "Tunnelling services for exposing localhost to the web", "url": "https://chenhuijing.com/blog/tunnelling-services-for-exposing-localhost-to-the-web/", "published_at": "2019-02-05T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d240e0c3c", "title": "Handling external posts on your own Jekyll site", "url": "https://chenhuijing.com/blog/handling-articles-on-external-sites/", "published_at": "2019-01-29T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d24405269", "title": "Customising Reveal.js beyond creating a personalised theme", "url": "https://chenhuijing.com/blog/customising-revealjs-beyond-theming/", "published_at": "2019-01-27T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d252ef8dc", "title": "Using DevTools to understand modern layout techniques", "url": "https://chenhuijing.com/blog/devtools-for-understanding-modern-layout-techniques/", "published_at": "2018-12-20T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d256171cb", "title": "Organising Talk.CSS, consistently anyhowly", "url": "https://chenhuijing.com/blog/organising-talkcss-consistently-anyhowly/", "published_at": "2018-10-16T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d25cd7d80", "title": "1827 days working on the web", "url": "https://chenhuijing.com/blog/1827-days-working-on-the-web/", "published_at": "2018-10-01T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d26cc42a0", "title": "Refactoring an inherited codebase", "url": "https://chenhuijing.com/blog/refactoring-an-inherited-codebase/", "published_at": "2018-08-27T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d27b5faf1", "title": "So I mucked up my server last night", "url": "https://chenhuijing.com/blog/so-i-mucked-up-my-server-last-night/", "published_at": "2018-08-24T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d28440b30", "title": "Creating a custom sublime text colour scheme", "url": "https://chenhuijing.com/blog/creating-a-custom-sublime-text-colour-scheme/", "published_at": "2018-08-09T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d29146b26", "title": "CSS exclusions with Queen Bey", "url": "https://chenhuijing.com/blog/css-exclusions-with-queen-bey/", "published_at": "2018-07-30T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2932bca6", "title": "Talking about talking CSS 2018 edition", "url": "https://chenhuijing.com/blog/speaking-in-2018/", "published_at": "2018-07-17T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d29d38a1f", "title": "Preserving mother tongues", "url": "https://chenhuijing.com/blog/preserving-mother-tongues/", "published_at": "2018-07-04T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2aa75420", "title": "Learning Cordova while rewriting an app", "url": "https://chenhuijing.com/blog/learning-cordova-while-refactoring-legacy-code/", "published_at": "2018-03-13T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2af6b897", "title": "Making sense of digital fonts", "url": "https://chenhuijing.com/blog/making-sense-of-digital-fonts/", "published_at": "2018-02-11T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2b2bd27f", "title": "How I design with CSS grid", "url": "https://chenhuijing.com/blog/how-i-design-with-css-grid/", "published_at": "2018-02-07T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2bd953ca", "title": "Teaching CSS grid to newcomers", "url": "https://chenhuijing.com/blog/teaching-css-grid-to-newcomers/", "published_at": "2018-02-04T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2c58abc4", "title": "Managing data with Jekyll", "url": "https://chenhuijing.com/blog/managing-data-with-jeykll/", "published_at": "2018-01-01T00:00:00+00:00" }, { "id": "01a0875e-a3c4-7202-83f9-a50d2c695f3c", "title": "Building a webic community", "url": "https://chenhuijing.com/blog/building-a-webic-community/", "published_at": "2017-12-28T00:00:00+00:00" } ] posts Claim your blog
Back to Chen Hui Jing
Blog Β· corpus.blog/blogs/chenhuijing.com/posts

Chen Hui Jing

chenhuijing.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017