Welcome to the digital garden of Can Rau

Me waving & smiling hilariously into the cam, being way up in the andean mountains at more than 3000m Photo by @fuckyeahgaiama

πŸ‘‹ A warm welcome to everyone stumbling upon my website and especially this page πŸ€“

I want to use this first "article" to explain a little more what I'm planning to do here.

After a couple of intents to blog, on other domains, which, apart from my travel blog I had when I was work & traveling Australia, failed pretty quick. Actually I should say, I failed pretty quick to continue adding and updating content, so they went stale.

What was the problem?

Good question! I'm not exactly sure, not even that I'm able to solve it this time, though it always felt like my websites were hindering or limiting me. They were always more specific, like traveling or coding, but kinda limited to a specific project. So when some desire to share something popped up which to my mind wasn't sufficiently related to the blogs topic I felt like I souldn't share it there but also had nowhere else to share. 😫

So how do you intend to solve this?

Right now, this website is in its infancy, a living work in progress and at least at the moment it makes sense to me to keep it more programming related, as I want to share "how I'm building it".

As soon as it matures a little further and I get to implement categories and figure out how I wana structure everything I'm starting to share non-programming stuff. I hope by then I can settle on a CMS, or even build my own (which is another project I have in mind). I also want to start to translate at least parts of this website to spanish and maybe german as well.

As much as I feel like a coder, I'm also very visual and as fun as it is to write markdown (in VSCode at the time of writing) it kinda doesn't feel satisfying enough. Or maybe that's just because right now I still have to deploy the whole website to publish or update content. πŸ€·πŸ»β€β™‚οΈ Might very well be a combination of both.

Also I feel like I have ambitious plans for my content, which can definitely be done using markdown, but would be more fun using (custom) CMS 😍.

Sounds kinda interesting, but who are you actually?? 🧐

Right! So, as you might've guessed my name's Can Rau, I'm 33 years old and was born and raised in Berlin, Germany, Hallo πŸ‘‹. I left Germany in 2013 to explore the world by bike and live now full-time in PerΓΊ πŸ‡΅πŸ‡ͺπŸ¦™ since december 2014 πŸŽ… I just love the climate of a higher rainforest 🌴

Also I've co-founded a rainforest conservation organization here to help protect some of the worlds precious wild lifes πŸ’πŸ¦‹πŸ”

Me in my natural habitat, smiling into the cam Photo by @fuckyeahgaiama

What's a digital garden though?

The idea is that it's more about living documents (pages) which grow over time and be updated. That's why I'm planning to have the pages versioned so in the future you'll be able to view not only the current state, but also all the former versions πŸ“œ as well as subscribe not only to the complete newsletter but also specific topics and documents, to get notified about document updates πŸ””

I got the inspiration to a digital garden by Joel Hooks and later stumbled upon more examples by Chris Biscardi and Tom Critchlow

So, that's all for now, though remember that I'm coming back to update this very welcome page whenever I see fit πŸ˜‰

If you've got any questions, feedback or anything else, please feel free to message (and or follow me) on Twitter @CanRau

See you hopefully soon, bye πŸ‘‹

Stay up to date with my progress

CanRau.com Roadmap

FIXME's (11 😨)
  • fix .prose WindiTypography styling

    www/ssr/nano-roadmap.tsx
  • other way than allowDangerousHtml to allow comments in micromark? Obsolete once I get MDX working

    www/ssr/lib/markdown/mod.ts
  • might be able to import types lazily as well right?

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • Reconsider API before publishing article or at least the module!

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • only import parsers actually in use according to associateParser, or at least provide a way of disabling parsers not in associateParser

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • this is a test case, so nothing to fix πŸ₯°

    www/ssr/lib/leasot_deno/leasot_deno_test.ts
  • add trailing slash or not?

    www/ssr/server.tsx
  • fix .prose WindiTypography styling

    www/ssr/server.tsx
  • static middleware not working?, though only needed locally as fly.io handles static files automatically

    www/ssr/middlewares/static-middleware.ts
  • outsource generateRoadmap into it's own module, then open-source!

    commands/roadmap.ts
  • make <title> overridable from within a component

    modules/nanojsx/components/helmet.ts
