HNHacker News
TopNewBestAskShowJobs

Ciantic

1,533 karma · joined March 11, 2015

https://ciantic.iki.fi/
submissionscomments
Ciantic··on Privaxy blocks ads and trackers by MITMing HTTP(s) traffic
I can't let go of Google Chrome fully, so I'm looking for alternatives once uBlock origin ceases to function shortly. I've yet to test this, but this looks nice. However it doesn't have a big community around it, and I'm wondering if there is a similar tool but with a community around it as well.
Ciantic··on Writing GUI apps for Windows is painful
Works just fine, I have 8000 BTU and it cools a living room very efficiently. I need it about one or two weeks per year in Finland. I can't imagine anybody working from home without one, even as north as Finland. Although we Finns are probably least used to heat so even 27 celsius is unbearable.

The only thing one needs is a window-sized cardboard with a round hole and blanket if your target room has no door. I just looked at prices and 10000BTU seemed to be ~350 euros.

Ciantic··on Winpopup (2001)
I even got a call from a person who received one of the popups over the internet. Because the message had my name on it. I just happened to have a common name in Finland, and the receiver dug up my phone number and called. Of course, it was not me who sent the popup, but it was pretty amusing to explain that indeed it was not me, and I gave instructions on how to disable the 'feature' completely.
Ciantic··on AdonisJS
Looking at this, it has similar aspects as ASP.NET Core, and the same flaws as the Controller per class design used. Methods such as "index", "show" and "store" do not share a state, they shouldn't share a class either.

However, you can rectify this, by just not trying to share a class with any of those. In .NET Steve Smith, aka Ardalis shows how to do this with his Clean architecture [1]. One idea is to make a class for each endpoint. This also makes it easier for "Update" classes to share functionality with other "Update" classes and so on.

[1]: https://github.com/ardalis/CleanArchitecture/tree/main/sampl...

Ciantic··on What We're Working on in Firefox
I switched to Firefox about 3 weeks ago, what is killing me is dragging the tabs. It is so much worse with Firefox. Someone has made a video of this if one can't remember how they differ: https://www.youtube.com/watch?v=jRuBDH32hPI

With Chrome I can drag a tab and it moves with me, with Firefox the tab being dragged blocks the view. Also since with Chrome, the tab moves with the mouse I can with one drag move a tab and use Windows' snap-to-edge feature. This is a two-step process with Firefox.

Firefox is an underdog, it should focus on making the UI familiar and fast, but keep customizability. Another thing I noticed is that Firefox doesn't allow to keep unpacked extensions loaded as Chrome does, there is no good reason why not, luckily I fixed that with some userChrome scripts.

Ciantic··on "Doomed from the Start" – KSP2 Development History Revealed [video]
I wanted to post, as it had interesting details for people working on software generally:

- Trying to employ mostly junior engineers

- Not allowing the new team to talk to the KSP 1 developers

- Not paying enough to keep senior engineers

- Re-using old codebase and coding themselves in the corner and couldn't fix bugs that old game had

Re-using old codebase wouldn't necessarily be bad if they were familiar with it, but from what I understood nobody was. They weren't able to move fast with it.

The list probably goes on, and I didn't take notes, but I found it interesting.

Ciantic··on LuaRT: Lua programming environment for console, desktop applications for Windows
I'm always looking for alternatives to AutoHotkey and small C WINAPI programs I've written. Rust doesn't quite cut it, even with Microsoft's windows-rs library using the WinAPI functions is worse than it was with plain C. This is because you have to hunt the right libraries and features to import, it's surprisingly time-consuming.

Excited to look how LuaRT exposes WinAPI, my ideal would be one global namespace where you can easily auto-import all the normal functions. Microsoft has made it somewhat easy for library authors to generate the externs with their relatively new Win32metadata package: https://github.com/microsoft/win32metadata

Ciantic··on Show HN: I built a math website the internet loved, I'm back with more features
Looks good, one quick thing: Maybe hide the comments behind a button? Now they are giving away the answer, as some have already posted it there in the first comments.
Ciantic··on I'm closing up shop on my Mastodon for the foreseeable future
The only solution I can think of is smarter algorithms that hide negativity and other unwanted comments. Yes you could limit replies, but that doesn't solve the problem for big accounts, their followers have all kinds of unhinged people who like to ask trivial questions and waste your time.

Some think that by changing a service they can get better replies, but there will be no single service that has "sane commenters". This shouldn't be surprising, I saw in Threads complaints that replies had "Facebook vibe", or a common complaint about Mastodon that there were too many geeky reply-guys.

Services should have good filtering in place. A lot of big accounts don't have time to read replies, and they probably shouldn't for their own sanity, but they probably want to see replies from people they follow, i.e. their peers.

