* Build system and packaging work - [ ] =chicken= is using a positional argument for the file name... (note the confusing error message when you try specifying an option first) - [ ] Missing LICENSE in egg tarballs - [X] Implement an option for =chicken-install= to not fetch/install any dependencies - [ ] Implement an option for =chicken-install= to retrieve eggs to install from a file (like with =@requirements.txt= or =< requirements.txt= or =-f requirements.txt=), with each line looking like =name[:version]= - [ ] Implement an option for =chicken-status= to list versions in that format - [ ] Report a bug for eggs installed via C5 not having a version - [ ] http://code.call-cc.org/egg-tarballs/ should be official (see http://www.more-magic.net/posts/vcs-independent-distribution.html for details) - [ ] Same goes for http://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.git;a=tree;hb=HEAD - [ ] Source links in the wiki (svnwiki hacking?) - [ ] Do something against the hardcoded locations (having a globally installed CHICKEN and locally installed libraries doesn't mix as they're looked up in the global location unless you use environment variables, perhaps an approach à la =pip install --user= or =gem= and its user option could work) - [ ] Eggs using =setup-helper= (like, =posix-utils=) are considered broken (as it's going for the =(include ...)= approach instead of the recommended =(use ...)=) and would need to be fixed before someone attempts packaging it as make dependency! - [ ] Use == in generated sources #+BEGIN_SRC wasamasa: All chicken needs is the ability for -p to be an actual prefix and an install location wasamasa: So `chicken-install -p /usr "$pkgdir"` for example #+END_SRC * =chicken-src= ** Notes The equivalent to =chicken-doc= for (definition) source lookup. It should use chicken-install to retrieve eggs to a source location and be able to find definitions in both scheme and C sources of these retrieved eggs. Additionally to that it would be nice to have an updating command and integration into the REPL. See also henrietta-cache: https://wiki.call-cc.org/running-an-egg-mirror Perhaps it's sufficient to add an option to that utility for fetching the last n revisions (and cleaning older releases!), then one could just run it periodically and maybe offer a tarball of it on a mirror... http://wiki.call-cc.org/chicken-projects/egg-index-4.html http://code.call-cc.org/svn/chicken-eggs/release/4/ (anonymous svn) http://code.call-cc.org/svn/chicken-eggs/release/4/egg-locations http://code.call-cc.org/release-info?egg=loop http://www.more-magic.net/posts/vcs-independent-distribution.html http://wiki.call-cc.org/chicken-projects/egg-rss-feed-5.xml #+BEGIN_SRC wasamasa: (toplevel-command 'doc (lambda () (repl-doc-dwim (read))) ",doc PATHSPEC Describe identifier or path with chicken-doc")) #+END_SRC ** Implementation - =henrietta-cache -c ~/.usr/share/chicken/cache -e https://anonymous@code.call-cc.org/svn/chicken-eggs/release/4/egg-locations= - Check whether last items are newest (otherwise implement version sort) - Implement download-last-release-files (default to 1) - Implement clean-cache (with option how many releases to keep, default to 1) - Expose these through command-line arguments - Write tool going through that cache and guessing what defines an exported identifier (typically it's a top-level (... IDENTIFIER ...) or (... (IDENTIFIER ...) ...) form, top-level usually being inside a module) - How will this work on chicken-core itself? - These appear to be part of library.scm... * =moped= A better MPD library! * =doodle2= [[http://wiki.call-cc.org/eggref/4/doodle][doodle]], but with [[http://libsdl.org/][SDL2]] (as it has numerous benefits, including the windows behaving more like other toolkit windows with resizing and whatnot). https://wiki.libsdl.org/MigrationGuide * Lispy grep tool Basically a less snazzy [[http://mlsec.org/joern/][joern]] which parses lispy languages (with support for archives by using the great [[http://libarchive.org/][libarchive]]), uses a query language (maybe graph-style or something simpler?) and doesn't require a database server. - https://github.com/fullstackio/cq (very simple query language for js) - https://github.com/hchasestevens/astpath (xpath for python) An alternative to graph databases is using a triple store. Allegro is a proprietary CL implementation of these, Redland is a free one with a C API. * Fuzzy matcher That would be nice to have as basis for fuzzy completion inside Emacs, though [[https://github.com/Fuco1/yafmp][yafmp]] might be good enough (as it is very new though it's still got the classic plethora of C bugs...). * Self-hosting [[http://wiki.call-cc.org/eggref/4/spock][spock]] and interpreter #+BEGIN_SRC I've been looking at http://ceaude.twoticketsplease.de/js-lisps.html thanks to #scheme and was wondering whether spock got an interpreter by now wasamasa: doesn't look like it DerGuteMoritz: would it be a worthwhile goal to pursue? I think that would allow it to become self-hosted indeed well, not necessarily the only way something clojurescript hasn't managed yet :P but a worthwhile one heh the reason why I'm asking is because ever since getting started with emacs I really like starting out in an interpreter first which works well enough in `csi` (save some... interesting bugs) an on-the-fly compiler is also an option might be possible to conjure something like that for spock already so, if one would keep feeding lines of input into that compiler form, that might suffice? sure "eval is not supported." pseudo-js: eval(popen("chicken-spock", "(some-scheme-expression)").read()) (also, pseudo chickne-spock interface, no idea whether it can be called like that) *chicken-spock #+END_SRC * Linter - =csc -ASM stoll.scm= - =csc -debug analyze-only stoll.scm= - Either combine both kinds of output or figure out how to get line numbers into the former http://wiki.call-cc.org/chicken-internal-structure#the-analysis-database * Write a dedicated Emacs mode See http://code.call-cc.org/cgi-bin/gitweb.cgi?p=chicken-core.git;a=blob;f=misc/chicken.el;hb=HEAD * Pastebin - paste.brause.cc - put a file in a specific location (watched by inotify) and get it copied to an uniquely named file - copy UI from ix.io/sprunge.us (minus the part of line numbers being copyable) - allow highlighting with language via pygments - allow highlighting line/range * DONE inotify egg - see https://github.com/xlevus/chicken-stuff/blob/master/inotify.scm - learn how callbacks would work * DONE GIF - write giflib C code - study other wrappers - write giflib wrapper - write imlib interface - redo cssfuscator option parsing: http://api.call-cc.org/doc/getopt-long https://bitbucket.org/ckeen/pee/src/54dea32f4471a500d288579e9ac4596f51d92255/pee.scm?at=master&fileviewer=file-view-default * DONE GUI - https://github.com/vurtun/zahnrad - this could be cool if it were usable from CHICKEN... - felix would be interested in any findings and comparisons to, say, tcl/tk: http://www.call-with-current-continuation.org/ma * ZNC - I'd like having a queriable (SQLite) database - One approach would be watching files grow and adding their new content to it - The other one to just write a ZNC module logging new stuff into the database - Either way I'd need to deal with old data first - Once that's done, an UI for querying would be useful, maybe even something on the web which supports predefined queries (like, highlights, project requests, queries, work stuff, etc.) * nginx traffic logs - something is eating up a few gigabytes of transmitted traffic each month - analysis of logs should allow reconstruction by figuring out file sizes and amounts and graphing these * DONE SRFI-105 (infix syntax) https://code.dieggsy.com/srfi-105/ * Interesting gazette episodes ** #9 - chicken-doc http://gazette.call-cc.org/issues/9.html ** #11 - autocompile http://gazette.call-cc.org/issues/11.html ** #16 - modules http://gazette.call-cc.org/issues/16.html ** #17 - slime http://gazette.call-cc.org/issues/17.html ** #18 - exception handling http://gazette.call-cc.org/issues/18.html * Parsing mboxes for fun and profit ftp://lists.gnu.org/emacs-devel/ http://wiki.call-cc.org/eggref/4/mbox http://userguide.icu-project.org/boundaryanalysis#TOC-Sentence-Boundary Purpose: Getting random emacs-devel quotes or markov-chain quotes. Problems: - Removing blockquotes (RMS has a very unusual style), attachments, signatures - Detecting sentences Alternatively: Search debbugs for reports with patches and check how many of these are closed/open https://lists.gnu.org/archive/html/bug-gnu-emacs/2016-02/threads.html * Write a tool for c4 remote control See http://autoc4/mate/ and https://github.com/Gordin/c4-mate - List all the names - Search for an user - Alter your own balance - Transfer money to someone else (- Alter someone else's balance) * Experiment with 9P as API - http://wiki.call-cc.org/eggref/4/9p * qq Port bb to CHICKEN (bb as name is already taken by the fltk wrapper egg) * MELPA - Alternative MELPA interface - Define an API for paginated package list, package details, etc. - Make it fast - Maybe extend it to all archives? * MELPA Stable ** Design - http://python3wos.appspot.com/ - http://py3readiness.org/ ** Naming - ms-nss.brause.cc - MELPA not-so-stable - ms-wos.brause.cc - MELPA Stable - Wall of Shame - ms-ready.brause.cc - MELPA Stable Readyness ** Idea - Display MELPA Stable packages - Highlight installable ones green and the others red - Sortable and pagination and toggling dependency view and stuff - A "MS Ready" badge to put on a package that can be safely installed? * Twitter Bot - Reuse SUPREMEGENTLEMAN (with Elliot Rodger + X?) - Alternatively/additionally make one based on John[Lisbeth] and classic buddhist texts, maybe erowid - Implement Markov - https://github.com/n3mo/clucker/blob/master/clucker.scm <- missing writers - https://dev.twitter.com/rest/reference/post/statuses/update - http://wiki.call-cc.org/eggref/4/rest-bind * Write my own text editor ** Names - RAGE (RAGE Ain't GNU Emacs) - ELLE (ELLE Looks Like Emacs) - TEM (TEM exasperates me) <- add undertale easter egg ** Design - Modal editing - Entirely written in Scheme ** Runtime extensibility This could be tricky (or not). Time to write a PoC... - load works on Scheme files, compiled libraries and input ports (which allows loading from a string) - Write program that defines a function, allow redefining it at runtime, check whether redefined function behaves differently, time performance differences - What about modules/namespaces/other separation? ** Basis - SDL2, self-made widgets and pango? * Write another text editor - Goal: How well does 9p work for configuration? - http://wiki.call-cc.org/eggref/4/9p * DONE EPUB viewer - solved with the webkit egg! - feature: double page spread? - feature: progress indicator (current chapter / total chapters) - feature: vim-style navigation (by reimplementing existing navigation) - feature: outline view (see ncx for that and transformation to suitable HTML) - bug: flash of styled content (solvable by preprocessing) - bug: sometimes the mimetypes file is unreadable due to permissions being wrong - wishlist: write libzip binding for not depending on unzip, inspect basics for validation, extract files when everything is ok to /tmp * Jamming station A project with Vim-like keybindings for synthesizing and playing music. Ideally a custom thing written with SDL2 and its mixing support. Alternatively go for the direction of [[https://github.com/ctford/klangmeister][klangmeister]] and use the webkit egg and webaudio... - Synthesize some analog chip sound (SID?) - Provide it as preset, maybe others (like the NES, GB, Genesis, whatever else chiptune artists use) - Allow playing with that preset on the keyboard or via MIDI/OSC (for instrument/automation support) - Write sdl2_mixer or [[http://libsound.io/][libsoundio]] or [[https://xiph.org/ao/doc/][libao]] bindings if no SDL2 (what else then, GLFW or maybe even one of my own GUI bindings?) - Allow recording what you've played and sequencing your output (not sure whether sequencer/tracker-style...), ideally with Vim-style bindings if the interface is going to be textual * Implement a C-style printf - no idea about the name (tarmoff?) - steal semantics from a simple libc, like musl - check SRFI-28 and SRFI-48 (and eformat?) for implementation hints * Porting old eggs - aalib - syntax-case (for fame?) - eprintf/eformat * Writing a meme generator with imlib2/cairo * Writing an userbar generator with imlib2/cairo http://www.userbars.be/resources http://images.google.de/imgres?imgurl=http%3A%2F%2Ffindicons.com%2Ffiles%2Ficons%2F2807%2Fmetronome%2F128%2Ffirefox.png&imgrefurl=http%3A%2F%2Ffindicons.com%2Fsearch%2Ffirefox%2F5&h=128&w=128&tbnid=RWfMxjdzIvidKM%3A&docid=gfIDnCoopxMOVM&hl=en&ei=7MN1V43eGsvXgAb0iqLYBg&tbm=isch&iact=rc&uact=3&dur=533&page=1&start=0&ndsp=37&ved=0ahUKEwiNhLqmi9HNAhXLK8AKHXSFCGsQMwhjKCAwIA&safe=images&bih=865&biw=1440 * Write blog post on combining pango and cairo https://dthompson.us/font-rendering-in-opengl-with-pango-and-cairo.html * Write blog post on combining sdl2 and cairo - first step: using common pixel format, then render with cairo on sdl2 texture - apparently both have rgb16_565/rgb565, rgb24 and argb32/argb8888 - https://www.cairographics.org/SDL/ - http://stackoverflow.com/questions/24316393/can-cairo-use-sdl-texture-as-a-render-target * Write blog post on combining glfw3 and nanovg - https://www.upyum.com/cgit.cgi/poulexagone/commit/?id=1567b1df26999275c48bc6e65669d2828f077cac * Write a irregex visualizer Not sure whether to console (with fmt?), a web thing (with spock?) or with emacs * Blog post on REBOL and GUI - rebol3 doesn't support it, red only supports windows, so rebol2 it is... - downloaded from http://www.rebol.com/download-view.html - requires lib32(!) stuff, including xt, xmu, xaw - crashes with http://www.rebol.com/article/0545.html - solved with installing xorg-fonts-type1 - to use these right away, use =xset +fp /usr/share/fonts/Type1= and verify with =xlsfonts | grep courier= - alternatively, just reboot your xorg session and these should be found - execute =rebol= and witness double-free crashes! - alternatively, =./rebol -v= for console * Port cool nuklear/dear imgui stuff - https://github.com/fabioarnold/TwoTriangles * NFO/ASCII/ANSI art viewer http://sixteencolors.net/ http://pelulamu.net/unscii/ * Optimize blog source rendering throughput Currently I'm using =rst2html= which requires pygments for syntax highlighting. Starting a process over and over again takes time (TODO: benchmark whether that's really the bottleneck), perhaps a better solution is needed ** DONE Run =rst2html= code with pyffi egg Just forget about it, that thing isn't even close to bullet-proof. ** TODO Write a persistent process converting stuff I've had some sort of success with communicating by sending a line and receiving output, integrating that into hyde poses some challenges (as it's sending the whole file contents, not just a file name). In other words, I need to think up a better protocol than that. * NES emulator ** Names - boNkErS - erNESto - magNESium - miNEStrone - NEScaline - NEStination - noNsEnSe - TripleNES * GB emulator ** Names - buGBear - GumBall - oGBo - raGBag * Programming in Scheme [0/9] ** TODO Chapter 4: Making Choices [0/1] - [ ] days alive ** TODO Chapter 5: Recursion [0/1] - [ ] random walk ** TODO Chapter 7: Sample Projects II [4/8] - [ ] Color mode - [ ] B/W mode - [ ] Color bias - [ ] Different formulas - [X] Batch drawing - [X] Interactive mode - [X] Combined program doing both - [X] Screenshots in interactive mode creating new files Exercise text: 5. Try other formulas instead of $x^2 + y^2$ as the basis of your test. What happens if you try, say, $x^2 - y^2$? Or $x^3 + y^3$? Or $x^2 + y^2 + |x| + |y|$? 6. Change the =choose-pen-color= procedure so that it's more likely to choose black (as suggested earlier). Suppose, for example, that you truncate $x^2 + y^2$ and take the remainder when divided by 7 instead of 4; and if the result is 3 or less the pen color will be set to 0 (if the result is 4, 5, or 6 we set the pen color to 1, 2, or 3, respectively). How does this change the pictures drawn? ** TODO Chapter 8: Pairs, Lists and Symbols [0/3] - [ ] molecular weight - [ ] DNA translator - [ ] sentence generator ** TODO Chapter 10: Sample Projects III [0/1] - [ ] Who's on first? ** TODO Chapter 12: Procedures [0/3] - [ ] deal cards - [ ] lissajous plotter - [ ] cryptograms ** TODO Chapter 13: Altering Bindings, Altering Projects [0/6] - [ ] turtle - [ ] hangman - [ ] c-curves - [ ] dragon-curves - [ ] slot-machine - [ ] hotel ** TODO Chapter 15: Sample Projects IV [0/1] - [ ] pattern matching ** TODO Chapter 16: A Sampler of Advanced Topics [0/2] - [ ] solitaire - [ ] calendar * DONE Git selfhosting - Bare repository with index.html and some extra git files - https://gist.github.com/joahking/780877 - https://mirrors.edge.kernel.org/pub/software/scm/git/docs/user-manual.html#public-repositories * TODO Image optimization for manga Several interesting constraints here: - Detect whether optimization is worth it - Estimate how much could be saved - Use below settings for conversion (via IM? OIIO?) https://mangadex.org/thread/7214/1/#post_1228151 https://www.insidescanlation.com/etc/how-to-edit-manga-with-photoshop/rawr/editguide/3