Moved to using Pango for text rendering, now my UTF-8 filenames render correctly. But it's slow. So the theme of the day is performance. From directory opening latency (creating a WaitCallback for a dir and adding it to the ThreadPool sometimes causes a 20ms pause, so when you have lots of dirs, you get to wait a second or more), to crappy overview drawing performance (/usr/lib has only 3380 files in it, and it's already a pain to navigate), to crappy panning performance (need to skip clipped entries altogether.)
For the ThreadPool pauses, I should make a filesystem traversal server that has a hashtable, a request queue and a worker thread. When a dir needs its total size and count, it asks the traversal server, which returns the current result immediately, and puts the dir to the queue if it's not already completely traversed. The worker thread then takes a random entry from the queue and adds the file sizes of the entry to the corresponding dir in the hashtable along with the dir's ancestors. If the dir has no subdirs, the worker thread marks it as completed and walks up its ancestors, marking each completed if all its subdirs are completed. If the dir taken from the queue has subdirs, the worker thread adds the subdirs to the queue.
Ok, sounds like enough work for the day.
Tried to make a Gtk user interface using the GUI designer but failed, and the GUI designer was a huge bother of point-and-click-UI. And since I want a certain visual look, it's well nigh impossible with the normal widgets. Oh, if making GUIs worked like HTML or SVG...
art with code
- ► 2013 (26)
- ► 2011 (20)
- ► 2010 (94)
- ► 2009 (84)
- Filezoo, day 18
- Filezoo, 17.3: image thumbnails
- Filezoo, 17.2: context menu, a bit nicer monitorin...
- Filezoo, 17.1: rewrite done-ish
- Filezoo, 16.1: rewrite, dev env screenie
- Filezoo, 15.2: DirStats static rewrite
- Filezoo, day 15: refactoring plan
- Yeah, it's going to be difficult
- Filezoo, day 14
- X application startup times
- More fishes
- Filezoo startup profile
- Filezoo, start of day 13: some timings, thumbnail ...
- Filezoo, day 12: zoom navigation
- Filezoo, day 11: silly icons, less traversal, pare...
- Filezoo, end of day 10 / start of day 11
- Filezoo, day 10 and 2/3: Manual rectangle clipping...
- Filezoo, end of day 9: requirements document, inte...
- Filezoo, start of day 9: more traversal banging, f...
- Filezoo, day 8: Merge of the recursive branch
- Filezoo, day 6
- Filezoo, end of day 5: Context-sensitive zoom, rec...
- Filezoo, start of day 5
- Filezoo, end of day 4: Speed!
- Filezoo: start of day 4
- A small shell script for Googling
- Filezoo, end of day 3: open terminal, threads
- Filezoo, start of day 3: zooming and panning
- Filezoo: end of day 2
- Filezoo: visual du with aspirations towards file m...
- Visual disk usage app using Mono
- A simple C# analog clock with Mono and Cairo
- Black on white desktop theme
- ▼ November (34)
- Built art installations, web sites, graphics libraries, web browsers, mobile apps, desktop apps, media player themes, many nutty prototypes, much bad code, much bad art.Have freelanced for Verizon, Google, Mozilla, Warner Bros, Sony Pictures, Yahoo!, Microsoft, Valve Software, TDK Electronics.Ex-Chrome Developer Relations.
- Filezoo - Minimalistic zoomable file manager
- Missile Fleet - A game written with Cake.js
- Gitbug - In-repo bug tracker for Git
- Prelude.ml - OCaml stdlib replacement with a Haskellish flavour
- Metadata - File metadata extraction tool and Ruby library
- Thumbnailer - File thumbnailing tool and Ruby library
- Random canvas demos