Ciantic··on Show HN: PostgreSQL index advisor
"Automatic tuning, introduced in SQL Server 2017 (14.x), notifies you whenever a potential performance issue is detected and lets you apply corrective actions, or lets the Database Engine automatically fix performance problems." [1]

I have used this in Azure SQL too, but according to that it should be in SQL Server.

https://learn.microsoft.com/en-us/sql/relational-databases/a...

Ciantic··on WinBtrfs – an open-source btrfs driver for Windows
Heads up, installing both WinBTRFS and OpenZFS on Windows may have problems:

"Win OpenZFS driver and WinBtrfs driver dont play well with each other"

https://github.com/openzfsonwindows/openzfs/issues/364

Ciantic··on A jump into the middle of an instruction from nowhere (2023)
That is the same animation, but it is also triggered if you have chosen a different wallpaper per virtual desktop. It animates the background change when switching desktops, and the animation feels like it lasts around 500ms. I wouldn't mind a quick animation but the default is too slow.
Ciantic··on A jump into the middle of an instruction from nowhere (2023)
That is the weird part. My explorer.exe patch to disable flashing taskbar buttons was functioning with Microsoft Defender turned on for the whole lifetime of Windows 10 I used it. I didn't even need a UAC prompt to patch the memory. Nothing detects it, even though it goes and adds assembly instructions to three locations in the memory with WriteProcessMemory etc. It's not working by injecting DLL, it just modifies the running explorer.exe process memory so it will not modify files.

You can see the code here: https://github.com/Ciantic/DisableFlashingTaskbarButtons/tre... (there was also C version but I changed it to AHK)

Ciantic··on A jump into the middle of an instruction from nowhere (2023)
I know it must be frustrating from Microsoft's standpoint, but those are needed because they keep changing things. Start All Back is one very popular explorer.exe patch that makes the Windows 11 taskbar function a lot like Windows 10. For one thing, it allows you to move the taskbar again.

I've also made an explorer.exe in-memory patch to disable flashing taskbar buttons in Windows 10, it injected itself to WndProc and set the specific message to zero. In Windows 11 it's now a setting, so I don't need that anymore.

Now I'm investigating an explorer.exe patch for Windows 11 to speed up wallpaper animations. Which cannot be configured at the moment, there is only one setting to turn off all animations but no setting to speed up the wallpaper fade in animation.

Ciantic··on Avoid Async Rust at All Cost
Async solves different problems, you can, for instance, have just a single-threaded CPU and still have a nice API if you have async-await. It might not be so cool at a higher level as Go's approach of channels and threads, but it's cool in embedded, read this:

https://github.com/embassy-rs/embassy?tab=readme-ov-file#rus...

"Rust's async/await allows for unprecedently easy and efficient multitasking in embedded systems. Tasks get transformed at compile time into state machines that get run cooperatively. It requires no dynamic memory allocation, and runs on a single stack, so no per-task stack size tuning is required. It obsoletes the need for a traditional RTOS with kernel context switching, and is faster and smaller than one!"

I'm just toying with Raspberry Pi Pico and it's pretty nice.

Go and Rust have different use cases, the async-await is nice at a low level.

Ciantic··on TSMC 2nm Update: Two Fabs in Construction, One Awaiting Government Approval
> "it usually builds a new fab to meet demand of its alpha customers and then either adds capacity by upgrading existing fabs or building another facility. With N2 (2nm-class), the company seems to be taking a slightly different approach as it is already constructing two N2-capable fabs and is awaiting for a government approval for the third one."

Customers would probably want to have plants outside of Taiwan, but proactively approving a new plant and starting to build one even before you have customers gives more leverage to Taiwan. This is just as much about Taiwan's security as it's about good business.

Ciantic··on You can't follow me
Here is an example, from Leo Laporte's blog:

https://leo.fm/2022/02/isitover/

Click on the "Load comments", you can see that it does request to Mastodon server, in this case, twit.social to fetch the comments. Because most Mastodon servers have CORS allowed to all sites, it's pretty easy to do.

Ciantic··on A future for SQL on the web (2021)
It seems indeed very nice, the examples are clear and everything works from async. I tried with Deno, and now experimenting with my own VFS.

It does seem to suffer from maintainer problems too though, and I don't blame Roy Hashimoto for that. I wouldn't want to maintain such an obvious wrapper when it should be a task for SQLite's team to upstream the changes.

Roy Hashimoto doesn't want to maintain it as an NPM package for instance, as it is just an experiment: https://github.com/rhashimoto/wa-sqlite/issues/12

"Low traffic is a happy place - I don't have any motivation to mess with that."

