art with code
Filezoo, end of day 10 / start of day 11
6am after no sleep, what better time to blog? Image from an old graphics hack I found lying on the hard disk.
Added importance annotations to the methods. The importance annotations are comments like /** BLOCKING */ and state the method's effect on the user interface.
A BLOCKING method has a non-trivial runtime (or at least lacks speed measurements) and is executed during the UI code (draw event handler or the interaction event handlers.) BLOCKING methods need to be profiled and latency-optimized to maintain a responsive user interface. The fewer BLOCKING methods there are, the better. Currently the draw loop and the recursive draw tree generation are BLOCKING, along with traversal cancellation and cache invalidation.
An ASYNC method runs its work in a separate thread from the UI code. The traversal threads and cache tree updaters are ASYNC. ASYNC code should be correct and not cause too much resource consumption that causes UI latency.
A FAST method is trivially fast or uses other FAST methods in a trivially fast manner (i.e. know that it's not going to infinite loop or anything.) A BLOCKING method measured to be fast can be changed to FAST. If a FAST method is called enough that it forms a bottleneck, its state should be changed to BLOCKING.
I also have DESTRUCTIVE and UNIMPORTANT importance levels, DESTRUCTIVE being reserved to filesystem-changing code, of which I have none yet. UNIMPORTANT is used for the profilers and other non-UI code.
Regarding string sorting, String.CompareOrdinal is faster than String.Compare, but not too correct.
Next up, hmm, more performance work in the shape of splitting the BLOCKING parts that touch the disk over to the ASYNC parts. Documentation for dircache.cs. And maybe at some point I can start adding new UI features? Like pretty colorful lines and magic ? Yeees?
- ► 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