
Tiny Apps - lsh
https://tinyapps.org/
======
satysin
Tiny, single exe (and an ini for config) Windows programs have a special place
in my heart. Perfectly portable, instant and lightweight.

I want to cry when I see simple software like Sticky Notes in Windows 10 using
dozens of MB of memory and have a 30+MB install size with minimal
functionality.

I don't have a big issue with .NET and Java based apps but I seem to be using
more and more Electron based software and while the software isn't bad it
sucks that every program comes with its own bloated framework :(

------
j_s
Although it was "removed due to copyright violations"[1] in 2003,
TinyWindowsGames.com was a work of art. If you don't mind downloading random
binaries you can still grab them via the Internet Archive. I will see if I can
create a new screenshot of the playable, tiny thumbnail near the system tray
(probably microscopic at today's resolutions).

[https://web.archive.org/web/20030618002602/http://www.tinywi...](https://web.archive.org/web/20030618002602/http://www.tinywindowsgames.com:80/)

[1] _Nintendo reported us to some software theft agency over "Tiny Donkey
Kong" (I forget what the agency was called) and that got us threatened us with
scary emails. We tried to protest that we just supplied emulators, and not ROM
images, but it fell on deaf ears and we were too young and intimidatable to
stand our ground. It's a shame, since it was a popular site in its day._

[https://groups.google.com/d/msg/alt.comp.freeware/yKQBaHgjGD...](https://groups.google.com/d/msg/alt.comp.freeware/yKQBaHgjGDI/klMAitootGUJ)

~~~
wolfgke
Which shows that copyright is a form of censorship.

~~~
dahauns
Well, that's what it was invented for...

------
j_s
Paging HN user miles!

[https://news.ycombinator.com/item?id=12985672](https://news.ycombinator.com/item?id=12985672)

 _I 'm afraid (or perhaps the word I'm looking for is "glad" ;-) that the
Internet has passed tinyapps.org on by. After its fleeting 15 seconds of fame
back in 2001 (thanks to a Slashdotting and tiny blurb in Wired), the site has
mainly served as an irregular tech blog lo these many years._

~~~
miles
Ha! Thanks so much for the kind shout-out, j_s - what a memory you have! Glad
to see my humble corner of the web is still of some small interest ;-)

~~~
EGreg
How did you know he mentioned you?

Is there some sort of @mention bookmarklet/browser extension in HN?

~~~
steanne
failing other explanation, i linked the thread when i sent him a couple of
additions.

~~~
miles
Thank you, steanne - it was indeed your kind email that alerted me to the
post!

------
Lerc
When I see the specs of things like the Raspberry Pi and Apps like this, it
makes me wonder how great a system like that could be.

Executable size may not be the best measure of these things though. Ram usage
of some things can be quite huge. tinyapps.org seems to avoid this by
disallowing things needing runtimes, which while not the cause of RAM bloat,
often tends to be a common factor.

I'd actually like to see an interface for micro controller style apps. Like An
8 bit AVR emulator that could do some kernel syscalls to the hosted
environment. It would allow for a class of apps to be written that would have
a fixed memory footprint. There's some Irony here in that this would also be a
runtime.

I once had a volume knob widget on my task bar that used 4 meg of ram. Somehow
I feel it could have been done better.

~~~
voltagex_
I've been thinking about this a lot, mainly due to being grumpy about the
proliferation of Electron apps and the effect that's having on my available
RAM.

When I'm not being so grumpy, I'm glad it's easier to write apps than ever
before. I think someone on here posited that it's a choice between something
written in Electron or not written at all. I think that's fair enough - maybe
we just need to make it easier to write tiny apps. Rust and Go look great,
even with a very steep learning curve coming from C# and Python.

And yes, I know as a C# developer sitting on top of hundreds of megabytes of
runtime, I'm "part of the problem".

~~~
danieldk
_I 'm glad it's easier to write apps than ever before._

But it was easy before. If you are willing to forego completely native UIs
(which you are when you are using Electron), it's always been easy to make GUI
apps with Qt. Drag together an UI in designer, use (py|whatever)uic to
generate classes, hook up signals/slots, and you are done.

I can only pin it on intellectual laziness of front-end programmers not
wanting to learn anything else than HTML/CSS/JS and companies wanting
replaceable developers. There is virtually no benefit for the end user over
native applications or cross-platform applications written with e.g. Qt.

~~~
voltagex_
Is a PyQt app really more lightweight than Electron?

To be fair, Qt is a lot trickier than Electron - you've mentioned slots and
signals which are not something you'd encounter every day (at least in webdev
world).

Edit: I also don't buy any argument that relies on "intellectual laziness".
There's enough elitism around already.

~~~
danieldk
_Is a PyQt app really more lightweight than Electron?_

I just tried, because it's only 5 minutes of work. The demo apps (including a
movie player and an image viewer) are generally in the 30MB of memory ballpark
on OS X.

 _you 've mentioned slots and signals which are not something you'd encounter
every day_

It's something that you can pick up in a few minutes. Widgets emit signals.
You can connect signals of choice to slots to handle those signals. In Python,
a slot is just a Python method. In C++ is slot is also a method, but you have
to add a small 'annotation' that is processed by moc.

------
ethagnawl
This calls to mind: [http://suckless.org/](http://suckless.org/)

> Home of dwm, dmenu and other quality software with a focus on simplicity,
> clarity, and frugality.

~~~
dkersten
I love dmenu, its tiny and to the point and just works.

------
to3m
I've written a few small no-dependency things like this for Windows. Some
random notes on writing them:
[https://news.ycombinator.com/item?id=11011857](https://news.ycombinator.com/item?id=11011857)

These are all no-dependency, and all <100KBytes:

Keyboard layout switcher for Windows: [https://github.com/tom-
seddon/kbswitch](https://github.com/tom-seddon/kbswitch)

Windows window manipulation tools, for use with AutoHotKey:
[https://github.com/tom-seddon/align_window2](https://github.com/tom-
seddon/align_window2), [https://github.com/tom-
seddon/align_window3](https://github.com/tom-seddon/align_window3),
[https://github.com/tom-seddon/dispswitch](https://github.com/tom-
seddon/dispswitch)

Snack-size Windows clock: [https://github.com/tom-
seddon/NotifyClock](https://github.com/tom-seddon/NotifyClock)

I think the large ones are only as large as they are because they statically
link with the CRT. I used to do the full /NODEFAULTLIB /OPT:NOWIN98 thing, and
leave out the CRT entirely, so the EXEs were tiny and had no dependencies -
but this was a bit of a pain to work with. And dynamically linking with the
CRT caused me a couple of deployment problems here and there, since I used to
share my binaries folder between several PCs in the past. So eventually I
settled on the purely no-dependency option: statically linking with the CRT,
and ignoring the EXE size. The average app just isn't made meaningfully larger
in the grand scheme of things by this, and by modern standards it barely even
counts as measurable. Even if it's a tiny app, and now 10x larger, it might
still be only 90KBytes...

------
lsh
I was curious about how small (file size) and efficient (memory) I could write
a program with a GUI and came across this old gem. Most of them have links to
their source.

~~~
christophilus
This is refreshing to see. I was just at the doctor today, and they mentioned
how a recent system update (they use a system called Epic) made their receipt
printing go from an abysmal 30 seconds to a full minute.

It seems that programs get bloated and slower with each passing day. I'd love
to see a Renaissance of small, focused, efficient applications.

~~~
seibelj
From what I've heard, Epic is the best out of all the EMR (electronic medical
record) software platforms!

~~~
snarf21
Quite the back handed compliment! They are one of the better ones but the bar
is extremely low.

~~~
shliachtx
I wonder why this field hasn't been disrupted yet. It seems ripe for it.
Established players. Arcane systems. Poor performance. From what I've heard
from employees at Epic their software is something of a nightmare.

Is it just something waiting to happen? Is there a company that is already
doing this? It could probably be done one independent hospital at a time.
Eventually you could get a small network, etc. I understand there is quite a
bit of complexity involved, but isn't that what technology excels at?

Edit: Did I forget to mention expensive? These systems are not cheap, and
usually involve engineers spending weeks or months onsite setting it up. That
means there should be a significant of margin to cut out for competition,
and/or healthy revenue for a startup, at least further down the road.

~~~
x0x0
I worked at Epic a long time ago. They're a bad employer -- churn that would
make the worst valley sweatshop blush -- and even when I worked there had 10s
of millions of lines of vb6 and the same in mumps/cache, the world's worst
programming language. I'd imagine their systems have broken 100m lines of code
by now.

You're essentially using software to automate how hospitals and outpatient
clinics work. Each one of those has established workflows/procedures; each of
those workflows have started or evolved to be (at bare minimum) subtly
different than everywhere else. Each and every procedure has to be build into
the software or adapted to it. Installs are comparable to installing ERP
systems into fortune 500 or fortune 100 companies, with at least comparable
risks. Imagine how risk adverse you would be if inaccessible, incorrect, or
incomplete health records could quite reasonably contribute to severe medical
problems for humans.

If you were ever in a hospital for something serious pre EMRs, you would be
unsurprised to have a file that is several hundred sheets of paper. Every
single scrap of paper in a hospital has to make it's way into Epic's EMR.

Oh, and hospitals / clinics often buy these systems piecemeal, starting eg
with labs. Your code has to talk to their code.

Lots of these got started before web clients worked well, so they're deployed
clients. You can't upgrade 10k seats simultaneously, so both the clients and
the servers have to be compatible up and down protocol versions. Ponder just
how much fun that would be.

Or ponder just how convoluted the logic would be to ask if a person who does X
in clinic A is allowed to see record B for patient C. In, for example, a
hospital chain that may employ 25k+ people in the hospital and various
outpatient clinics.

And follow up with questioning the idea (and expense!) of retraining every
nurse, doctor, aide, tech, etc in a hospital on a new system.

~~~
wernsey
TDWTF had an article about MUMPS that stands out in my memory [1]

When I see COBOL fixed width data at my workplace, I just think about that
article and thank my lucky stars.

[1]
[http://thedailywtf.com/articles/A_Case_of_the_MUMPS](http://thedailywtf.com/articles/A_Case_of_the_MUMPS)

~~~
whitten
MUMPS really isn't a bad programming language. It has certain characteristics
like allowing incredibly terse code, with abbreviations for all the commands
and single letter variable names, but the trade-off of a NoSQL hierarchical
datastore acting as variables to the programs with string values and string
subscripts on arrays, hiearchical inter-process locking, high level variable
management and garbage collection, run time code and variable evaluation, and
other advantages. Modern MUMPS systems have high level database management
systems as well.

------
sundvor
The apps may be tiny, but the website itself is (also) a breath of fresh air
from times past.

~~~
mi100hael
I ruefully sort of wish CSS was 100% client side so that all sites would be
delivered as plain, unstyled HTML and it would be entirely up to the user how
they prefer to see content. Obviously not at all practical, but would make it
so much cleaner and easier to read when browsing 90% of sites out there.

~~~
steanne
the old presto version of opera had an option to default to user css for the
whole program instead of the various sites'. don't know if that's still
available in the new version.

------
iliketosleep
Progress is modern computing has only been exceeded in the increased in
bloatware! Using these lean and mean apps on modern hardware is heavenly - the
way I imagined, 10 years ago, of how things would be today.

~~~
RachelF
Yeah, heaven is old software on new hardware!

~~~
JustSomeNobody
Not sure of your intent, but:

Even the latest MacOS, Windows, Linux, etc are all running decades old chunks
of code. And yet, they still run well.

Old code is debugged code. It's (mostly) proven code. It's aged leather. It
feels good and it just works.

Everything doesn't have to be "modern".

------
mherrmann
I wish it were easy to write such small apps, particular cross-platform. I'm
developing a cross-platform file manager [1]. It's way more bloated with
dependencies than I would like. But I can't justify spending time on trimming
its dep's when there is so much functionality that needs to be implemented.
Having said that, I did choose PyQt over Electron​ for performance reasons
[2].

[1]: [https://fman.io](https://fman.io)

[2]: [https://fman.io/blog/picking-technologies-for-a-desktop-
app-...](https://fman.io/blog/picking-technologies-for-a-desktop-app-in-2016/)

~~~
problems
One thing that you seemingly missed in your review of toolkits is that PyQt
cannot be used freely by a proprietary application such as yours. Qt itself is
LGPL, PySide (the official python Qt binding) is also LGPL, but PyQt is GPL-
only unless you pay them $500.

~~~
mherrmann
Fair point. Though tbh $500 really isn't that much in the context of how much
work a desktop app is.

------
fizgig
I love the minimal and efficient app mindset.

Back in the 90s I used this DOS text editor that fit on a single floppy sector
(512B). I forget the name, but it was a part of my standard toolkit for many
years.

These days, I run "evilwm" for my home desktop. That's about as small and
efficient as a DE/WM gets anymore, and I love it.

~~~
lsh
this evilwm? [http://www.6809.org.uk/evilwm/](http://www.6809.org.uk/evilwm/)

~~~
fizgig
Yes.

------
ethana
I've been using a replacement of network>Proxomitron proxy filter tool called
Proxydomo available on github. God bless the guy that reverse engineered the
original.

[1] [https://github.com/amate/Proxydomo](https://github.com/amate/Proxydomo)

~~~
kdeenanauth
Wow what a throwback..I've been using Fiddler for some quick proxying but it
still doesn't compare to Proxomitron

------
bananaboy
Hey nice! I wrote a minimal Windows console-based hex editor [0] just recently
for fun. Maybe I should submit it.

[0] [https://github.com/samizzo/hexed](https://github.com/samizzo/hexed)

~~~
pingiun
That's really cool! You should submit it

------
nom
Perfect thread to mention AnyDesk, our remote desktop application. We practice
minimalism as an art form, the size of the Windows executable is 1,8 MB. [0]

Disclaimer: Currently working at AnyDesk.

0: [https://anydesk.com/platforms](https://anydesk.com/platforms)

------
movetheworld
Besides the file size restriction of 1.4 MB, I agree 100% with the
requirements for good OS software. Portability and ad/junk-free is most
important.

------
brianbreslin
tangentially related: wasn't there a website of single page web apps a few
years ago? I'd love to see tiny SaaS or software solutions listed somewhere.

~~~
vbrendel
[https://www.producthunt.com/](https://www.producthunt.com/)

------
coldcode
You can write all sorts of tiny apps. We need to have 100 people just to tell
the other 100 people what process to follow, how to write everything, what it
should look like, etc. Plus another 100 people to run the process. Also
another 100 people to manage those people. Bonus: the following version in
this monster must be complete before the previous version is even live. No
tiny for us...

------
e12e
Hm, looks like there are some old links - pfe (programmers file editor) links
to sites.net, not the official homepage:

[http://www.lancaster.ac.uk/~steveb/cpaap/pfe/default.htm](http://www.lancaster.ac.uk/~steveb/cpaap/pfe/default.htm)

------
squarefoot
Ninite also follows an interesting concept and saved me some good time in the
past. Can be really useful if you need to install the same subset of apps on
more machines. [https://ninite.com/](https://ninite.com/)

------
est
Missing this

[http://www.bcheck.net/apps/hoe.htm](http://www.bcheck.net/apps/hoe.htm)

customized hotkey launcher.

Written in assembly I believe. You can modify it far beyond bosskey.

------
iso-8859-1
An even tinier approach would be to compute the Nix closure size of packages.
That way, you'd pay for your libc implementation too.

------
maxpert
Nostalgia (disclaimer I have moved on to Linux)

------
swiley
I always love playing around with busybox, which is more or less the Linux
equivalent to this. Small software is beautiful.

------
steanne
nice! mailed them a couple more.

~~~
mmsimanga
Perhaps you could add software links to your comment. I am always on the
lookout for small applications that get the job done.

~~~
steanne
[http://www.softwareok.com/?seite=Freeware/AlwaysMouseWheel](http://www.softwareok.com/?seite=Freeware/AlwaysMouseWheel)

[http://www.nirsoft.net/utils/nircmd.html](http://www.nirsoft.net/utils/nircmd.html)

~~~
voltagex_
nircmd is great, although I wonder how much you could replace with PowerShell
these days. Invaluable along with SysInternals [1]

1: [https://technet.microsoft.com/en-
gb/sysinternals](https://technet.microsoft.com/en-gb/sysinternals)

~~~
steanne
powershell requires .net. that is no longer tiny.

~~~
voltagex_
Depends what boxes you're normally on, but it's a rare day I'm somewhere
without .NET.

~~~
shakna
.NET's memory management can be kinda crappy though, depending of course on
the program. Evens out a bit when you start to get complex things.

nircmd is low in memory footprint as well as binary size.

------
kierenj
Quite a few links and sites offline - e.g. the top network tool, the top text
tool.. :(