Ciantic··on A future for SQL on the web (2021)
I couldn't find do these wrappers support read-only SQLite databases with HTTP range requests, like in this famous post [1]. Phiresky's wrapper supports it, but it seems to be rebuilding the whole sql.js [2], I'd rather have it as VFS on top of sqlite.org's own WASM module. I like the idea of HTTP range requests, but I don't want to run a fork, that will be unmaintained in few years.

[1]: https://news.ycombinator.com/item?id=27016630

[2]: https://github.com/phiresky/sql.js-httpvfs

Ciantic··on .NET Blazor
That's my experience too, it's near perfect for internal tools like admin panels, where you don't necessarily need to hire dedicated front-end engineers. UI might be a bit ugly, but that's okay for internal use. Usually, admin panels end up having a weird assortment of buttons the real frontend doesn't even need, so creating REST API dedicated for that, and then React frontend to go with it is not time well spent.

This also depends on your backend engineers or whoever ends up maintaining the internal tools, are they comfortable using Blazor or not?

If you need frontend engineers and designers then going with React and the mainstream is wiser.

Ciantic··on Show HN: YouTube banned adblockers so I built an extension to skip their ads
It gave me the warning with uBlock origin a few weeks ago. I think the ad-detection is not turned on for all, that's why it may seem it still works. It also could be that some of the filters in uBlock trigger the detection more than others.
Ciantic··on Show HN: Watermelon – copilot for code review
What is ballsy and what isn't is debatable. I would agree it is ballsy because Microsoft is using "Copilot" on now most of its AI products, just today:

- Bing Chat is now Microsoft Copilot [1]

- Microsoft Copilot Studio lets anyone build custom AI copilots [2]

[1]: https://www.theverge.com/2023/11/15/23960517/microsoft-copil...

[2]: https://www.theverge.com/2023/11/15/23960417/microsoft-copil...

Ciantic··on Use Timestamps
I store notes in to git repository. I used to store timestamps inside the file too, but I found out I don't have the patience to add those if I change tooling like to a different markdown editor that doesn't do it automatically.
Ciantic··on Why Cities: Skylines 2 performs poorly
I'm not a GPU programmer, but I became interested to dig out what is the state of art of culling, and found out Arseny Kapoulkine [1] has implemented those in MIT licensed C++ code base:

Cluster cone culling, frustum culling, Automatic occlusion culling, triangle culling, Meshlet occlusion culling, Optimizing culling. On paper sounds impressive, and maybe Colossal Order could learn from those.

https://github.com/zeux/niagara

Ciantic··on Show HN: Instant API – Build type-safe web APIs with JavaScript
And if you like Zod, you might as well use this: https://github.com/asteasolutions/zod-to-openapi

It converts Zod types to OpenAPI specification.

Ciantic··on The Thing About PHP
PHP doesn't have loose typing anymore, if you make a function parameter with a specific type:

    function test(bool $param) {}
You will get an runtime error if you call it with wrong type:

    Fatal error: Uncaught TypeError: test(): Argument #1 ($param) must be of type boolean
However generics are probably costly to typecheck runtime? I haven't studied the reason why there is not generics planned.
Ciantic··on Platform that enables Windows driver development in Rust
Mouse stutter has become more common in Windows. Every time I open a web page with Spotify embed mouse freezes for ~0.5 to 1 second and then continues moving, I haven't found any reason for it, it happens with Firefox, Google Chrome, and Edge.

It's been repeatable ever since I bought a Ryzen 7950X at the beginning of the year, that's why I tried using system profiler tools to find the reason but as I have no good experience in this it's difficult to find the root cause.

Ciantic··on Protomaps – A serverless system for planet-scale maps
I just used this, the examples are difficult depending on where you start. Here is a quick intro. It's a way to serve small or significant portions of the map from a single file (known as pmtiles file) with HTTP range requests (no wasted bits).

1. They have a great [1] tool that allows you to draw a polygon and generate a pmtiles file for only a particular region. It requires a free account to actually download the pmtiles file, sometimes the download button appears a bit late, but be patient.

2. Then they have a MapLibre example here of how to use the pmtiles file to render it on browser: https://protomaps.github.io/basemaps/

Once you know these details it's a nice tool.

[1]: https://app.protomaps.com/downloads/small_map

Ciantic··on Happy 25th Birthday to Bugzilla
I have same problem, I found out I can just clone existing issues, then remove the linkage to old issue. It's not perfect but at least I don't have to memorize what things I have to fill. You can find the clone feature by opening existing issue and then "..." button at right corner.
Ciantic··on TypeScript Without Transpilation (2021)
I'm using this setup at the moment, mostly because I work on legacy code base that has no good types yet.

Typically you would do jsconfig.json though, which is same as tsconfig.json but allowJs is already set. Mostly stylistic change, but some tooling might benefit for having jsconfig instead of tsconfig.

← PreviousPage 4 of 15Next →