You are browsing as a guest. Sign up (or log in) to start making projects!

Dragon

@Dragon

Joined June 2nd, 2026

  • 45Devlogs
  • 5Projects
  • 2Ships
  • 30Votes
Hey!, I am Dragon. Im another fellow from Sri Lanka who makes stuff.
Open comments for this post

1h 44m 38s logged

Devlog 11

At first I was typing coordinates, which was annoying and easy to get wrong. A click-to-place workflow felt much more natural.


What I did

  • Added a full-screen crosshair positioning window.
  • Captured the next left-click as the drawing’s top-left origin.
  • Added Escape cancellation before drawing begins.

Current result

  • The user can point at a canvas and place the drawing directly.
0
0
21
Open comments for this post

1h 36m 21s logged

Devlog 10

I really did not want a bug to leave the mouse holding down forever. This session was mostly about making failure less stressful.


What I did

  • Added stop, pause, and resume state handling.
  • Ensured the mouse button is released on completion, stop, or error.
  • Enabled PyAutoGUI’s corner fail-safe.
  • Started wiring an Esc-key emergency stop.

Current result

  • The bot has multiple ways to stop safely.
  • Pausing mid-stroke no longer risks a stuck drag.
0
0
15
Open comments for this post

3h 46m 42s logged

Devlog 08 and 09


Devlog 08

This was the slightly scary part: allowing the project to control the real cursor. I tested on a safe blank drawing area, with my hand ready to stop it.

What I did

  • Added PyAutoGUI mouse movement and mouse-down/mouse-up actions.
  • Translated local canvas points into screen coordinates.
  • Added adjustable movement, click, and gap delays.

Current result

  • A simple path can be drawn using real mouse input.
  • Timing is configurable instead of hard-coded.

Devlog 09

I clicked draw and the whole window froze while the mouse worked. It wasn’t technically broken, but it felt broken. That sent me down the threading rabbit hole.

What I did

  • Moved drawing work to a background thread.
  • Added start, progress, and finished callbacks.
  • Kept GUI actions on the interface side of the program.

Current result

  • The interface stays responsive while automation is running.
2
0
77
Open comments for this post

1h 46m 10s logged

Devlog 07

My first path order was basically random, and the cursor would bounce around like it had too much coffee. I made a simple nearest-neighbour ordering system to calm it down.


What I did

  • Measured distance between path ends.
  • Ordered contours by the closest next path.
  • Reversed paths when approaching their end was shorter.

Current result

  • The cursor should spend less time travelling between separate strokes.
  • Line drawings feel more intentional.
0
0
114
Open comments for this post

1h 53m 36s logged

Devlog 06

Edges are still just pixels, though. I had to figure out how to make them into actual strokes that a mouse could follow without constantly clicking every single point.


What I did

  • Found contours from the edge image.
  • Converted contours into lists of (x, y) points.
  • Simplified overly detailed paths and ignored tiny unusable contours.
  • Added PathGroup so related strokes can travel together.
  • Patched some parts of image rendering issue mentioned in the 5th devlog , so it at least works.

Current result

  • The processor now produces drawable paths, not only a black-and-white image.
0
0
40
Open comments for this post

2h 13m 1s logged

Devlog 04 and 05

Devlog 04

I added an image preview, then noticed a problem: the original picture and the drawing area could have different shapes. A wide image was getting squished, which looked terrible.


What I did

  • Added a preview area to the interface.
  • Resized images while keeping their aspect ratio.
  • Letterboxed them on a white canvas so the processing area stays consistent.

Current result

  • Images fit the drawing canvas without stretching.
  • The preview is much closer to what the bot will use.

Devlog 05

So I was thinking that drawing every pixel would take forever. I tried edge detection instead, because an outline is often enough to recognise a picture.


What I did

  • Added OpenCV and converted images to grayscale.
  • Used blur plus Canny edge detection to find visible outlines.
  • Saved the generated edge image for previewing and debugging.
  • Had a lot of problems with the back end when converting PNG / SVG

Current result

  • The app can turn an image into line-art data.
  • Some rendering issues when using a PNG or a SVG
  • I can see why some pictures work better than others.

(1st Image is the gray scale version of , the 2nd image)

0
0
6
Open comments for this post
Reposted by @Dragon

1h 58m 57s logged

Devlog 03

The next question was, “Can it even open the kind of images I use?” I used Pillow because it made loading and converting images much less scary.


What I did

  • Added a file picker for image files.
  • Loaded images with Pillow and converted them to RGB.
  • Put the image-loading work into image_processor.py instead of mixing it into the GUI.

Current result

  • Users can choose an image from their computer.
  • The program has a separate place for image-related code.
0
1
14
Open comments for this post

1h 58m 57s logged

Devlog 03

