Tiny Apps
box2321 writes: "There's a time and a place for large and feature-filled software. And there's a place for tiny apps - in fact, there's tinyapps.org. This is a mighty-fine resource for free and shared Win/DOS programs that weigh in under 1.44 MB. I learned of TinyApps from a pleasant source."
It is really fascinating what you call small. I remember the VC20/C64 and those things required true small applications. Applications that had more features than most of the "tiny" ones there.
...
You guys might also want to check out the 4KB and 64KB demonstration pieces from parties around the world at Scene. This will show you what can be done in applications as small as 4KB (rendered demos with sound and stuff like that). Enjoy!
I nevertheless appreciate a movement towards essential, small applications
This is where software has to go. If there's one lesson we should have learned by now it's that it's nearly impossible to produce enormous but reliable software. Small programs are the only way to produce reliability, at least for now, and that'll be necessary as computers take over more and more tasks.
"Doctor who?" --The Doctor
Anyone find the irony in having an app called NotGNU Emacs on a 'Tiny App' page? I wonder if there's any GPL issues, as the source is not free (from what I can tell.)
Tho it is mostly windows software, there's a link to google's directory on floppy disk based linux distro's.
"How about BeOS, *nix, Amiga, QNX, etc?," I am asked. Those who are comfortable using these operating systems need no such guide as this; clean, well-made software is the rule rather than the exception.
These guys have got it right on. Outside of the windows software world, priorities are on well made software, in stark contrast to the windows feature bloat that we're becoming accustomed to. I'm not saying all windows software is ill-designed and bloated - it just seems to be the status quo.
It's nice to see that compact well made programs are still available outside of the "alternative" os's
"clean, well-made software" doesn't necessarily imply 'small' or 'tiny', which is what that site is supposed to be about. Honestly, I don't find that many Linux apps that are terribly small, only because I end up getting a ton of source code which I need to compile. The resulting binaries are sometimes small/tiny, but those generally aren't distributed - you get ALL the source, even if you only need a fraction of the options.
creation science book
They shouldn't be using TinyHTTPD on TinyServer. Then they could handle more than a Tiny amount of hits.
Interesting concept. Linux's standard utilities are unnecessarily bloated, replacing them with smallutils allows a respectable distribution to fit on a 1.44MB floppy. According to the documentation, these utilities are included:
Tired of free ipod spam sigs? Opt ou
Anyone remember GEOS for the Commie64? Windowing system, word processor, paint program, etc. On two disks. If you flipped the first one, you got QuantumLink, an online service.
Strangly enough, I found my GEOS disks about a year ago and dialed their customer service number and got AOL... coincidence or not?
What you can look for is explicit modularity that avoids ridiculous reinvention of common functionality - KDE and GNOME are approaching this with their object models.
PicoBSD's applications are really small. Fitting a whole OS onto a single floppy diskette is quite beneficial, and often means that the expensive hard disk can be eliminated. There are also several other small Unix clones, including Minix and Alfalinux (Slackware on 2 floppies). BBIAgent Router is simply amazing: it's a single-floppy Linux-based router and firewall.
Tired of free ipod spam sigs? Opt ou
The more and more end-user applications are developed for the linux desktop, the more and more bloated the software will be. People don't have the time to tailor source to make small, powerful apps, and end users want complete functionality, glitz, and polish.
How many people use all of the functions in an office package? Open Office is as much to blame as Microsoft Office for unnecessary tools, as are many other software packages. Why should I give up 200+ megs of disk space so I can type a couple of letters, an e-mail, and make a simple bar graph, and have it look like someone over the age of four did it?
A small, clean word processor that has the capability to snap in additional functions, like dictionary, thesaurus, forms, and html editing, or several grades of the program, tailored to different classes of users would save a lot of disk space, and remove confusion. It would also go a long way to creating and enforcing standards among the different OS'es and programs which are available.
http://www.consume.org/~jshare/mirrors/www.tinya pp s.org/index.html (no spaces in URL, obviously)
Or, click here.
Jordan
A well-written tutorial about writing BSD assembly application is FreeBSD Assembly Language Programming. There is also a Linux Assembly Programming Resource Site. I suggest if you hate bloated software to contribute to solving the problem by writing small utilities in assembly. Of course, C remains the choice for large projects, but assembly has it's place.
Tired of free ipod spam sigs? Opt ou
Does anyone else see the irony (and perhaps the futility) in creating a site devoted to tiny apps that run on the most buggy and bloated OS known to man?
Contrariwise. When your OS is big, all you got left is room for tiny apps.
(I [heart] Boxer for DOS, myself. I'm pretty sure it's floppy-sized or less, at least in minimal version. If I could find my stupid interface cable, I'd put it on my HP200LX.)
Slashdot's token middle-aged housewife
I'm sorry, 1.44 MB is not tiny :)
:)
I co-wrote a fine piece of fractal generating software, that came with its own windowing system, mouse driver and midi-like music synthesiser (it played a tune of your choice when it had finished rendering the fractal - this was in the days of 386s being power machines), it could do mandelbrot (+ several variations), julia, sierpinski and logistic fractals (plus a few chaotic dynamics plots done in phase space), save and load BMP files of the images and a whole heap of other cool stuff - and it was written in Borland Pascal which had a limit if 64 kB for the compiled program! Those were the days... taught me good programming discipline.
Still remember the excitement of discovering the limits of machine precision by rendering magnified Mandelbrot sets on my 386
- Daniel
Try looking up abandonware games. There are plenty of sites, although I suspect those groovy old games tend to have a simmilar sort of legality to Mame rom files... dubious, but noone really worries.
Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
That was mostly for the code. There was a text buffer that went up to a couple hundred bytes.
And since the program normally stayed running in the background all the time, I thought users might want to have their 8k back sometimes, at the expense of not getting the program's benefit, so there is a control panel option that not only pauses the program, but removes the program code from memory (handy during development, as I could update it this way without rebooting the machine).
When LR was paused, only a little stub of a trap patch remained in memory, about a dozen bytes or so.
Kids these days...
-- Could you use my software consulting serv
I'm sure lots of people have their own tiny project to show off.
I'll start the ball rolling with my Buskpledge Windows program, for collecting and managing donation pledges. It lets you make 2-click pledges from web-pages, view and edit the pledges individually or en masse, and can redirect you to direct donation pages such as Amazon Honor System or PayPal. Full install and uninstall in under 35k.
Source is available at the project page. It's a little wierd, using a custom semi-literate programming tool, and a half-assed gzip clone for internal compression.
Does anyone have a smaller one?
Danny.
I have written over 900 book reviews
You might need to take a look to RiscOS which makes it quite easy for the hosted apps to be *tiny* (a complete DTP package supporting plugins weights several hundreds kB)...
RiscOS is around as old as Windows3 but has always been well designed, quick, compact and responsive.
But I understand such tinyness might seem mythical for PC users.
Trolling using another account since 2005.
I just added it to my tools cd that I carry around with me.
;)
How many times have you installed NT 4 and not been able to get to the service pack downloads because the browser doesn't send the right headers? Geez.
Anyway, it's been added. I love stuff like this!
load "linux",8,1
Above someone posted about the C64/vic 20 and with that I agree. There were some truely AMAZING things a C64 game could do with the 170kb on a 5.25 floppy. back then it took some skill to create a computer program of any non-trivial size or function. You had to try and not make it run over the size that could fit on a single floppy side, so you didn't have to produce a nasty message that said "turn over the disk and press enter".
Now - *sigh* now because truely mind-bogglingly big storage is so undeniably cheap and computers are so mind-bogglingly FAST programmers have gotten sloppy. Instead of tweaking their code for size and speed, they expect Intel/AMD and Western Digital to take care of those problems for them. There are some notable exceptions - like John Carmack - but he's doing things that just plain shouldn't be possible on a computer.
Consider for example the massive, CPU choking monstrosity (that I am forced to use - at least once - because of my stupid thesis review board) known as "WORD" -it's the only word processor I've ever seen with a FRAMERATE! How in the HELL can I out-type an AMD 1.6GHz athlon CPU? How can I type faster than it can show the letters on the screen? Well, it's not AMDs fault, it's Word's fault. It's big, it's clunky, and it's wasteful.
Sometimes I wish software still came on cartridges, like the old Atari 2600 games. Plug it in, hit power and BAMMO! there was Demon Attack! I guess linux-on-bios is close, but it's still an uber-geek only kind of thing.
This loser hasn't got an "AI" program to do anything remotely interesting, and he's been at it for years, insisting that his fuzzy-headed "theory of mind," respected by nobody and supported with nothing but his own rantings, is the key to humanlike machine intelligence.
Move over Alex Chiu, you've got competition for goofiest internet crackpot, and right here on slashdot!
OK, but why objects and not actual programs? IANAP (I Am Not A Programmer), but an idea I've recently subscribed to is using several small, fast programs that work together in concert be roughly the equivelent of a bigger app. It would work like so (apply NaCl liberally):
:-] )
A stand alone, plain, small generic text editor knows when there's a spellchecker, font manager etc. available, and would spin them up as separate processes and let them modify the data as needed. These too would be stand alone apps - you could use
"[user@machine MyDir]spellchk Mydoc.txt -lang USEnglish"
and it would open the doc and spell check it outside the Text Editor, if you wish. Inserting a spreadsheet into a document would cause the program to context switch to a generic spreadsheet, which would do the calculations and then spin up the layout/font manager, which would tag the spreadsheet data with appropriate formatting info and then pass it back to the Text editor/Word Processor program.
Registering one of these mini apps with the application broker (not an object broker!) means that any other mini app can call on it to do a task - this would make things totally pluggable, and allow for infinite customisation options. You like the KDE interface best, but wish you could use the GNOME spreadsheet? Yank KDEs spreadsheet app and plug in GNOMEs. Need a funtion that you don't have? Go download it and plug it in. Have a function that you don't ever want to see again? Un-plug it and toss it. Want bloat? Use 100s of plugins. Want Speed? Use 10. Get the idea?
Sounds a lot like the development today from KDE, GNOME et. al, but the difference is in the object libraries - those huge, incompatible obfuscated buckets of code snippets (on both Windows and *nix) that always seem to cause problems for each other. Why can't we single purpose them all, and tie them to a mini app? Instead of a library of widgets to edit text that any program can use, why not limit the use of text editing widgets to a single program - the registered text editor. Program then calls test editor program already running. IMHO, development teams would then be able to concentrate on a single function, not 20, and would likely be able to produce small, fast quality code by throwing everything out of thier libraries not pertaining to the function of thier mini app. And if a mini-app is un-installed, the library goes with it, period full stop.
Perhaps then we would end up with code of reasonable size and quaility?
P.S. - Please don't flame me for careless suggestions of shared memory amongst other transgressions, but I'm interested in why the object model is better than programs that communicate actions on data, not just data. Like I said, I don't really know the nitty gritty technicalities of what I'm talking about, but I'm interested. (I'm wearing my asbestos jammies, too.
Soko
"Depression is merely anger without enthusiasm." - Anonymous
Ummm...
Just use a compass. You draw a circle, then pick a point on the circle, and draw an arc. You then make the center of the next arc at each intersection of the circle and the first arc, and so on. You then draw lines through each arc intersection for the number of fins you want.
Didn't you ever learn the elegance of simple geometry?
to some excellent comments and feedback, I'd like to offer the following:
1. Yes, 1.44mb can hardly be called "tiny". To be honest, the reason it was chosen is that I just *had* to include the QNX Demo Disk and the OffByOne Web Browser. But much of the site is dedicated to apps in the 2 to 200kb range, which I think can fairly be called "tiny". One example is EVE, a very cool vector graphics editor whose executable is a mere 39k. There are many more listed along these lines.
2. Yes, Windows is very bloated, but by customizing the shell, removing IE, and performing a host of other surgeries, it can actually be quite a nice little OS. I just received an email reply from the author of Optimizing Windows (published by O'Reilly). His book explains (among many other things) how to get Windows 95 down to 17 mb.
3. I realize that Slashdot is generally geared towards *nix users and want to thank you for being kind enough to list a site mainly covering DOS/Windows apps. As I mention on the home page, folks (from any OS) interested in contributing to the site or having a link posted are more than welcome to contact me.
Also, many thanks to those responsible for the mirror mentioned in one of the posts.
Much aloha,
Miles Wolbe
miles@tinyapps.org
http://www.TinyApps.org/
But in case they don't, I'll tell you what the Atari programmers had to deal with. I'm hazy about the model, but I think it was the 2600.
The unit had 128 BYTES of RAM, which included both the heap and the stack. It had a one byte framebuffer, and you effected the drawing of objects and animation by carefully timed changes of its value during the horizontal or vertical blanking intervals.
One big help is that collision detection was implemented in hardware.
You had a choice of a 2k or a 4k cartridge to store the executable code and graphics. You could do a lot more with 4k, and potentially make a game with greater appeal and thereby greater sales, but it came at the cost of the 4k cartridge yielding the programmer half the rolyalties per unit, because the ROM chips were more expensive.
Dave told me of the long hours the programmers would put in trying to get the last few bytes out of a program, to make the transition from 4k to 2k. Suppose you had a program that absolutely required 2050 bytes - wouldn't that be heartbreaking? Sometimes the programmer would think he had a way to shrink the code enough, but it had the effect of screwing up the timing on the graphics.
The royalties could be considerable on those little cartridges. I understand the 19-year-old who wrote Pac Man for Atari received $1 million in royalties.
Again I say: Kids These Days.
-- Could you use my software consulting serv
BSD UNIX for PDP-11 managed to pack a lot of functionality into 64k of data space and 64k of instruction space (with overlays available on some machines, but often statically linked).
I leave it as an exercise to the reader to figure out what makes many programs are so much bigger these days. There are reasons, some good, some bad.
Refreshing to see you all bragging about "Who has the smallest"
Help fight continental drift.
But pertinent to tonights topic is a thread called "The Bloatware debate" that ran for some issues on Risks:
- The Bloatware Debate
- Response
- Response
- Response
- Response
and also:- Bloat Dissections II
- Response
- Response
- Response
- Response
- Response
One culprit that I think is mentioned in there somewhere is the use of virtual functions in C++. Even if a virtual function never gets called because of the way it is possible to run a program, it must be included to satisfy the linker. Virtual functions are necessary to enable polymorphism, though, so I don't see a way around it. However, I suspect they are overused; many C++ programmers do not know when it is appropriate to make a member function non-virtual vs. virtual.-- Could you use my software consulting serv
Also, Home of the Underdogs has a wide variety of abandoned games.
If you like that, get the full CD! It even has Doom on it.
A Government Is a Body of People, Usually Notably Ungoverned
In the days of huge software programs it always amazes me to see what can be done in such small packages (each 4k jar file includes the source code too).
I take it you're not counting the 14Mb runtime that you need to make that Jar file work?
Simon
Coming soon - pyrogyra
Well, they don't evolve by themselves. However, they can be programmed to :-) Evolutionary computation has been SOTA in computer science for the last twenty years, and is slowly moving into mainstream.
:-( )
You might find it worthwhile to do some research on the primary three EP techniques at the moment:
- genetic algorithms (create a function to translate a string of bits into a possible "answer" and grade it on a 0.0-1.0 scale, then splice the best-ranking strings together to make new ones, i.e. survival of the fittest)
- particle swarms (create a bunch of particles in 3d space that can suggest to other particles around them to move in a certain direction, like ants with pheromones, and the particles converge on one or more points in space)
- simulated annealing (I don't understand this well enough to give a good explanation
GAs in particular have proven to be useful, since they can converge on a good (altho possibly nonoptimal) solution VERY quickly. In a recent experiment, an engineer implemented a GA in a prosthetic arm to act on nerve impulses. The traditional "clamper" arm takes about six months of training for a person to control it well. The GA chip adapted fully to the person in fifteen minutes.
His stuff is always small (www.grc.com). Trouble in Paradise is a complete Iomega drive diagnosis package self-running at 52KB under Windows.
$ find /usr/sbin /bin /sbin /usr/bin -size +1440k -type f | wc -l /usr/sbin /bin /sbin /usr/bin -size -1440k -type f | wc -l
10
$ find
2667
It's worth noting that both emacs and vim are in the 10 that would not fit on a floppy.
I know I'm ignoring libraries. I said it was just for fun. :-)
That's how OLE/COM/DCOM/COM+/.NET (whatever MS is calling it today) is supposed to work, and if the extensions are DLLs, they run in-process.
And this was supposed to reduce the size of apps: you didn't have to include a graphics/GUI/spellchecker/etc in every program. Make them seperate modules, and all apps can use them as needed.
That was the idea anyway. But I notice that with VC++, as soon as you actually use one of the libraries, it loads a huge amount of code into your app to talk to that library. Now some compilers are better at stripping unused code, but the MFC GUI stuff so intertwined, everything gets pulled in! (And the size of those MFC DLLs!)
Borland does it a bit better -- the apps are large by default, but that's because the equivilent of MFC is included in each app for portability. You can group all the common functions needed by each app into a single library if you want to. (And use outside COM objects with no problems.)
I only use text with Linux, so haven't noticed any bloat yet, but I'm sure as soon as I start using large extension APIs the bloat will start.
Somehow we've got to stop the bloat caused by using extensions.
Mmm... Turbo Pascal 2: editor, compiler, run-time in 36k.
One line blog. I hear that they're called Twitters now.
I want to hook VoiceXML up to the Zork game engine so I can play Zork, HHGTTG, etc by telephone.
:^)
Okay, it's a useless technical achivement, but think just of the zowie factor!
One line blog. I hear that they're called Twitters now.
when you consider Unreal Tournament is 600 megs, windows is 200 megs, winamp is 6 megs, internet explorer is 8 megs... yeah I would say >1.44 is tiny
on a side note, tinyserver is the BOMB! I currently run it on my machine and not once has it had any problems....
Thanks to file sharing, I purchase more CDs
Thanks to the RIAA, I buy them used...
1.44Mb is f***ing huge compared to what it was like in the good old days.
I used to write commercial apps for the BBC Microcomputer. You probably didn't have that in the US, but it was a neat bit of kit in its day (about 1984?) and very popular in the UK.
As I remember it had 32Kbytes of memory, most of which was taken up as screen memory. I think you were left with about 8K to program in. And you had to get everything in there because there was no hard disc or other storage.
I remember I wrote an educational program for schools which included an image drawing system that worked in a similar way to Macromedia Flash. Literally every bit of memory was used. In fact, there was 'spare' to store upto 32 images drawn in the format.
Tell that to programmers today, they don't believe you.
This has got to be the smallest and coolest app ever. It's called Tube and it's 256 BYTES (yes, I said BYTES!). It can be found here:
http://www.pouet.net/prod.php?which=3397
It doesn't use any external libraries, DirectX or any cheating stuff like that. It also comes with full x86 sourcecode for you to enjoy.
Have fun now.
Being a windows user, I have to watch my applications to make sure they don't eat up memory, i.e. memory leaks. So I downloaded a tinyapp called "MemLoad" which should help me do this... but here's the kicker: From the Readme file: Current issues >
There is a small memory leak present in Memload
M@
Krispy Cream is people
GEOS got licensed (sold?) to New Deal, who are promoting it as a software suite, New Deal Office, for old computers. Their primary customers seem to be schools.
You can download an evaluation version for free. They used to have (non-expiring) beta versions up for testing, but they no longer do. They also seem to have dumped Motif for something called "NewUI". I remember running NDO with OpenDOS, because the GEOS kernel could supposedly utilize OpenDOS's multitasking ability.
Bear in mind, that GEOS (now "NewDOS") is no longer promoted as a seperate product, rather as a means to an end (the office suite/web browser).
Ok, so how many hits did slashdot get today with
"User-Agent: Mozilla/3.0 (compatible; OffByOne; Win****) Webster Pro V3.2"?
Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
As far as features per line of code, I find that to be a rather dubious statement. I'd say the same thing applies to Your Average Linux Distro as well, but the problem in this case is that the software (most egregiously SuSE and RedHat) becomes musclebound rather than bloated. Even Debian ships on 3 CDs now; there's something a bit wrong with that IMHO.
For this I blame GNU -- for whatever reason, GNU's version of embrace-and-extend hasn't created bloatware *exactly*, but a lot of their software has far too much core functionality (*cough*emacs*cough*) for efficiency. (One of these days I'm going to sit down and create that Linux Lite distro I've thought of making -- Minix sed instead of GNU, One True Awk instead of gawk, you know...)
/Brian
You just reinvented out of process OLE servers -- instance tracking, registry and all. Strip away the main() function and you now have objects instead of programs.
I've finally had it: until slashdot gets article moderation, I am not coming back.
I STLL use 2.04g today, when I get mainframe files from our vendors. They have all these specs and formats and whatnot, and invariably send them in several pieces. I've written batch files and VBA code to unzip, format for the data records, concat, and import, all in one or two steps. Most of these vendors included "installers" that were more trouble than they were worth and usually put crap where I didn't want it.
A couple of jobs ago (1997), I used it with a comms program to do remote updates of hospital software. It was so much better than personally visiting over 150 workstations.
RIP, PK.
GTRacer
- It's not the size of the package, it's the compression ratio
Defending IP by destroying access to it? That makes sense, RIAA/MPAA. Go to the corner until you can play nice!
Amazing!!! 256 Bytes!!! Humbling, to say the LEAST!!!
.com file, for DOS - but it runs _fine_ under NT!!!
People - download this and try it, and be amazed!!! It is
My head is spinning!!!
I can't use enough exclamation points!!!
Reason is the Path to God - Anon