Sign in

Mike

@mikenikles.com
400 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 · 7h
This is going to be the first public presentation about civic-lens.ca. Why? How? What's next? • Tens of thousands of PDFs processed • Hundreds of multi-hour videos transcribed • A handful of paying companies and dozens of individuals who set up email alerts It'll be recorded, but join live for Q&A
020
Mike @mikenikles.com · 29/09/2026
Has anyone used @tauri.app to build Android and iOS native apps? Any examples I could install and look at? The impression I get is people have mixed experiences and support for native apps is meh at best. Maybe that's outdated info though 🤔?!
010
Mike @mikenikles.com · 28/09/2026
@seaquel.app is about to become a library with various interfaces. The desktop app is what people already use. A CLI, MCP server and TUI exist locally. The beauty of a small core that orchestrates plugins 🥰. Here's an interactive TUI to explore. claude.ai/artifact/Ndb...
claude.ai
Claude Artifact
Try out Artifacts created by Claude users
150
Mike @mikenikles.com · 28/09/2026
Electron is for desktop apps what React is for web apps.
010
Mike @mikenikles.com · 28/09/2026
Try Codex, they say. It's fun, they say.
010
Mike @mikenikles.com · 27/09/2026
This looks fun for onboarding tours or in-app hints when a user presses the ⌘ key. neat-annotations.syabro.com
neat-annotations.syabro.com
neat-annotations — neat hand-drawn CSS annotations
Arrows and handwritten labels for your website. Pure CSS, no JavaScript.
0337
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.
121
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
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 · 20/09/2026
This is huge, IMHO! Wasm components will help Wasm reach more developers. I used it extensively server-side a couple of months ago for a n8n-style platform that executed code on devices, in the cloud, or self-hosted. All sorts of programming languages compiled to Wasm components.
130
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 · 19/09/2026
If you like @raycast.com, but prefer an open source version, there's tinycast.dev 🥰.
tinycast.dev
Tinycast — everything on your Mac, one keystroke away
Free and open source, fully native macOS launcher: app search, clipboard manager, snippets, custom commands, window management, BYOK AI and Raycast extensions.
3331
Mike @mikenikles.com · 16/09/2026
Learn @anthropic.com's Claude Code in a day 📚. mikenikles.com/blog/learn-c...
mikenikles.com
Learn Claude Code in a day - mootoday.com
Every major Claude Code concept, grouped by topic and linked to the ideas it depends on. Work through six study blocks, mark concepts as learned, and track your progress.
110
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 · 15/09/2026
Is anyone in Toronto on October 6 and wants to meet up? I'll present civic-lens.ca at the Civic Tech Toronto meetup and have the entire day available.
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
000
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 · 14/09/2026
What's being discussed in Canadian municipalities TODAY? civic-lens.ca/today
civic-lens.ca
What councils talked about · Civic Lens
000
Mike @mikenikles.com · 13/09/2026
FYI, Ubuntu has worked just fine for years and continues to do so today.
3121
Mike @mikenikles.com · 13/09/2026
Privately, what I need next: An updated Claude model that stops telling me what it needs next, privately 😂.
000
Mike @mikenikles.com · 11/09/2026
It took @vercel.com 4.5 months to send me my personal information they store. Now let's see how long it takes them to delete it. Then, I'll request what they have stored again to see if it's nothing.
001
Mike @mikenikles.com · 09/09/2026
I wonder what cities pay to host their public documents... 🤔 Oh wait, I built a platform to answer exactly that question 💡! civic-lens.ca/finances/sup... At least that's what BC cities pay for one provider, there are a handful of others. Perfect info to start sales conversations with cities!
civic-lens.ca
ESCRIBE SOFTWARE LTD. — Suppliers & grant recipients · Civic Lens
ESCRIBE SOFTWARE LTD. — payments received from and contracts awarded by Canadian municipalities, by city and year, from public financial filings and tender records.
010
Mike @mikenikles.com · 09/09/2026
Who has experience building a non-social app on the @atproto.com? I'd love to have a 15 minute chat to discuss the long-term goals of civic-lens.ca (use a Canada or US VPN to access). I've ingested 50,000+ PDFs in the last two months and all I can think of is "there must be an easier way"...
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
100
Mike @mikenikles.com · 08/09/2026
The top three terms people on civic-lens.ca search for are: 1️⃣ Child care 2️⃣ Short-term rentals (that's one of the examples, so a bit unfair to be #2) 3️⃣ Construction Also in the top 10 are "pickleball" and "bike lanes". Do with that information what you wish 😊.
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
111
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
The amount of information a city council meeting agenda PDF contains is incredible. Sure, some are 800+ pages long, but machines are pretty good at extracting the important data. Well no, they're actually not, at least not without tweaking. Development applications coming to civic-lens.ca soon!
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
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 · 03/09/2026
ᓄᓇᓕᐸᐅᔭᒃᑯᑦ ᑲᑎᒪᔨᖏᑕ ᑲᑎᒪᓂᖓᑦ #10 I'll never be able to read or write Inuktitut, but it surely is a fascinating language. Here's an agenda for a recent council meeting in Iqaluit: iqaluit.ca/sites/defaul... Luckily, Iqaluit also publishes English documents 😅.
iqaluit.ca
010
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 · 31/08/2026
I'm adding custom analytics to civic-lens.ca so I can group and filter by things I care about. My laptop started to get warm and I wondered what causes the CPU spike... Claude was running a performance test on the beacon API endpoint and simulated 1.35M visits. Over-optimization much 😂?
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
000
Mike @mikenikles.com · 31/08/2026
Things that happen when you talk about your projects publicly... I had six municipalities reach out to me to ask if they could use civic-lens.ca to publish their agendas, minutes, and videos 😊. Instead of tracing the municipal record to source, what if Civic Lens IS the municipal record source?!
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
220
Mike @mikenikles.com · 30/08/2026
I've seen the same for civic-lens.ca. Exact same progression in disguising who bots are. Now they use residential IPs, a handful of requests, never show up again. I had all countries but Canada blocked for a week, it was wonderful and I'll likely do it again. people.kernel.org/monsieuricon...
people.kernel.org
Creepy crawlies
You've probably heard me complain about the "AI crawlers" before, but now I actually have some hard numbers I can put up to show their im...
000
Mike @mikenikles.com · 28/08/2026
I went from building a SQL client to helping companies onboard AI, where I learned about a pain land use lawyers, construction companies, realtors, and others have: get notified when a city discusses a topic of interest. Introducing civic-lens.ca. It covers 75% of the Canadian population!
civic-lens.ca
Civic Lens — Canada's municipal record, traced to source
Council meetings, video transcripts, recorded votes, bylaws, councillor pay and supplier payments from Canadian municipalities — each traced to source.
1123
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 · 22/08/2026
Earlier this week, I fed two months of Google Search Console data to a LLM. You should do it too, it's insightful! I made some recommended changes and in the few days since, saw a 4x increase in people taking action. From ~8 a day to ~35.
040
Mike @mikenikles.com · 20/08/2026
Ask Gemini to transcribe some audio and return structured JSON. Works fine, until your output reaches between 10-11k characters. That's when Gemini out of nowhere returns JSON like …"text":"…"}, {" 471.5,"end":478.5,"speaker":… 8h of 10 minute chunks is apparently too much for Gemini to handle 😅
000
Reposted by Mike
Dave Rupert @davatron5000.bsky.social · 19/08/2026
🚀 I made a smol ~2kb syntax highlighter that uses the CSS `::highlight()` API. davatron5000.github.io/microlighter/
davatron5000.github.io
MicroLighter - A zero-dep syntax highlighter
619438
Mike @mikenikles.com · 19/08/2026
If you don't do early morning runs, I recommend you start 🏃. I transcribe hundreds of hours of video content per day via Gemini Batch. It costs ~$15 per day. On my run this morning, it occurred to me... chunk the audio, drop silent chunks, submit the rest, stitch things back together. 🤑
000
Mike @mikenikles.com · 17/08/2026
Years ago, there was aroundtheworld.solarimpulse.com. Today, we're another step closer to sustainable air travel. Slow, steady progress. I may get a private pilot license after all at some point 😅.
aroundtheworld.solarimpulse.com
Solar Impulse - Around the world to promote clean technologies
2 Pioneers flying around the world in a solar airplane to promote clean technologies
001
Mike @mikenikles.com · 17/08/2026
"It's an Angular SPA over a clean JSON API. Everything we need is reachable." The best research outcome a scraping project can hope for 😂.
010
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 · 17/08/2026
Have you ever attended/watched a city council meeting or read its minutes? In case you didn't know, this is a tiny group of people who decides what life is like in your neighborhood. If you have experience, how was it? Did you find what you were looking for?
000
Reposted by Mike
Svelte @svelte.dev · 13/08/2026
svelte.dev/blog/sveltek...
svelte.dev
The SvelteKit 3 Release Candidate is here
We’ve cleaned out the junk drawer
010223
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 · 06/08/2026
Meta's AI also attacked another company 😂. Let me guess, early next week Meta will reveal that the AI agent used fake profiles and tried to hide its traces! Who's next to copy & paste that same news release?
040
Mike @mikenikles.com · 04/08/2026
You really don't need Next.js and its bloat, really you don't. svelte.dev/docs/svelte/... Or you know what else you can do if you're one of the "but Svelte isn't ready for production" people? developer.mozilla.org/en-US/docs/W... I've been talking to a wall about React/Next.js for 8 years 😂.
svelte.dev
svelte/reactivity/window • Svelte Docs
svelte/reactivity/window • Svelte documentation
150
Mike @mikenikles.com · 02/08/2026
LLM, "No speech in this video" I watch the video and hear speech. Me, "Hey LLM, I hear speech. Figure it out and extract the audio" LLM, "RMS: L −23.0 dBFS, R −23.0 dBFS → mono downmix −50.1 dBFS (27 dB collapse)" System, "We're good, audio extracts now" Me, ".... ok ..."
040
Mike @mikenikles.com · 30/07/2026
By far the biggest challenge in consolidating government data is different spellings for the same entity across multiple documents. Among the misspellings, the most common one is double spaces 😂.
000