The next question was, “Can it even open the kind of images I use?” I used Pillow because it made loading and converting images much less scary.


What I did

  • Added a file picker for image files.
  • Loaded images with Pillow and converted them to RGB.
  • Put the image-loading work into image_processor.py instead of mixing it into the GUI.

Current result

  • Users can choose an image from their computer.
  • The program has a separate place for image-related code.
0
1
14
Open comments for this post
Reposted by @Dragon

1h 46m 16s logged

Devlog 02

I started with the least exciting but most reassuring thing: making an actual window appear. Seeing a blank app on screen made the project feel real.


What I did

  • Set up main.py to start the program.
  • Created a basic Tkinter app shell.
  • Added a title, a simple layout, and a place for image controls.

Current result

  • The app launches without needing a terminal-focused workflow.
  • There is a foundation to build the interface onto.
0
1
7
Open comments for this post

1h 46m 16s logged

Devlog 02

I started with the least exciting but most reassuring thing: making an actual window appear. Seeing a blank app on screen made the project feel real.


What I did

  • Set up main.py to start the program.
  • Created a basic Tkinter app shell.
  • Added a title, a simple layout, and a place for image controls.

Current result

  • The app launches without needing a terminal-focused workflow.
  • There is a foundation to build the interface onto.
0
1
7
Open comments for this post

1h 25m 4s logged

Devlog 01 — The idea

So I was thinking: what if I could give a program a picture and have it draw it with my mouse? It sounded simple at first, but then I realised the computer needs a list of tiny movements, not just an image.

What I did

  • Defined the goal: load an image, turn it into strokes, and reproduce them on screen.
  • Chose Python because I already knew enough to experiment quickly.
  • Picked Tkinter for the desktop window and wrote down the main parts the project would need.

Current result

  • A clear plan instead of just “make a drawing bot.”
  • The first rough project folder and entry-point idea.
0
0
10
Open comments for this post
Reposted by @Dragon

2h 33m 35s logged

SES-3

This session focuses on bug fixing , CI/CD improvement and some research about new features.

New Features Research

I realized for the past 2 weeks I have not implemented new features, and only fixed bugs and did improvements. I researched a little and looked into other QR libraries and looked for the stuff that the other libraries lack. I decided on some new features like Kanji Mode, there are few but I wont mention them here. (research time isnt logged cause I forgot but it was like an hour)

Bug Fixing

Did some bug fixing with the logo embedding QR code again. Its the only QR code type that fails the most. This time I guarantee it wont fail again.

CI/CD Improvements

Finally I realized for my test workflows I use pyzbar which is a qr code decoding library. But it does not support microqr decoding. So I had to switch to another libray called zxingcpp which does support what pyzbar has with microqr decoding support as well. I took some help from some people online regarding the tests and they help me make some test scripts. I broke down the main test script into smaller parts so Its easier for me and the readers.

Conclusion

Thats it for this session. Its like 95% completed for shipping and logged 50 hours as well. Just some final new features (mentioned above) and some documentation work and It v2 will be released. Thank you for reading the entire thing. I hope you’ll like it and find BetterQR useful. New features / suggestions / complaints are accepted in the replies via a DM on slack. I need some honest feedback.

0
1
5
Open comments for this post

1h 53m 50s logged

Initial setup

This is the first devlog for TCast. So here’s what I did.


Deciding the structure

TCast should run pretty fast. It has to spawn a new shell , record the inputs, and render them again. So choosing a good language is compulsory. I went with javascript ig.


Folders

Setup the initial folders and files needed for the app to work.


Research

I researched about other simillar apps to this.

0
0
0
Open comments for this post

1h 55m 46s logged

Fixing Changes

Got a review saying the readme is too Ai. So I just wrote a readme from scratch. Cut down the Ai stuff and followed the guide and made this. Also changed the project banner to the terminal preview command cause the reviewer said so.

0
0
5
Ship

(check the bottom of the ship msg before voting pls)

BetterQR v2.0.0 Release

Hey Everyone!

I am super excited to announce BetterQR v2.0.0. This release brings a ton of cool new stuff and makes BetterQR even better for your projects.

What’s New & Awesome:

  • Micro QR Codes! 🎉 Now you can generate tiny, super-efficient Micro QR codes (M1-M4) for when space is tight. Perfect for small labels or embedded projects.

  • PDF & EPS Output: Need high-quality QR codes for print? You can now export your QR codes as professional PDF and EPS files!

  • Structured Append: Got a huge message? Split it across up to 16 linked QR codes that can be scanned one after another to get the full data. Super powerful for big data!

  • Faster Than Ever: We’ve made PNG generation about 40% faster! Your QR codes will render quicker, leaving you more time for hacking.

  • Rock-Solid Reliability: We’ve fixed some tricky bugs that could cause QR codes to break, especially for really big ones. Plus, our testing is way better now, so everything is super stable.

  • Better International Support: New Kanji mode and UTF-8 declarations for global projects.

