Sign in

Mike

@mikenikles.com
403 followers 214 following 1.6K posts

Building civic-lens.ca Civic Lens watches council meetings, municipal records, contracts and spending, and tells you when something you care about comes up.

PostsRepliesMedia
Mike @mikenikles.com · 05/10/2026
How do you migrate a @tauri.app app's Typescript code to Rust so it can be shared with a CLI, TUI, and MCP server? Step 1: Generate 500k lines of fixtures code Step 2: Migrate & write tests Step 3: Delete 500k lines of fixtures code
A screenshot of Github's Code frequency chart. It shows hundreds of thousands of lines of code added, then removed shortly after.
140
Mike @mikenikles.com · 05/10/2026
And the seaquel.app desktop client is now refactored to use plugins as well. For people with existing @duckdb.org connections, the DuckDB plugin is downloaded automatically on app startup after the next update. For anyone adding their first DuckDB connection, a dialog confirms the plugin download.
A screenshot of the Seaquel desktop app with an open dialog that is checking
000
Mike @mikenikles.com · 04/10/2026
Someone who uses the @seaquel.app TUI for Postgres shouldn't have to download ~11mb for @duckdb.org support. DuckDB is the first plugin 🎉. Now I'm going to rip it all apart so Seaquel interfaces (desktop, CLI, TUI, web) are bare minimum, then download plugins on demand.
A screenshot of the Seaquel TUI with a dialog that tells people DuckDB support is a separate download.
020
Mike @mikenikles.com · 28/09/2026
Try Codex, they say. It's fun, they say.
010
Mike @mikenikles.com · 27/09/2026
And with data sharing turned on for that specific connection 🎉.
A screenshot of Claude Code where the user asked How many orders do we have? and Claude replied with 500 orders.
000
Mike @mikenikles.com · 27/09/2026
That's right, @seaquel.app is going to get a MCP server that respects your AI privacy settings.
A screenshot of a Claude Code conversation where Claude uses the new Seaquel MCP server to access a database, but doesn't have privileges to do so.
131
Mike @mikenikles.com · 25/09/2026
What do you think? It's v0.0.1 after a single prompt last night, this was the result when I woke up. seaquel.app
040
Mike @mikenikles.com · 24/09/2026
Write two <pre> SQL blocks and get broken vs fixed query tabs to teach people with specific bad and good examples. Here's a @postgresql.org 22012 error page with the widget in action: seaquel.app/sql-errors/p...
000
Mike @mikenikles.com · 24/09/2026
I updated seaquel.app/learn-sql/in... and built a web component that lets you run SQL queries against Postgres in the browser thanks to @pglite.dev. Someone tell W3Schools about it, their current user experience is less than ideal 😥. Blog post about the widget: seaquel.app/blog/run-sql...
A screenshot of the Seaquel powered SQL widget. It shows a select query with a results table below.A screenshot of a code snippet with the necessary code to load the SQL widget on a website. It needs a script tag with the widget's Javascript file and a <seaquel-sql> custom element.
170
Mike @mikenikles.com · 19/09/2026
At which point does the situation become possible 🤔?!
A screenshot of a localhost:5173 error that reads "An impossible situation occurred"
110
Mike @mikenikles.com · 16/09/2026
This is now a dynamic list of topics, refreshed weekly on Sunday with the latest updates from @anthropic.com's docs. Bookmark it, come back regularly and keep up to date with the latest features of Claude Code.
000
Mike @mikenikles.com · 15/09/2026
The same question, two answers. One correct, one wrong. First screenshot, AI claims it read data from the official website: wrong numbers. Second screenshot, AI read data from civic-lens.ca: correct numbers. All source badges in the first answer link to 404 Not Found city pages!
Port Coquitlam 2025 council expenses displayed in a table. Each expense value is wrong.Port Coquitlam council expenses sourced from Civic Lens, displayed in a table. All expense values are correct.
010
Mike @mikenikles.com · 14/09/2026
My take on the use of AI for Tuxedo (1.7k ⭐). AI-generated, bloated issue and PR descriptions are the second worst thing you can use AI for. The worst is personal / business communication via email. github.com/webstonehq/t...
A screenshot of the Tuxedo Readme. It reads: Use of AI (as a heading).
Go for it, except in issue and PR descriptions 🙏. If you don't take the time to write, I won't take the time to read and close the issue or PR.
031
Mike @mikenikles.com · 09/09/2026
I envy you 😊. For one, @zurichjs.com! But also... Rivella 😋.
030
Mike @mikenikles.com · 06/09/2026
Never miss a council meeting summary again thanks to civic-lens.ca 💌. Either get an email for any council meeting, or configure topics you're interested in and receive tailored content. Tired of emails? Create an account and see it all in one place.
010
Mike @mikenikles.com · 06/09/2026
Nothing to see, just a handful of AI bots casually sending tens of thousands of requests, fetching gigabytes of data from civic-lens.ca over the last 24 hours. In return, I get ~50 visitors per day.
000
Mike @mikenikles.com · 05/09/2026
It's been a good run with @anthropic.com, but "Continue" to resume a task that stopped because I ran out of credits results in 8% of my tokens used instantly. As I typed the above, it's at 12% used. Time to evaluate alternatives 👀. Codex comes to mind, what else do people use these days?
A screenshot of Claude usage on a Max (5x) plan. It shows 8% used with 4h 54min to go in the current window.
100
Mike @mikenikles.com · 02/09/2026
Look at all those people from around the world who are interested in Canadian municipal records... With that, civic-lens.ca is no longer available to anyone outside Canada and the USA*. * Why USA? I'm rebranding the project and expanding to cover the USA too.
000
Mike @mikenikles.com · 26/08/2026
Responsive charts are hard, yet you must make sure they work. Otherwise you end up with this chart on a mobile device.
A table with two columns and a row per year from 2022 to 2026. The second column shows a bar chart with $ numbers. The bar charts for 2025 and 2026 are nearly identical in length, yet their values are $3.6B in 2025 and $6.2B in 2026.
100
Mike @mikenikles.com · 23/08/2026
This is getting out of hand... A @svelte.dev web app with over 100k pages, growing at 50 - 100 new pages per day. It finally covers its own costs too, not something I can say of all my projects 😂. Not ready to link the project to myself just yet, but if I ever did, it'll be before October 17.
A screenshot of the Google Search Console "Submitted sitemaps" table. It lists a blurred Sitemap, a Type as Sitemap index, Submitted as 18 Jul 2026, Last read as 18 Aug 2026, Status as Success, Discovered pages as 101,110 and Discovered videos as 0
070
Mike @mikenikles.com · 17/08/2026
Remember to always sign up online with a + email address. Once again, Facebook leaked my email address and I'm getting spammed now. The worst part about a project where customers spend time on Facebook is the need for a Facebook account 😭.
170
Mike @mikenikles.com · 13/08/2026
Two days ago it bothered me that I hadn't configured any bot protection. So... I spent some time configuring things just in case. Two hours ago... thousands of requests started hitting and my bouncer @cloudflare.social kept them from hitting my origin server.
A screenshot of the Cloudflare web analytics dashboard that shows 5.85k visits, an increase of 20,000%
070
Mike @mikenikles.com · 08/08/2026
My "Block bots" rule hard at work 💦
A screenshot that shows 7.51k bot requests were blocked in the last 24 hours, making up 44.3% of all traffic
010
Mike @mikenikles.com · 28/07/2026
Come on Google, you can do it 😂! The reason for the not indexed pages is "Discovered – currently not indexed"... So close, yet so far.
A screenshot of two stats from the Google Search Console. It shows 65.9k pages not indexed and 17.4k indexed
110
Mike @mikenikles.com · 26/07/2026
I take it back, Cloudflare AI blocking is delayed but works well! With 75k pages publicly avaliable, plus tens of thousands of PDF documents accessible, I'm not going to pay egress fees for AI training. Goodbye 👋!
000
Mike @mikenikles.com · 26/07/2026
AI bots have arrived... Facebook AI training, Semrush, and others. Cloudflare's settings to block them has exactly 0 impact. Nothing a WAF rule can't handle.
100
Mike @mikenikles.com · 26/07/2026
When you operate at tens of thousands of PDFs, even the tiniest improvement has a big impact. Tonight's fun: OCR memory consumption improvement
020
Mike @mikenikles.com · 23/07/2026
Lunch time well spent to reduce my @railway.com memory spend 🤑. This is a job that runs whisper.cpp on hours-long meetings with many attendees. Changes: • Chunk a file and send it to whisper in windows • Clean up files loaded onto disk
020
Mike @mikenikles.com · 20/07/2026
75,884 pages indexed, without a doubt my biggest @svelte.dev web app. It's also the one that has generated the most revenue in the first four weeks since its soft-launch. I'm working with journalists to announce it. It's a slow but steadily moving process.
010
Mike @mikenikles.com · 17/07/2026
I think ti's fair to say that, yeah. I've dealt with a bit over 16k PDFs recently 😂. @kettanaito.com feel free to DM me, it's a fun world out there in PDF land 😰.
010
Mike @mikenikles.com · 08/07/2026
Detail view for parallel tasks. 🟩 is what you want to see 😂
020
Mike @mikenikles.com · 08/07/2026
Introducing Orchestrator ⚡. A single-binary workflow engine that just works™. To scale horizontally, start the binary in worker mode on as many machines as you want. Orchestrator distributes the load automatically. github.com/webstonehq/o... 👇 Orchestrator in action for a stealth project.
2152
Mike @mikenikles.com · 07/07/2026
I needed an orchestrator, like @kestra.io or windmill.dev. 4 hours later, I have my own. Windmill benchmarks coming soon™. A single binary that ships a @svelte.dev app as a single HTML file - bundleStrategy: inline. Run the same binary in worker mode to scale workflow execution horizontally 🏎️.
A screenshot of Orchestrator, a workflow engine with a web UI to author workflows in yaml or in a WYSIWYG editor.
3131
Mike @mikenikles.com · 02/07/2026
You had me at <see screenshot>. I'll check this out tonight, via your referral link!
110
Mike @mikenikles.com · 23/06/2026
It's Windows defrag all over again 😂.
A screenshot of claude CLI's /compact command, showing Compacting conversation... with a progress bar below.
020
Mike @mikenikles.com · 19/06/2026
It doesn't stop 😂. And I also found where most of the people come from: YouTube! www.youtube.com/watch?v=mT1t...
020
Mike @mikenikles.com · 18/06/2026
Here's a design suggestion 😎
150
Mike @mikenikles.com · 16/06/2026
@zed.dev has been awesome for the last 12+ months for me. I initially used the AI features, but recently turned it all off in favour of harnesses I access through the CLI.
A screenshot of the Zed settings that shows "Disable AI" turned on.
100
Mike @mikenikles.com · 11/06/2026
500+ ⭐ Interesting to see todo.txt has such a large community. github.com/webstonehq/t...
000
Mike @mikenikles.com · 06/06/2026
I've been touching water in underground lakes, so pardon me for asking... Do we still do AI? Has the bubble burst yet?
120
Mike @mikenikles.com · 04/06/2026
Looks like tuxedo was mentioned somewhere 😱. I noticed a few feature requests and PRs, then saw the star count and downloads jumped quite a bit. github.com/webstonehq/t...
120
Mike @mikenikles.com · 04/06/2026
@dagster.io could you check your logs please 😅? I can't sign up at dagster.plus/signup.
000
Mike @mikenikles.com · 02/06/2026
Last one for today 🙂. A look towards the Swiss Alps.
020
Mike @mikenikles.com · 02/06/2026
Lovely
020
Mike @mikenikles.com · 02/06/2026
I've seen enough, taking the cable car for the upper part of the mountain 🥵. My brother is on track to hike the entire mountain in under 2h... The difference between someone who lives and exercises in Switzerland vs someone who lives in North America 😂
040
Mike @mikenikles.com · 01/06/2026
Love the idea of using an ATV haha. Photo of the mountain attached, ATV not possible 😞. We're going to hike it on the left side, bottom to top.
110
Mike @mikenikles.com · 29/05/2026
For me, it's an early morning exercise, for the tourists likely the highlight of their day 😂. For me, it's time for water and some snacks. For the tourists it's photo time. CHF 5 to enter the pier. Smart move, city council! #iykyk #crashlandingonyou
010
Mike @mikenikles.com · 22/05/2026
I'm experimenting with codeberg.org as an alternative to @github.com. Initially, it looked like there was no CI environment nor anything for releases... Boy was I wrong! Both can be enabled in settings. Migrating a basic CI workflow takes 5 minutes (diff attached). Next up: Releases
240
Mike @mikenikles.com · 15/05/2026
I have global AI privacy settings and this UI for per-connection overrides. Click a toggle and the "Use global default" unchecks automatically.
100
Mike @mikenikles.com · 14/05/2026
Here's another AI workaround, fairly recent.
2270