<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>w00kie&#039;s ramblings</title>
	<atom:link href="https://w00kie.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://w00kie.com</link>
	<description>Living the good life in Japan</description>
	<lastBuildDate>Fri, 08 Nov 2024 08:28:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.4</generator>

<image>
	<url>/uploads/2018/12/cropped-プラ@3x-32x32.png</url>
	<title>w00kie&#039;s ramblings</title>
	<link>https://w00kie.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">20993066</site>	<item>
		<title>Launching a SaaS application &#8211; EpicForge.app</title>
		<link>https://w00kie.com/2024/10/24/launching-a-saas-application-epicforge-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=launching-a-saas-application-epicforge-app</link>
					<comments>https://w00kie.com/2024/10/24/launching-a-saas-application-epicforge-app/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Thu, 24 Oct 2024 03:34:33 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1466</guid>

					<description><![CDATA[<p>Shipping a real paid SaaS app for the first time can be really emotional.</p>
<p>The post <a href="https://w00kie.com/2024/10/24/launching-a-saas-application-epicforge-app/">Launching a SaaS application – EpicForge.app</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>For a bit more than a month now I&#8217;ve been working hard on finishing my new app <a href="https://epicforge.app" title="">EpicForge.app</a> and finally launching it. This is a big step for me: I&#8217;ve shipped my fair share of websites, apps and random tools on internet, but this is the first time I&#8217;m making a paid app, asking real money to use it.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Why is it that as soon as you complete that stripe checkout integration and slap a pricing section on your landing page, it becomes so much more emotional?</p>
</blockquote>



<p>When it’s a free tool, you don’t really care whether people use it or not, you just had an idea and feel content to have made it a thing and put it out in the world but when it’s a paid app, if nobody buys it then suddenly it feels like this big failure.</p>



<p>Are you good enough? Somehow this becomes a judgement of your skills and business acumen. Because of this feeling I’ve refrained from turning on payments in some of my apps from fear of failure… But not this time.</p>



<h2 class="wp-block-heading">What is it?</h2>



<p><a href="https://epicforge.app" title="">Epic Forge</a> is based on a tool I built for myself and have used for the past 3 or 4 years at work. I manage these recurring projects in JIRA that consist of an epic and a bunch of stories/tasks which are mostly the same but have different assignees depending on the geo (APAC/AMER/EMEA).</p>



<p>At first I would use the out-of-the-box JIRA deep clone tool but then would spend an hour editing the titles, changing the assignees, etc. I also hate that it keeps <em>cloned-from</em> links to the original issue.</p>



<p>So I built my own tool that stores templates for your epics (or sets of stories) and lets you export to a CSV for easy import into your projects. It has nifty features:</p>



<ul class="wp-block-list">
<li>Templates can have multiple variants where you can toggle part of the issues and/or change the default assignee.</li>



<li>Issues can have placeholder text (using the <code>{{placeholder}}</code> format) in the issue summary and description which you can auto-replace at export time.</li>
</ul>



<figure class="wp-block-image size-large"><a href="/uploads/2024/10/hero-scaled.webp"><img fetchpriority="high" decoding="async" width="1024" height="718" src="/uploads/2024/10/hero-1024x718.webp" alt="" class="wp-image-1468" srcset="/uploads/2024/10/hero-1024x718.webp 1024w, /uploads/2024/10/hero-300x210.webp 300w, /uploads/2024/10/hero-768x538.webp 768w, /uploads/2024/10/hero-1536x1077.webp 1536w, /uploads/2024/10/hero-2048x1436.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Tech Stack</h2>



<p>I always go for my trusty <a href="https://www.djangoproject.com" title="">Django</a> for the backend, but this time I tried my hand at a modern React frontend with <a href="https://nextjs.org" title="">NextJS</a>. </p>



<p>While I&#8217;m really not a frontend guy, <a href="https://ui.shadcn.com" title="">shadcn/ui</a> has made building professional looking interface a real breeze and I&#8217;m actually enjoying this part of the build for the first time in years.</p>



<p>Finally, I&#8217;m hosting all of this with <a href="https://coolify.io" title="">Coolify</a> on a <a href="https://hetzner.com" title="">Hetzner</a> VPS which is also really cool and easy to setup.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>I don&#8217;t know if this app will be successful, but at least I went all the way and shipped something out in the world. That&#8217;s always a good muscle to flex.</p><p>The post <a href="https://w00kie.com/2024/10/24/launching-a-saas-application-epicforge-app/">Launching a SaaS application – EpicForge.app</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/10/24/launching-a-saas-application-epicforge-app/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1466</post-id>	</item>
		<item>
		<title>Running my local dev environment with SSL &#038; domain names</title>
		<link>https://w00kie.com/2024/10/19/running-my-local-dev-environment-with-ssl-domain-names/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=running-my-local-dev-environment-with-ssl-domain-names</link>
					<comments>https://w00kie.com/2024/10/19/running-my-local-dev-environment-with-ssl-domain-names/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Fri, 18 Oct 2024 15:36:04 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1460</guid>

					<description><![CDATA[<p>An up-to-date setup guide to run a dev environment with test domain names and SSL on Apple Silicon and MacOS Sequoia.</p>
<p>The post <a href="https://w00kie.com/2024/10/19/running-my-local-dev-environment-with-ssl-domain-names/">Running my local dev environment with SSL & domain names</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>So I&#8217;m building this app with a NextJS frontend and a Django backend and this is bringing tons of headaches with cross-origin resource sharing (CORS for the uninitiated&#8230; and you should feel lucky if you don&#8217;t know about it) and all kind of cookie troubles.</p>



<p>In order to debug this, I need to have the same setup on my dev environment as in production, just using localhost and different ports is not good enough. So I set out to get some local domain names and SSL, which is actually fairly standard, but hit a few snags on the way in that many guides out there are outdated with Apple Silicon Macs and MacOS Sequoia.</p>



<p>So here&#8217;s what I found that works.</p>



<h2 class="wp-block-heading">The plan</h2>



<p>I will setup 3 things:</p>



<ol class="wp-block-list">
<li>A <code>.test</code> top level domain that will resolve anything, such as <code>app.test</code> and <code>api.app.test</code> to 127.0.0.1</li>



<li>A way to have valid SSL certificates for any of these domains</li>



<li>A web server that can route requests to these domains to your dev servers running with things like <code>bun run dev</code> or <code>python manage.py runserver</code></li>
</ol>



<p>All of this on a recent Mac with Apple Silicon and the latest MacOS Sequoia.</p>



<p>I will assume you have <a href="http://brew.sh" title="">homebrew</a> running already, if not you need to rethink your life.</p>



<h2 class="wp-block-heading">1. Local DNS with dnsmasq</h2>



<p><code>dnsmasq</code> is a lightweight DNS forwarder and DHCP server that provides simple network services for small networks. It can cache DNS queries to speed up subsequent requests and allows you to create custom DNS records for local domains.</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">brew install dnsmasq</code></pre>



<ol class="wp-block-list"></ol>



<p>First we&#8217;ll declare a new <code>.test</code> tld and tell MacOS to resolve it with our local DNS server which we will setup with <code>dnsmasq</code> instead of calling the live DNS servers on internet. We do this by setting up a single file <code>/etc/resolver/test</code></p>



<pre title="/etc/resolver/test" class="wp-block-code"><code class="">nameserver 127.0.0.1</code></pre>



<p>Just change the name of the file if you want something else than <code>.test</code></p>



<p>Now setup <code>dnsmasq</code> by adding a conf file at <code>/opt/homebrew/etc/dnsmasq.d/test.conf</code></p>



<pre title="/opt/homebrew/etc/dnsmasq.d/test.conf" class="wp-block-code"><code class="">address=/test/127.0.0.1</code></pre>



<p>This tells it to resolve any domain <code>*.test</code> to localhost. That&#8217;s where a lot of existing guides fail because they tell you to add the conf in <code>/usr/local/etc/</code> and that&#8217;s for Intel Macs.</p>



<p>Start the service now:</p>



<pre class="wp-block-code"><code class="">brew services start dnsmasq</code></pre>



<p>Verify your stuff is working by pinging <code>foo.test</code></p>



<h2 class="wp-block-heading">2. SSL setup with mkcert</h2>



<p><code>mkcert</code> is a simple tool for creating locally trusted SSL certificates without the hassle of configuring a Certificate Authority. It’s perfect for developers who need HTTPS for local projects, making it easy to set up secure connections during development.</p>



<pre class="wp-block-code"><code class="">brew install mkcert</code></pre>



<p>Then we will install the root certificate and generate a certificate for our project.</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash">mkcert -install
mkcert "app.test" "*.app.test"</code></pre>



<p>Move the files to somewhere safe. I just put them in <code>/Users/francois/certs/</code>. That&#8217;s it.</p>



<h2 class="wp-block-heading">3. Reverse Proxy with Caddy</h2>



<p><a href="https://caddyserver.com" title="">Caddy</a> is a modern, user-friendly web server that automatically manages HTTPS by acquiring and renewing SSL certificates. Known for its simplicity and ease of configuration, it’s ideal for developers who want a secure, performant, and versatile server without complex setups.</p>



<pre class="wp-block-code"><code class="">brew install caddy</code></pre>



<p>The configuration file for Caddy is in <code>/opt/homebrew/etc/Caddyfile</code></p>



<pre title="/opt/homebrew/etc/Caddyfile" class="wp-block-code"><code class="">app.test {
  tls /Users/francois/certs/app.test.pem /Users/francois/certs/app.test-key.pem
  reverse_proxy localhost:5100
}

api.app.test {
  tls /Users/francois/certs/app.test.pem /Users/francois/certs/app.test-key.pem
  reverse_proxy localhost:8000
}</code></pre>



<p>Just map your domains to whatever local ports your dev servers are running on. Now run Caddy as a service:</p>



<pre class="wp-block-code"><code class="">brew services start caddy</code></pre>



<h2 class="wp-block-heading">Conclusion </h2>



<p>That&#8217;s it! You should be all set now.</p>



<p>As a tip, I like to use <a href="https://github.com/nickstenning/honcho" title="">honcho</a> to run my dev servers. You just set a <code>Procfile</code> with your service and run <code>honcho start</code> and you have everything running with logging in your console with different colors for each service.</p>



<pre title="Procfile" class="wp-block-code"><code class="">backend: cd backend &amp;&amp; python manage.py runserver
frontend: cd frontend &amp;&amp; bun dev
stripe: stripe listen --forward-to localhost:8000/webhooks/stripe/</code></pre>



<figure class="wp-block-image size-large"><a href="/uploads/2024/10/SCR-20241019-bihe.jpg"><img decoding="async" width="1024" height="797" src="/uploads/2024/10/SCR-20241019-bihe-1024x797.jpg" alt="" class="wp-image-1461" srcset="/uploads/2024/10/SCR-20241019-bihe-1024x797.jpg 1024w, /uploads/2024/10/SCR-20241019-bihe-300x233.jpg 300w, /uploads/2024/10/SCR-20241019-bihe-768x598.jpg 768w, /uploads/2024/10/SCR-20241019-bihe.jpg 1524w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p><p>The post <a href="https://w00kie.com/2024/10/19/running-my-local-dev-environment-with-ssl-domain-names/">Running my local dev environment with SSL & domain names</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/10/19/running-my-local-dev-environment-with-ssl-domain-names/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1460</post-id>	</item>
		<item>
		<title>Django and WhiteNoise on Coolify</title>
		<link>https://w00kie.com/2024/10/14/django-and-whitenoise-on-coolify/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-and-whitenoise-on-coolify</link>
					<comments>https://w00kie.com/2024/10/14/django-and-whitenoise-on-coolify/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Mon, 14 Oct 2024 12:04:58 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1458</guid>

					<description><![CDATA[<p>How to fix the default run command for Django apps on Coolify/Nixpacks to run collectstatic and fix your 404 errors.</p>
<p>The post <a href="https://w00kie.com/2024/10/14/django-and-whitenoise-on-coolify/">Django and WhiteNoise on Coolify</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Just a little note to remind myself and anyone playing around with Django on <a href="https://coolify.io" title="">Coolify</a>: the default <a href="https://nixpacks.com/docs/providers/python#start" title="">Nixpacks for Django</a> will run migrations but not <code>collectstatic</code>. So if you have problems with your images or CSS not appearing, the quick solution is:</p>



<ol class="wp-block-list">
<li>Install <a href="https://github.com/evansd/whitenoise" title="">whitenoise</a></li>



<li>Set <code>STATIC_ROOT = BASE_DIR / "staticfiles"</code> in your <code>settings.py</code> file</li>



<li>Add a <code>nixpacks.toml</code> file in your Django base directory that overrides the default run command and adds a <code>collectstatic</code> step</li>
</ol>



<pre title="nixpacks.toml" class="wp-block-code"><code lang="toml" class="language-toml">[start]
  cmd = "python manage.py migrate &amp;&amp; python manage.py collectstatic --noinput &amp;&amp; gunicorn app.wsgi"</code></pre>



<p>Then redeploy and you should have your static files display again.</p><p>The post <a href="https://w00kie.com/2024/10/14/django-and-whitenoise-on-coolify/">Django and WhiteNoise on Coolify</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/10/14/django-and-whitenoise-on-coolify/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1458</post-id>	</item>
		<item>
		<title>Hosting a Django/NextJS monorepo webapp on Coolify</title>
		<link>https://w00kie.com/2024/10/11/hosting-a-django-nextjs-monorepo-webapp-on-coolify/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hosting-a-django-nextjs-monorepo-webapp-on-coolify</link>
					<comments>https://w00kie.com/2024/10/11/hosting-a-django-nextjs-monorepo-webapp-on-coolify/#comments</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Fri, 11 Oct 2024 06:42:58 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1445</guid>

					<description><![CDATA[<p>Coolify has settings to host backend and frontend resources from the same repo without having to mess with manual docker-compose setup.</p>
<p>The post <a href="https://w00kie.com/2024/10/11/hosting-a-django-nextjs-monorepo-webapp-on-coolify/">Hosting a Django/NextJS monorepo webapp on Coolify</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Recently I&#8217;ve been building a new web app and trying <a href="https://coolify.io" title="">Coolify</a> for hosting on a cheap but powerful <a href="https://www.hetzner.com/cloud/" title="">Hetzner</a> VPS.</p>



<h2 class="wp-block-heading">Architecture</h2>



<p>This is my first real production app using a <a href="https://nextjs.org" title="">NextJS</a> frontend with a <a href="https://www.djangoproject.com" title="">Django</a> <a href="https://www.django-rest-framework.org" title="">Rest Framework</a> API backend so I&#8217;m learning a ton.</p>



<p>There are tons of ways to go about it, all with different pros and cons, but I chose to go the monorepo route with a <code>/backend</code> folder for Django and a <code>/frontend</code> folder for NextJS. Using a <code>Procfile</code> with <a href="https://github.com/nickstenning/honcho" title="">Honcho</a> I can launch the dev server for both frontend and backend and hack away on localhost.</p>



<figure class="wp-block-image size-large"><a href="/uploads/2024/10/SCR-20241011-ndfa.png"><img decoding="async" width="1024" height="275" src="/uploads/2024/10/SCR-20241011-ndfa-1024x275.png" alt="" class="wp-image-1447" srcset="/uploads/2024/10/SCR-20241011-ndfa-1024x275.png 1024w, /uploads/2024/10/SCR-20241011-ndfa-300x81.png 300w, /uploads/2024/10/SCR-20241011-ndfa-768x206.png 768w, /uploads/2024/10/SCR-20241011-ndfa-1536x412.png 1536w, /uploads/2024/10/SCR-20241011-ndfa.png 1818w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Deploying to Production</h2>



<p>Now when it comes to production, I chose to install Coolify self-hosted version on a Hetzner CAX11 ARM server with 4GB of memory for a cool 3.79€ per month (need 50c for an IPV4).</p>



<p>One way to deploy a monorepo is to build your own docker-compose.yml but I wasn&#8217;t really confident with my skills there. I&#8217;d much rather let nixpacks do the hard work for me. Luckily, it&#8217;s possible to do it with minimal setup, albeit not always obvious in the documentation.</p>



<p>The trick is to create two resources, one for the backend and one for the frontend, both from the same Git repo. Use <code>Nixpacks</code> as a build pack and use the <strong>Base Directory</strong> option to tell it to base itself only on the content of one of the folder from your repo:</p>



<figure class="wp-block-image size-large"><a href="/uploads/2024/10/SCR-20241011-nnah.png"><img loading="lazy" decoding="async" width="1024" height="133" src="/uploads/2024/10/SCR-20241011-nnah-1024x133.png" alt="" class="wp-image-1450" srcset="/uploads/2024/10/SCR-20241011-nnah-1024x133.png 1024w, /uploads/2024/10/SCR-20241011-nnah-300x39.png 300w, /uploads/2024/10/SCR-20241011-nnah-768x100.png 768w, /uploads/2024/10/SCR-20241011-nnah-1536x199.png 1536w, /uploads/2024/10/SCR-20241011-nnah-2048x266.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Then set the <strong>Watch Paths</strong> option with <code>backend/**</code> or <code>frontend/**</code> (no slash prefix, it&#8217;s important) so that each resource redeploys only when there are changes in its own source folder.</p>



<h2 class="wp-block-heading">Other tips I wish I&#8217;d knew</h2>



<p>I no particular order:</p>



<ul class="wp-block-list">
<li>Use <a href="https://github.com/evansd/whitenoise" title="">whitenoise</a> to handle static files in Django if you&#8217;re going to use the admin dashboard</li>



<li>Setup <a href="https://github.com/adamchainz/django-cors-headers" title="">django-cors-headers</a> if you run your API on a sub-domain</li>



<li><code>OpenAPIConfig.BASE = process.env.NEXT_PUBLIC_API_BASE_URL ?? "";</code> in your <code>QueryClientProvider</code> file to set your API URL to the said sub-domain</li>
</ul>



<p>Also, I really wanted to keep SQLite as my database and keep my resources usage low, but Coolify has a one click solution to backup Postgres and I didn&#8217;t want to spend too much time finding out how to make my own backup system.</p>



<figure class="wp-block-embed aligncenter is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="500" data-dnt="true"><p lang="en" dir="ltr">If your site has a favicon when you launch, you launched too late</p>&mdash; Marc Köhlbrugge (@marckohlbrugge) <a href="https://twitter.com/marckohlbrugge/status/1629810355781369859?ref_src=twsrc%5Etfw">February 26, 2023</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>I&#8217;m already way past that level of detail and I haven&#8217;t shipped my site yet&#8230;</p>



<p></p><p>The post <a href="https://w00kie.com/2024/10/11/hosting-a-django-nextjs-monorepo-webapp-on-coolify/">Hosting a Django/NextJS monorepo webapp on Coolify</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/10/11/hosting-a-django-nextjs-monorepo-webapp-on-coolify/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1445</post-id>	</item>
		<item>
		<title>Debunking Japanese dual-nationality myths with code</title>
		<link>https://w00kie.com/2024/08/03/debunking-japanese-dual-nationality-myths-with-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=debunking-japanese-dual-nationality-myths-with-code</link>
					<comments>https://w00kie.com/2024/08/03/debunking-japanese-dual-nationality-myths-with-code/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Sat, 03 Aug 2024 04:02:21 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1433</guid>

					<description><![CDATA[<p>Every single post on Japan-related subreddits that mentions someone is binational will have a bunch of commenters jump in to say it&#8217;s illegal, OP needs to hide it or they will be made to renounce as soon as they turn 20. While this is true for people who naturalized to a foreign nationality, it&#8217;s patently [&#8230;]</p>
<p>The post <a href="https://w00kie.com/2024/08/03/debunking-japanese-dual-nationality-myths-with-code/">Debunking Japanese dual-nationality myths with code</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Every single post on Japan-related subreddits that mentions someone is binational will have a bunch of commenters jump in to say it&#8217;s illegal, OP needs to hide it or they will be made to renounce as soon as they turn 20. While this is true for people who naturalized to a foreign nationality, it&#8217;s patently false <strong>for dual-citizens by birth</strong>.</p>



<p>Bi-nationals by birth must select one of the nationalities upon reaching 20, but if they select Japan, there is no requirement to renounce the other citizenship unless they assume public office.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Article 16(1)A Japanese citizen who makes the selection declaration <strong>must endeavor to renounce</strong> their foreign nationality.</p>



<p>(2)In cases where a Japanese citizen having made the selection declaration and not having lost foreign nationality assumes the post of a public employee (with the exception of a post that may be assumed by a person not having the nationality of that country) at their own discretion, the Minister of Justice may pronounce a judgment of loss of Japanese nationality if it is found that the assumption of the post is markedly contrary to the purport of the selection of Japanese nationality.</p>
<cite><a href="https://www.japaneselawtranslation.go.jp/en/laws/view/3784/en#je_at16">Source</a></cite></blockquote>



<p class="has-text-align-center"><em>&#8220;must endeavor to renounce&#8221; is very different from &#8220;must renounce&#8221; and there are no provisions for failing to renounce outside of the public office case.</em></p>



<p>When you point this out to the posters, they will invariably bring up the case of Naomi Osaka who very publicly chose her Japanese nationality to participate under the 日の丸 flag at the Tokyo Olympics. Many sports publications articles claim she thus renounced her US citizenship but there has never been any actual announcement directly from her to that purpose.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Okay, so where does the coding come up you might ask? Well it was pointed out to me that US citizenship renouncement is a heavy process. There are many forms to fill and hefty fees to pay. Most importantly, all renouncements are published in the <a href="https://www.federalregister.gov">Federal Register</a> under the title <em>Quarterly Publication of Individuals, Who Have Chosen To Expatriate</em> (<a href="https://www.federalregister.gov/documents/2024/08/01/2024-16993/quarterly-publication-of-individuals-who-have-chosen-to-expatriate">see an example here</a>). So let&#8217;s see if we can find Naomi in these publications.</p>



<p>The Federal Register has a <a href="https://www.federalregister.gov/reader-aids/developer-resources/rest-api">very good API</a> available without any registration required, so there&#8217;s no need to fiddle with web scraping. Our python script is very simple:</p>



<pre class="wp-block-code"><code lang="python" class="language-python">import requests

url = "https://www.federalregister.gov/api/v1/documents.json"

querystring = {
    "fields[]": ["title", "raw_text_url", "document_number"],
    "conditions[type][]": "NOTICE",
    "per_page": "500",
    "conditions[term]": "Quarterly Publication of Individuals, Who Have Chosen To Expatriate",
}

response = requests.request("GET", url, params=querystring)

for item in response.json()["results"]:
    publication = requests.get(item["raw_text_url"])

    try:
        publication.raise_for_status()
    except requests.exceptions.HTTPError as e:
        print(f"Error downloading {item['document_number']}: {e}")
        continue

    # Save the publication text to a file
    with open(f"data/{item['document_number']}.txt", "w") as f:
        f.write(publication.text)
        print(f"Downloaded {item['document_number']}")
</code></pre>



<p>Running this will download a text file version of all matching publications from 1997 to today in the <code>/data </code>folder. Now all we need to do is to recursively search for OSAKA in the downloaded files with <code>grep -ri OSAKA data/</code></p>



<p>Unsurprisingly, this does not bring any results, nor with her father&#8217;s name LEONARD. Therefore, unless there is a way for celebrities to opt out of having their name published in the government gazette, she has not renounces her US citizenship, despite her very high profile, because she does not have to.</p>



<p>Hang around for the next chapter of this exploration where I will use ChatGPT to see if we can extract some interesting info from this data.</p><p>The post <a href="https://w00kie.com/2024/08/03/debunking-japanese-dual-nationality-myths-with-code/">Debunking Japanese dual-nationality myths with code</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/08/03/debunking-japanese-dual-nationality-myths-with-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1433</post-id>	</item>
		<item>
		<title>Zip R2 Objects in Memory with Cloudflare Workers</title>
		<link>https://w00kie.com/2024/07/13/zip-r2-objects-in-memory-with-cloudflare-workers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zip-r2-objects-in-memory-with-cloudflare-workers</link>
					<comments>https://w00kie.com/2024/07/13/zip-r2-objects-in-memory-with-cloudflare-workers/#comments</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Sat, 13 Jul 2024 10:49:32 +0000</pubDate>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[coding]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1372</guid>

					<description><![CDATA[<p>How to serve a list of files stored in R2 as a Zip file through Cloudflare Workers all in memory.</p>
<p>The post <a href="https://w00kie.com/2024/07/13/zip-r2-objects-in-memory-with-cloudflare-workers/">Zip R2 Objects in Memory with Cloudflare Workers</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I have a list of files stored in R2 and I want to serve them bundled as a Zip file to my user, but I want to do this through Cloudflare Workers and all in memory so it never hits even temporary storage.</p>



<p>It seems like a super basic thing you&#8217;d want to do with Cloudflare Workers when you store files in R2, but I&#8217;ve googled far and wide and couldn&#8217;t find an example of this anywhere.</p>



<p>So here&#8217;s my take on this, after much trial and error:</p>



<pre title="index.ts" class="wp-block-code"><code lang="typescript" class="language-typescript">import { z } from 'zod';
import { ZipWriter, BlobReader, configure } from '@zip.js/zip.js';

// Without this, we get uncaught error due to Workers runtime bug
// See: https://github.com/gildas-lormeau/zip.js/discussions/514
configure({
	useCompressionStream: false,
});

// Payload schema that lists the files to be bundled, their filenames and the archive filename
const schema = z.object({
	archive_filename: z.string().endsWith('.zip'),
	files: z.array(
		z.object({
			r2key: z.string(),
			filename: z.string(),
		})
	),
});

export default {
	async fetch(request, env, ctx): Promise&lt;Response&gt; {
		const body = await request.json();

		const payload = schema.safeParse(body);
		if (!payload.success) {
			return new Response(JSON.stringify({ status: 'failed', error: payload.error }), {
				status: 409,
				headers: { 'Content-Type': 'application/json' },
			});
		}

		let { readable, writable } = new IdentityTransformStream();

		// Create a ZIP archive stream
		const archive = new ZipWriter(writable);

		// Store all the promises to catch any errors all together later
		let promises: Promise&lt;any&gt;[] = [];

		for (const somefile of payload.data.files) {
			const { r2key, filename } = somefile;

			// Fetch the file from the R2 bucket
			const fileContent = await env.STORAGE_BUCKET.get(r2key);
			if (!fileContent) {
				return new Response(`Object not found: ${r2key}`, { status: 404 });
			}

			// Add the file to the ZIP archive
			promises.push(archive.add(filename, new BlobReader(await fileContent.blob())));
		}

		promises.push(archive.close());

		Promise.all(promises).catch((err) =&gt; {
			console.log(err);
		});

		return new Response(readable, {
			headers: {
				'Content-Type': 'application/zip',
				'Content-Disposition': `attachment; filename="${payload.data.archive_filename}"`,
			},
		});
	},
} satisfies ExportedHandler&lt;Env&gt;;</code></pre>



<p>You can just POST to it a JSON object with the output filename for the zip file and a list of R2 object keys with a filename to set for each.</p>



<p>Don&#8217;t forget to set your bindings in the <code>wrangler.toml</code>.</p><p>The post <a href="https://w00kie.com/2024/07/13/zip-r2-objects-in-memory-with-cloudflare-workers/">Zip R2 Objects in Memory with Cloudflare Workers</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/07/13/zip-r2-objects-in-memory-with-cloudflare-workers/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1372</post-id>	</item>
		<item>
		<title>Simple Japanese Inheritance Calculator</title>
		<link>https://w00kie.com/2024/06/08/simple-japanese-inheritance-calculator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-japanese-inheritance-calculator</link>
					<comments>https://w00kie.com/2024/06/08/simple-japanese-inheritance-calculator/#comments</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Sat, 08 Jun 2024 13:25:41 +0000</pubDate>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[japan]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1367</guid>

					<description><![CDATA[<p>I made a thing again! If you’re like me, a foreigner in your 40s living in Japan, the thought of dealing with inheritance taxes for your parents back home can be daunting. Understanding how these taxes might be applied is essential. To help with this, I created an app: Japanese Inheritance Tax Calculator. Here are [&#8230;]</p>
<p>The post <a href="https://w00kie.com/2024/06/08/simple-japanese-inheritance-calculator/">Simple Japanese Inheritance Calculator</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>I made a thing again!</p>



<figure class="wp-block-image size-large"><a href="https://w00kie.github.io/jpn-inheritance-tax/"><img loading="lazy" decoding="async" width="1024" height="570" src="/uploads/2024/06/SCR-20240608-jycf-1024x570.png" alt="" class="wp-image-1368" srcset="/uploads/2024/06/SCR-20240608-jycf-1024x570.png 1024w, /uploads/2024/06/SCR-20240608-jycf-300x167.png 300w, /uploads/2024/06/SCR-20240608-jycf-768x428.png 768w, /uploads/2024/06/SCR-20240608-jycf-1536x855.png 1536w, /uploads/2024/06/SCR-20240608-jycf-2048x1140.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>If you’re like me, a foreigner in your 40s living in Japan, the thought of dealing with inheritance taxes for your parents back home can be daunting. Understanding how these taxes might be applied is essential.</p>



<p>To help with this, I created an app: <a href="https://w00kie.github.io/jpn-inheritance-tax/">Japanese Inheritance Tax Calculator</a>.</p>



<p>Here are a few insights:</p>



<ul class="wp-block-list">
<li>It’s not as straightforward as you might think.</li>



<li>The calculation method actually offers some advantages for foreigners.</li>



<li>The base deduction is quite high, meaning many people won’t owe taxes on even fairly sizable inheritances.</li>
</ul>



<p>Bear in mind that this is a super simplified calculator: it only works in the case of a standard family unit where a parent of the user passes away and the user is the only heir living in Japan. But that&#8217;s fits me and a lot of my friends in Japan, so #scratchyourownitch it is.</p>



<p>It&#8217;s a tiny single page app built on <a href="https://vitejs.dev">Vite + React</a> with <a href="https://ui.shadcn.com">shadcn/ui</a> components. You can check out the code in the <a href="https://github.com/w00kie/jpn-inheritance-tax/">GitHub repo</a>.</p><p>The post <a href="https://w00kie.com/2024/06/08/simple-japanese-inheritance-calculator/">Simple Japanese Inheritance Calculator</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2024/06/08/simple-japanese-inheritance-calculator/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1367</post-id>	</item>
		<item>
		<title>Cost Breakdown of a Birth in Tokyo</title>
		<link>https://w00kie.com/2023/02/13/cost-breakdown-of-a-birth-in-tokyo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cost-breakdown-of-a-birth-in-tokyo</link>
					<comments>https://w00kie.com/2023/02/13/cost-breakdown-of-a-birth-in-tokyo/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Mon, 13 Feb 2023 07:01:24 +0000</pubDate>
				<category><![CDATA[japan]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[hospital]]></category>
		<category><![CDATA[money]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1347</guid>

					<description><![CDATA[<p>In June 2021, my wife and I were extremely happy to welcome our first son into the world. I know many people express curiousness towards the costs involved with delivery in Japan as the system of it not being covered by health insurance but also somewhat covered by various subventions from the national and local [&#8230;]</p>
<p>The post <a href="https://w00kie.com/2023/02/13/cost-breakdown-of-a-birth-in-tokyo/">Cost Breakdown of a Birth in Tokyo</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>In June 2021, my wife and I were extremely happy to welcome our first son into the world. I know many people express curiousness towards the costs involved with delivery in Japan as the system of it not being covered by health insurance but also somewhat covered by various subventions from the national and local governments makes it all pretty confusing. So here&#8217;s a full breakdown of what it ended up costing us.</p>



<p>tldr; I thought I would be claiming a massive 医療費控除 but after tabulating all of my receipts, it seems I severely underestimated how much cash-back I got from various institutions. I ended up in the black even though my wife gave birth with an epidural at the top hospital in Tokyo.</p>



<h2 class="wp-block-heading">Delivery costs</h2>



<p>Wife spent a month in Minato-ku&#8217;s Aiiku hospital (she was at risk of going in early labor) from week 31 to 34. She was in a private room per doctor&#8217;s order so no extra charge there. Then she gave birth with an epidural and stayed for the standard 5 days after delivery in a private room at 30,000¥ per night.</p>



<p><strong>Total cost:</strong>&nbsp;1,317,059¥</p>



<p>Then we got all of the following cash back:</p>



<ul class="wp-block-list">
<li>Basic childbirth coverage: 420,000¥</li>



<li>Minato-ku resident childbirth coverage: 280,000¥</li>



<li>Company&#8217;s insurance childbirth coverage: 30,000¥</li>



<li>Company&#8217;s congratulations bonus: 10,000¥ (fucking stingy bastards)</li>



<li>Company&#8217;s insurance extra payments (not sure where this is coming from, I did claim 高額療養費制度): 282,100¥</li>



<li>Wife&#8217;s life insurance coverage (Nissay): 240,019¥</li>



<li>Wife&#8217;s women&#8217;s health insurance coverage (Coop Kyosai &#8211; subscribed after we confirmed pregnancy just in case): 228,000¥</li>
</ul>



<p><strong>Total cash-back:</strong>&nbsp;1,490,119¥</p>



<p>Baby stayed in NICU for 2 weeks but that was almost free with extra coverage from Minato-ku. I think we only ended up paying the cost of diapers.</p>



<p><strong>Grand total:</strong> 173,060¥ profit</p>



<p>But this profit was offset by other costs accrued during pregnancy as detailed in the next paragraph.</p>



<h2 class="wp-block-heading">Other costs</h2>



<p>The many many pregnancy checkups at Aiiku Clinic, even with the city office coupons, ended up costing quite a bit: I counted 65,000¥ total and it&#8217;s missing 2 or 3 visits that happened in 2020 calendar year for which I don&#8217;t have the numbers unless I fish out last year&#8217;s tax return forms.</p>



<p>We also forked out for the NIPT test which is not covered by insurance nor by 医療費控除 and cost about 180,000¥.</p><p>The post <a href="https://w00kie.com/2023/02/13/cost-breakdown-of-a-birth-in-tokyo/">Cost Breakdown of a Birth in Tokyo</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2023/02/13/cost-breakdown-of-a-birth-in-tokyo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1347</post-id>	</item>
		<item>
		<title>Starting a business – part 1</title>
		<link>https://w00kie.com/2018/12/18/starting-a-business-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=starting-a-business-part-1</link>
					<comments>https://w00kie.com/2018/12/18/starting-a-business-part-1/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Tue, 18 Dec 2018 14:08:42 +0000</pubDate>
				<category><![CDATA[Me, myself and I]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[shopify]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1247</guid>

					<description><![CDATA[<p>Since the start of the year Fumina and I have been playing with the idea of starting an outbound online shop—selling Japanese products to customers abroad. Last month we finally launched Chuchulu and it&#8217;s proven to be quite an interesting adventure. Finding a product The first step was to find a product category: It had [&#8230;]</p>
<p>The post <a href="https://w00kie.com/2018/12/18/starting-a-business-part-1/">Starting a business – part 1</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Since the start of the year Fumina and I have been playing with the idea of starting an outbound online shop—selling Japanese products to customers abroad. Last month we finally launched <a href="https://chuchu.lu">Chuchulu</a> and it&#8217;s proven to be quite an interesting adventure.</p>



<div class="wp-block-cover has-background-dim is-layout-flow wp-block-cover-is-layout-flow" style="background-image:url(/uploads/2018/12/giftbox.jpg)"><p class="wp-block-cover-text"><a href="https://chuchu.lu">Chuchulu</a><br />Fashion accessories made in Japan</p></div>



<h3 class="wp-block-heading">Finding a product</h3>



<p>The first step was to find a product category:</p>



<ul class="wp-block-list"><li>It had to be something we like. We&#8217;re not natural born salesmen so there&#8217;s no way we could push something we don&#8217;t genuinely like ourselves.</li><li>It had be interesting to people abroad (obviously) and not largely available outside of Japan. With shipping costs and potential tariffs, it would be difficult for us to beat local shops competition.</li><li>It had to be easily shippable. Heavy bulky items would push up shipping cost and make us less attractive to foreign customers.</li><li>Unit costs had to be on the lower side, at least at the beginning. We did not want to invest massively into a starting stock in case things just don&#8217;t work out.</li></ul>



<p>Ultimately, we came to choose fashion accessories (earrings, bracelets and the like) with typical Japanese designs as our first products.</p>



<p>Fumina knew a good craftsman&#8217;s workshop specialized in traditional prayer beads who could work with her on order made bracelets based on her designs. That was <a href="https://chuchu.lu/collections/special-edition">our first product</a>.</p>



<figure class="wp-block-image"><a href="https://chuchu.lu/collections/special-edition"><img loading="lazy" decoding="async" width="1024" height="1024" src="/uploads/2018/12/bracelets-layout-1024x1024.jpg" alt="" class="wp-image-1265" srcset="/uploads/2018/12/bracelets-layout-1024x1024.jpg 1024w, /uploads/2018/12/bracelets-layout-150x150.jpg 150w, /uploads/2018/12/bracelets-layout-300x300.jpg 300w, /uploads/2018/12/bracelets-layout-768x768.jpg 768w, /uploads/2018/12/bracelets-layout.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Agates in various colors and Black Onyx, made in Kyoto.</figcaption></figure>



<p>We also started visiting industry events to meet with suppliers. That&#8217;s how we found our second product line: <a href="https://chuchu.lu/collections/tile-of-mino">Minoyaki tile earrings</a> from Tajimi in Gifu prefecture. We also went to <a href="https://chuchu.lu/blogs/infos/workshop-visit-in-tajimi">visit the workshop where these are made</a>.</p>



<figure class="wp-block-image"><a href="https://chuchu.lu/collections/tile-of-mino"><img loading="lazy" decoding="async" width="1024" height="1024" src="/uploads/2018/12/tile-layout-1024x1024.jpg" alt="" class="wp-image-1267" srcset="/uploads/2018/12/tile-layout-1024x1024.jpg 1024w, /uploads/2018/12/tile-layout-150x150.jpg 150w, /uploads/2018/12/tile-layout-300x300.jpg 300w, /uploads/2018/12/tile-layout-768x768.jpg 768w, /uploads/2018/12/tile-layout.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption>Various colors of tile earrings made in Tajimi, Gifu prefecture.</figcaption></figure>



<p>The next steps of this adventure will be coming in future posts&#8230;</p><p>The post <a href="https://w00kie.com/2018/12/18/starting-a-business-part-1/">Starting a business – part 1</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2018/12/18/starting-a-business-part-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1247</post-id>	</item>
		<item>
		<title>REAL TALK 🇯🇵</title>
		<link>https://w00kie.com/2018/12/14/real-talk-%f0%9f%87%af%f0%9f%87%b5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=real-talk-%25f0%259f%2587%25af%25f0%259f%2587%25b5</link>
					<comments>https://w00kie.com/2018/12/14/real-talk-%f0%9f%87%af%f0%9f%87%b5/#respond</comments>
		
		<dc:creator><![CDATA[w00kie]]></dc:creator>
		<pubDate>Thu, 13 Dec 2018 15:18:08 +0000</pubDate>
				<category><![CDATA[japan]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Work stuff]]></category>
		<category><![CDATA[work]]></category>
		<guid isPermaLink="false">https://w00kie.com/?p=1258</guid>

					<description><![CDATA[<p>I appreciate the transparency effort of giving average monthly overtime at your company in a Job Description for recruitment. But how can you write down “40 to 70 hours” and not think “we have a problem” ?</p>
<p>The post <a href="https://w00kie.com/2018/12/14/real-talk-%f0%9f%87%af%f0%9f%87%b5/">REAL TALK 🇯🇵</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></description>
										<content:encoded><![CDATA[<p> I appreciate the transparency effort of giving average monthly overtime at your company in a Job Description for recruitment.</p>



<p>But how can you write down <em>“40 to 70 hours”</em> and not think <em>“we have a problem”</em> ?<br /></p><p>The post <a href="https://w00kie.com/2018/12/14/real-talk-%f0%9f%87%af%f0%9f%87%b5/">REAL TALK 🇯🇵</a> first appeared on <a href="https://w00kie.com">w00kie's ramblings</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://w00kie.com/2018/12/14/real-talk-%f0%9f%87%af%f0%9f%87%b5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1258</post-id>	</item>
	</channel>
</rss>