Why this matters for your projects:

BetterQR v2.0.0 means you can create more advanced, more reliable, and more visually stunning QR codes for whatever you’re building. Whether it’s a game, a website, or a physical project, BetterQR has your back.

Get the Update!

It’s easy to upgrade:

pip install betterqr --upgrade

Information for the voters

  • The Logo isn’t AI generated. This was made fully in Canva.
  • No, This is not a vibecoded project.
  • There are some big devlogs that are around ~9h, I wasn’t able to devlog them as where I live there were serveral power outages, making me not able to use the internet and not to devlog them.
  • This has been tested by more than 100 people now.
  • Was only tested on Windows unfortunately.
  • The “zero qr dependencies” mean there are no dependencies that generate the QR code. The generation logic is fully made by me. Pillow is used for PNG outputs and other small export options.
  • The landing page is half-ai.
  • 25 devlogs
  • 64h
  • 15.59x multiplier
  • 1000 Stardust
Try project → See source code →
Open comments for this post

2h 23m 1s logged

Final Devlog of v2.0.0 (hopefully)

This is the final devlog that I’ll be posting for v2.0.0 of betterqr. Hopefully you guys will give me some more ideas and features for a future version.

What I did.

Repository Cleanup

  • Did a clean full push to the /src and have no uncommited changes.
  • Pushed the webiste thats going be hosted on Github Pages.
  • Ran some tests.
  • Merged the feat/v2.0.0 into main branch.

PyPi Configs

  • Changes some paths in links to adjust with the branch merge.
  • Modified some automations.

Docs

  • Cooked up a release log.
  • Did some changes to the README.md and DOCUMENTATION.md

Whats Next?

This what I have been working for around 50 hours. Lets See what happens. Im plannning to maintain this as much as I can.

0
0
3
Open comments for this post

5h 6m 12s logged

Grinding

I forgot to devlog so this will be a big one lol. Im currently doing exams so I dont really have alot of time to think through new stuff. I mostly did some bug fixes , optimisation and working on the landing page.

Bug Fixes

  • Fixed some bugs related to the PDF output where sometime QR codes overlap and make an error.
  • Fixed some bugs related to the command line.
  • The frame generation does not work. Im actively working on it but Im not able to fix it yet.

Optimisation

  • Have been cutting down extra generation time with unnecssary checks.
  • Have imporved alot in the generation time.
  • This took the longest.

Docs

  • Edited the documentation.md with the new data.
  • Edited the readme.md with new stuff.
  • Working on a landing page for BetterQR.

I also researched a little bit and asked for peoples opinion on this. Selected around 20 people to test this and give their honest review. Most feedbacks were great. Some requested for features and some found bugs.

0
0
4
Open comments for this post

3h 15m 41s logged

Session 5

More Benchmarking

I have benchmarked more and repeatedly to get the accurate data. I used automated and manual tests. I found some people online who were down to help me benchmark it. For now the data isnt fully presentable. Will include in the next devlog or in the readme itself.

New Brand

I have decided on updating our logo. I designed a logo on Canva. I’ll probably use it as the official logo. I went for the purplish theme cause why not. The logo has a futuristic vibe to it ig.

Better Landing Pages.

Im currently working on a landing page for betterQR. The old one is fine but I didnt update it accordingly. So Im going to make a entirely new one. I have been looking for some inspo as well.

Bug Fixing

Did some little bug fixes and code cleanup

0
0
3
Open comments for this post
Reposted by @Dragon

2h 5m 39s logged

The tables does not work on the stardance devlogs, idk why look at the attached image for the formatted table

Benchmarking

This session focuses on benchmarking BetterQR with other popular libraries like segno and qrcode.

How it Compares

This is a rough comparison between BetterQR, qrcode, and segno.

Feature BetterQR qrcode segno Micro QR ✅ M1–M4 ❌ ✅ Kanji Mode ✅ ❌ ✅ Structured Append ✅ ❌ ✅ Logo Embedding ✅ Built-in ❌ (Manual PIL) ❌ (Manual) Module Shapes ✅ 8 Shapes ⚠️ Limited ❌ Gradients ✅ ❌ ❌ Animated GIF ✅ 10 Effects ❌ ❌ Frames & Labels ✅ Built-in ❌ ❌ Structured Data Helpers (WiFi, vCard, …) ✅ ❌ ⚠️ Via plugin

BetterQR’s primary aim is not to aggressively beat other libraries, but to provide a highly capable, reliable, and user-friendly alternative packed with creative options out of the box.


Performance Metrics

Payload Performance Benchmarks (2.0.0-rc)

All times are in milliseconds (ms). Lower is better.

