Hey, I'm Serge. Born in Ukraine, living in Munich, MSc in Software Engineering, brought up with a love for simple things, now doing all sorts of software development, mainly Go, C/C++, JavaScript and Python.
https://zserge.com
投稿
Show HN: Tiny and utterly useless ReactJS clone (exercise in minimalism)
github.com
22 ポイント·投稿者 zserge··4 コメント
Show HN: Lorca – a tiny library for building cross-platform HTML5 GUI apps in Go
github.com
14 ポイント·投稿者 zserge··3 コメント
Show HN: Tiny cross-platform web UI library for C and Go
github.com
11 ポイント·投稿者 zserge··2 コメント
Show HN: Tiny cross-platform webview library for C/Golang
github.com
12 ポイント·投稿者 zserge··2 コメント
Show HN: Tiny cross-platform webview library for C and Go
github.com
4 ポイント·投稿者 zserge··0 コメント
Syntactic sugar in C – (ab)using “for” loops
zserge.com
3 ポイント·投稿者 zserge··0 コメント
Show HN: Slide – an open-source plain text presentation maker
trikita.co
105 ポイント·投稿者 zserge··40 コメント
Glitch: how to synthesize drums
medium.com
1 ポイント·投稿者 zserge··0 コメント
Glitch: beyond the bytebeat
medium.com
2 ポイント·投稿者 zserge··1 コメント
Anvil how-to: styling views
zserge.com
1 ポイント·投稿者 zserge··0 コメント
The evolution of Android architecture
zserge.com
7 ポイント·投稿者 zserge··0 コメント
Glitch: a noisy fusion of math and music (2016)
medium.com
7 ポイント·投稿者 zserge··0 コメント
Benchmarking a No-Op Go Web App on Heroku, OpenShift, DigitalOcean and AWS
zserge.com
6 ポイント·投稿者 zserge··0 コメント
Lua-sh: Calling shell commands as functions
zserge.com
1 ポイント·投稿者 zserge··0 コメント
Show HN: A convenient drop-in replacement for android.util.Log
github.com
5 ポイント·投稿者 zserge··0 コメント
Show HN: Anvil – a tiny reactive android UI library
zserge.com
2 ポイント·投稿者 zserge··3 コメント
Show HN: Mucks - a session manager for GNU Screen and tmux
zserge.com
2 ポイント·投稿者 zserge··0 コメント
Lambda support for android (with retrolambda backporting tool)
zserge.com
1 ポイント·投稿者 zserge··0 コメント
Another Android Markup Language (a very simple one)
zserge.com
2 ポイント·投稿者 zserge··2 コメント
CUCU: a compiler you can understand (though it's a really ugly one)
I guess I miscommunicated it. I meant I'd call everything a tensor but for some smaller dimensions we have specific names. Of course, 1D can still be a tensor and so is 6D or nD.
I wish we used something else but Python as the default ML language, so that some advanced type system would work for us to ensure tensor shapes and compatibility.
Was doing a similar thing for plain HTML zines: https://github.com/zserge/zine - write each page as html, render as page previews in browser and as a folded zine when printed
A slightly larger implementation at the end of the post does that to some extent - https://github.com/zserge/kalk (CSV import export, Excel-like "locking" of rows/columns like $A$1). If there's a need for such a project - I'm happy to add ODF or XLSX, more compatibility with Excel formulas etc. I'm not sure about Vi keybindings, I personally find spreadsheets easier to use in a non-modal manner.
It's a common CPU vs RAM decision to make. Dependency graph consumes memory, while recalculating everything for a number of iterations could happen on stack one formula at a time in a loop. On 6502 it mattered. On modern CPUs, even with RAM crisis I'm sure for 99.9% of spreadsheets any options is good enough. Say, you have 10K rows and 100 columns - it's 1M calculations to make.
https://zserge.com - little toy projects and stories on various software topics with minimalist aftertaste, not to be ever used in production or taken seriously
A little computer vision library for embedded systems, by magnitudes smaller than OpenCV, but still practical enough to do feature tracking or cascade detections. Works well on ESP32 and cheap ARMs with low-resolution grayscale cameras.
You might be right, but the only place where regexps are applied in code is for validating resource text fields (which is optional). Those regexps are defined in read-only schemas by the developer (if needed). Schemas are immutable. There seems to be absolutely no connection between the data transmitted over the API (i.e. what user can inject) and regexps. I'm not dismissing the idea that there might be plenty of other possible vulnerabilities in other areas of this toy project.
In hindsight, JSONL would have been much easier to deal with as a developer.
But I still don't regret picking CSV -- DB interface is pluggable (so one can use JSONL if needed), and I deliberately wanted to have different formats for data storage (models) and data transfer objects (DTOs) in the API layer, just like with real databases.
I agree, CSV is very limited and fragile, but it made data conversion/validation part more explicit.
Like others have guessed, I limited myself to what Go stdlib offers. Since it's a personal/educational project -- I only wanted to play around with this sort of architecture (similar to k8s apiserver and various popular BaaSes). It was never meant to run outside of my localhost, so password security or choice of the database was never a concern -- whatever is in stdlib and is "good enough" would work.
I also tried to make it a bit more flexible: to use `bcrypt` one can provide their own `pennybase.HashPasswd` function. To use SQLite one can implement five methods of `pennybase.DB` interface. It's not perfect, but at the code size of 700 lines it should be possible to customise any part of it without much cognitive difficulties.
To be fair, the project is linked to the blog post I recently wrote, so it's merely a tiny personal/educational project.
I tried to experiment with an API similar to what k8s api server offers: dynamic schemas for custom resources, generated uniform REST API with well-defined RBAC rules, watch/real-time notifications, customisation of business logic with admission hooks etc.
I also attempted to make it as small as possible. So yeah, I don't try to compete with Pocketbase and others, just trying to see what it takes to build a minimally viable backend with a similar architecture.
The choice of the "database" is dictated by the very same goals. I deliberately made it an interface, better databases exist and can be plugged in with little code changes. But for starters I went with what Go stdlib offers, and CSV is easy enough to debug.
I appreciate the fact that it contains shortcuts for such words as "endeavour" (EDV), "ecclesiastic" (EC), "notwithstanding" (NWG) or "vehemence" (VMC) being a dictionary of the "basic and most frequently used words". Also, the suggested abbreviation for "sex" is "SEX".
I hike across Liechtenstein from time to time. A very light but picturesque set of trails for one day (30-50km). I usually start at the south border in a Switzerland town, cross the country up north and enter Austria.
https://zserge.com