TODO's (40 😱)
  • deno.jsonc
  • Make age a dynamic component

    www/content/en/welcome.md
  • Add link to actual generate-roadmap code once open-sourced

    www/content/en/leasot-deno.md
  • Add ids to md headlines

    www/content/en/index.md
  • or switch to unknown?

    www/components/components.tsx
  • www/components/newsletter-signup/NewsletterSignup.tsx
  • eat more fruit 🍌`,

    www/ssr/lib/leasot_deno/leasot_deno_test.ts
  • Make leasot file exclusion less error prone

    www/ssr/lib/generate-roadmap.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • Add RSS feed with PrettyFeed example

    www/ssr/server.tsx
  • before open sourcing set the fly secret DB_DOMAIN to the current app info's Hostname

    www/ssr/server.tsx
  • TLS in dev mkcert, usage, vite-plugin, npm

    www/ssr/server.tsx
  • www/ssr/server.tsx
  • move Roadmap to it's own filterable page 😍

    www/ssr/server.tsx
  • cache busting, hashing, eTag?

    www/ssr/server.tsx
  • Favicons & Webmanifest

    www/ssr/server.tsx
  • www/ssr/server.tsx
  • Outsource the page creation to throw here and handle anything else in errorMiddleware?

    www/ssr/server.tsx
  • activate client scripts when esbuild or sthg?

    www/ssr/server.tsx
  • Put pageviews middleware in its own file

    www/ssr/server.tsx
  • implement something like Netlify's _redirects.yml, check out KCD's

    www/ssr/server.tsx
  • www/ssr/middlewares/spa-middleware.ts
  • wrap emojis to make them bigger?

    www/lib/render-dynamic-components.ts
  • fix Type Guard?

    www/lib/render-dynamic-components.ts
  • Maybe I add a sourcemap?

    www/lib/generate-styles.ts
  • Or disable it for development and curious devs to learn if some query parameter is provided?

    www/lib/generate-styles.ts
  • www/client/client.tsx
  • add bundle stage like in denoland/deno_docker#5 awaiting #12086

    Dockerfile
  • maybe use dotenv for domain?

    www.config.ts
  • add cli tests like in deployctl

    cli.ts
  • auto-completion using omelette

    cli.ts
  • add TLS to dev-server

    cli.ts
  • Maybe add release command which updates VERSION, git commits and deploys?

    cli.ts
  • destroy fly-builder app after successful deploy

    cli.ts
  • add release command to bump version, commit & git tag --annotate

    cli.ts
  • Show only for longer running processes and not for e.g. version

    cli.ts
  • get cmds working!!! probably better splitting deploy and dev into their own files already!

    cli.ts
  • Maybe defining the file instead of cmd which will be async imported and deno.runed?

    cli.ts
DONE's (6 😌)
  • how to markup keyboard shortcut in md?

    www/content/en/gracefully-close-sub-subprocess-using-signals-in-deno.md
  • add link to Promise.any docs

    www/content/en/gracefully-close-sub-subprocess-using-signals-in-deno.md
  • Add syntax highlighting

    www/content/en/leasot-deno.md
  • WINDICONFIG?

    www/lib/generate-styles.ts
  • figure out dev.to profile url

    www.config.ts
  • shutdown not freeing http.listen addr! 😒

    cli.ts
NOTE's (25 😱)
  • wanted to switch to unified for easier rehype integration but can't get it working so far because of type issues

    www/ssr/lib/markdown/mod.ts
  • not using import-map here to be able to resue in CLI, going to have to fix more things and probably relocate this file then, maybe crux.land?

    www/ssr/lib/generate-roadmap.ts
  • switched from markdown_wasm (failed on things like <title> in todo comments) to micromark

    www/ssr/lib/generate-roadmap.ts
  • www/ssr/lib/generate-roadmap.ts
  • list of supported languages by leasot

    www/ssr/lib/generate-roadmap.ts
  • or use a ready markdown file so no need for nano-app.tsx

    www/ssr/lib/generate-roadmap.ts
  • www/ssr/server.tsx
  • www/ssr/server.tsx
  • asterism from ctrl.blog

    www/ssr/server.tsx
  • had to set ENV via

    Dockerfile
  • ARGs in multi-stage

    Dockerfile
  • had to set ENV

    Dockerfile
  • importing PluginUtils type from WindiCss doesn't work (yet)

    windi.config.ts
  • just to make sure Windi won't unnecessarily try to extract

    windi.config.ts
  • WindiTypography needs the .prose class and optionally the .dark class on body along prose-dark

    windi.config.ts
  • --build-arg via

    commands/deploy.ts
  • import-maps are cool but can easily bring more in than expected which can lead to strange errors πŸ₯²

    commands/roadmap.ts
  • that MDXLayout is special as it’s taken from

    modules/xdm-deno/plugin/recma-jsx-rewrite.js
  • CLI inspirations

    cli.ts
  • Setting flags as boolean allows them to be used even between commands πŸ₯³

    cli.ts
  • interesting Docker API for Deno - denocker

    cli.ts
  • send SIGQUIT to the subprocess which'll get picked up by the server to .abort() it, to free up the address it was listening on

    cli.ts
  • SIGKILL not supported in Rust #12515

    cli.ts
  • send SIGKILL to the subprocess to stop the Deno --watcher

    cli.ts
  • p.close to end the Deno.run mainprocess to free up memory

    cli.ts

Stay up to date with my progress

CanRau.com
Can Rau

Designed and developed by

Can Rau

Pageviews so far:
4795
v0.7.4 | #046a905 (to be open-sourced) | Deployed as empty-wave-3298 (v111) on Fly.io
Β© Copyright Can Rau | moc.liamg@uarsnac