| Payload Category | Size / Type | BetterQR | Segno | Standard qrcode | BetterQR Status |

| :— | :— | :—: | :—: | :—: | :— |
| URL | Tiny / Short | 6.88 | 7.19 | 5.90 | 🟢 Beats Segno / Competitive |
| Medium | Standard | 22.44 | 21.89 | 20.03 | 🟡 Ties Segno (~2.5% diff) |
| Large | V40 / Dense | 106.63 | 98.94 | 98.96 | 🔴 Behind by ~8% |
| Very Large | Max Capacity | 209.00 | 197.00 | 204.00 | 🟡 Highly Competitive (~6% diff) |
| SVG (Large) | Vector | 86.63 | ~0.56 | — | 🟡 Meaningful fix (was 104.66) |
| SVG (Very Large)| Vector | 174.19 | ~1.50 | — | 🟡 Meaningful fix (was 211.84) |

Known Limitations / Project Honesty

To build clear engineering trust, here are the current structural limitations of BetterQR compared to older ecosystem veterans:

  • Dependency Overhead: Depends heavily on Pillow for its extensive visual layouts and shapes, unlike segno, which is zero-dependency.
  • Large Matrix Vectorization: Pure PNG generation lags behind by ~6-8% on maximum matrix dimensions (like V40) due to mask scoring loops running entirely in pure Python.
  • Vector Vectorization Limits: While our SVG generation times dropped significantly in the latest release, pure string-building layout engines like segno still massively outperform us on massive vector layouts.
  • Format Boundaries: The legacy EPS writer does not support logo embedding.
  • Spec Edge Cases: Kanji mode and Structured Append are fully validated for standard QR codes, but are not yet implemented for Micro QR variants. rMQR (Rectangular Micro QR) is currently unsupported.

2
1
7
Open comments for this post

2h 5m 39s logged

The tables does not work on the stardance devlogs, idk why look at the attached image for the formatted table

Benchmarking

This session focuses on benchmarking BetterQR with other popular libraries like segno and qrcode.

How it Compares

This is a rough comparison between BetterQR, qrcode, and segno.

Feature BetterQR qrcode segno Micro QR ✅ M1–M4 ❌ ✅ Kanji Mode ✅ ❌ ✅ Structured Append ✅ ❌ ✅ Logo Embedding ✅ Built-in ❌ (Manual PIL) ❌ (Manual) Module Shapes ✅ 8 Shapes ⚠️ Limited ❌ Gradients ✅ ❌ ❌ Animated GIF ✅ 10 Effects ❌ ❌ Frames & Labels ✅ Built-in ❌ ❌ Structured Data Helpers (WiFi, vCard, …) ✅ ❌ ⚠️ Via plugin

BetterQR’s primary aim is not to aggressively beat other libraries, but to provide a highly capable, reliable, and user-friendly alternative packed with creative options out of the box.


Performance Metrics

Payload Performance Benchmarks (2.0.0-rc)

All times are in milliseconds (ms). Lower is better.

| Payload Category | Size / Type | BetterQR | Segno | Standard qrcode | BetterQR Status |

| :— | :— | :—: | :—: | :—: | :— |
| URL | Tiny / Short | 6.88 | 7.19 | 5.90 | 🟢 Beats Segno / Competitive |
| Medium | Standard | 22.44 | 21.89 | 20.03 | 🟡 Ties Segno (~2.5% diff) |
| Large | V40 / Dense | 106.63 | 98.94 | 98.96 | 🔴 Behind by ~8% |
| Very Large | Max Capacity | 209.00 | 197.00 | 204.00 | 🟡 Highly Competitive (~6% diff) |
| SVG (Large) | Vector | 86.63 | ~0.56 | — | 🟡 Meaningful fix (was 104.66) |
| SVG (Very Large)| Vector | 174.19 | ~1.50 | — | 🟡 Meaningful fix (was 211.84) |

Known Limitations / Project Honesty

To build clear engineering trust, here are the current structural limitations of BetterQR compared to older ecosystem veterans:

  • Dependency Overhead: Depends heavily on Pillow for its extensive visual layouts and shapes, unlike segno, which is zero-dependency.
  • Large Matrix Vectorization: Pure PNG generation lags behind by ~6-8% on maximum matrix dimensions (like V40) due to mask scoring loops running entirely in pure Python.
  • Vector Vectorization Limits: While our SVG generation times dropped significantly in the latest release, pure string-building layout engines like segno still massively outperform us on massive vector layouts.
  • Format Boundaries: The legacy EPS writer does not support logo embedding.
  • Spec Edge Cases: Kanji mode and Structured Append are fully validated for standard QR codes, but are not yet implemented for Micro QR variants. rMQR (Rectangular Micro QR) is currently unsupported.

2
1
7
Loading more…

Followers

Loading…