Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c87efb9b08 | ||
![]() |
6eed11bb57 | ||
![]() |
0c346043ff | ||
![]() |
0850ab769f | ||
![]() |
9ba22dfbc7 |
|
@ -1,12 +0,0 @@
|
|||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get -y -qq install graphviz ghostscript markdown
|
||||
|
||||
pages:
|
||||
stage: deploy
|
||||
script:
|
||||
- make
|
||||
- if test -e public; then mv public public.old; fi && mv artifacts public
|
||||
artifacts:
|
||||
paths:
|
||||
- public/
|
|
@ -1,13 +1,6 @@
|
|||
language: c
|
||||
sudo: false
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- graphviz
|
||||
- ghostscript
|
||||
- markdown
|
||||
|
||||
# TODO: don't overwrite artifacts.
|
||||
script:
|
||||
- make
|
||||
|
|
45
Makefile
45
Makefile
|
@ -1,42 +1,17 @@
|
|||
all: artifacts/deps.svg artifacts/deps.png artifacts/deps.pdf artifacts/index.html artifacts/references/index.html micro-scheme/test-result
|
||||
all: deps.svg deps.png deps.pdf
|
||||
|
||||
deps.dot: deps.sh
|
||||
mkdir -p $$(dirname $@)
|
||||
sh $< > $@
|
||||
sh $< > $@
|
||||
|
||||
artifacts/deps.svg: deps.dot Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
dot -Tsvg $< > $@
|
||||
deps.svg: deps.dot Makefile
|
||||
dot -Tsvg $< > $@
|
||||
|
||||
artifacts/deps.png: deps.dot Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
dot -Tpng $< > $@
|
||||
deps.png: deps.dot Makefile
|
||||
dot -Tpng $< > $@
|
||||
|
||||
artifacts/deps.pdf: deps.dot Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
dot -Tpdf $< > $@
|
||||
deps.ps: deps.dot Makefile
|
||||
dot -Tpng $< > $@
|
||||
|
||||
artifacts/index.html: doc-src/index.html artifacts/style.css artifacts/deps.svg artifacts/deps.png artifacts/deps.pdf artifacts/references/index.html artifacts/open-tasks/index.html Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
cp doc-src/index.html $@
|
||||
deps.pdf: deps.ps Makefile
|
||||
ps2pdf $< $@
|
||||
|
||||
artifacts/references/index.html: references.md artifacts/references/style.css Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
doc-src/markdown2html.sh $< "References" > $@
|
||||
|
||||
artifacts/style.css: doc-src/style.css Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
cp $< $@
|
||||
|
||||
artifacts/references/style.css: doc-src/style.css Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
cp $< $@
|
||||
|
||||
micro-scheme/test-result: micro-scheme/nano-scheme.sh Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
sh $< > $@
|
||||
|
||||
.PHONY: artifacts/open-tasks/index.html
|
||||
artifacts/open-tasks/index.html: Makefile
|
||||
mkdir -p $$(dirname $@)
|
||||
tests/to-do/list-to-dos.sh > $@
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
Ma proposition pour un `mek` bien, dites-moi vos opinions sur l'interface. Celle-ci passe autant que possible par le système de fichiers, parce qu'un `mek` bien sait parler aux files.
|
||||
|
||||
Problems solved:
|
||||
* Forgotten dependencies: build in isolated environment
|
||||
* Reactive builds (auto-rebuild): mek watch
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>{{{project-name}}}</title>
|
||||
<link type="text/css" rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>{{{project-name}}}</h1>
|
||||
|
||||
<ul>
|
||||
<li><a href="deps.svg">Dependency graph</a> with work-in-progress indications (<a href="deps.png">PNG</a> and <a href="deps.pdf">PDF</a> versions)</li>
|
||||
<li><a href="references/index.html">References</a></li>
|
||||
<li><a href="open-tasks/index.html">Open tasks</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
|
@ -1,22 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
if test $# -ne 2; then
|
||||
printf %s\\n 'Usage: path/to/markdown2html.sh file.md "Page title"'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>$2</title>
|
||||
<link type="text/css" rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
markdown "$1" | sed -e 's/^/ /'
|
||||
cat <<'EOF'
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
|
@ -1,94 +0,0 @@
|
|||
html {
|
||||
background: #eee;
|
||||
padding: 0 .5em;
|
||||
}
|
||||
|
||||
body {
|
||||
background: white;
|
||||
border: thick solid #ddd;
|
||||
border-radius: 2em;
|
||||
padding: 0.5em 2em 1.5em;
|
||||
max-width: 40em;
|
||||
margin: 2em auto;
|
||||
font-family: Helvetica,Arial,sans-serif;
|
||||
font-size: 120%;
|
||||
line-height: 1.3em;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
code {
|
||||
color: #04c;
|
||||
background: #eee;
|
||||
padding: 0.1em 0.3em;
|
||||
}
|
||||
|
||||
input, select {
|
||||
padding: 0.3em !important;
|
||||
}
|
||||
|
||||
pre em {
|
||||
color: red;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
kbd {
|
||||
color: #444;
|
||||
background-color: aliceblue;
|
||||
border: thin solid gray;
|
||||
border-radius: .5ex;
|
||||
padding-left: .5ex;
|
||||
padding-right: .5ex;
|
||||
}
|
||||
|
||||
pre kbd {
|
||||
color: #04c;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
padding-left: initial;
|
||||
padding-right: initial;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
background: #eee;
|
||||
border: thin solid #ccc;
|
||||
padding: .5em;
|
||||
border-radius: .5em;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1em 25%;
|
||||
height: .35ex;
|
||||
color: #aaa;
|
||||
background-color: #aaa;
|
||||
border: none;
|
||||
border-radius: .175ex;
|
||||
}
|
||||
|
||||
/* TODO: use a technique like tinytypo's to change the quotes based on the language?
|
||||
* https://github.com/tetue/tinytypo/blob/5f7411746c8c4d634ac8cd14c730b86f4ffd1813/css/typo.css#L397
|
||||
*/
|
||||
blockquote {
|
||||
border-left: 0.85ex solid #ccc;
|
||||
padding: 0.8ex 1ex;
|
||||
background: #f0f0f0;
|
||||
margin: 1em 2em;
|
||||
}
|
||||
|
||||
/* An <ul> appearing at the end of a blockquote has too much vertical space following it. */
|
||||
ul:last-child {
|
||||
margin-bottom: .25ex
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
max-height: 100vh;
|
||||
}
|
||||
|
||||
li > img, li > a > img {
|
||||
vertical-align: top;
|
||||
}
|
|
@ -38,9 +38,9 @@
|
|||
# N null "_"
|
||||
# F free cell ptr
|
||||
# I integer int
|
||||
# Y symbol octal
|
||||
# Y symbol hex
|
||||
#
|
||||
# Note: octal strings must not contain any spaces.
|
||||
# Note: hex strings must not contain any spaces.
|
||||
|
||||
h=0
|
||||
s=0
|
||||
|
@ -97,7 +97,7 @@ debug_print() {
|
|||
elif test $a = Y; then
|
||||
if $2; then printf %s '.'; fi
|
||||
heap_get_val $1
|
||||
printf \\$a
|
||||
printf %s $a | xxd -ps -r
|
||||
if $2; then printf %s ')'; fi
|
||||
else
|
||||
if $2; then printf %s '.'; fi
|
||||
|
@ -110,86 +110,21 @@ debug_print() {
|
|||
fi
|
||||
}
|
||||
|
||||
eval_scheme() {
|
||||
local callee ptr result
|
||||
heap_get_type $1
|
||||
if test $a = P; then
|
||||
heap_get_val $1
|
||||
# TDODO: use a stack
|
||||
echo h=$h
|
||||
heap_sbrk; heap_set_pair $h P $a $h;
|
||||
echo h=$h
|
||||
callee=$a
|
||||
echo -n callee=
|
||||
debug_print $callee false
|
||||
echo
|
||||
# compute the arguments
|
||||
a=P
|
||||
heap_get_cdr $1
|
||||
ptr=$a
|
||||
heap_get_type $ptr
|
||||
echo cdr1=$ptr type=$a
|
||||
while test "$a" != N; do
|
||||
heap_get_val $ptr
|
||||
echo val=$a
|
||||
eval_scheme $a
|
||||
# TODO: push on a stack
|
||||
echo h=$h
|
||||
heap_sbrk; heap_set_pair $h P $a $h;
|
||||
echo h=$h
|
||||
result=$a
|
||||
echo result=$result
|
||||
heap_get_cdr $ptr
|
||||
ptr=$a
|
||||
heap_get_type $ptr
|
||||
echo cdr=$ptr type=$a
|
||||
a=N
|
||||
done
|
||||
# TODO: this assumes that the callee is a symbol.
|
||||
heap_get_val $callee
|
||||
echo callee====$callee
|
||||
echo callee----$a
|
||||
case $a in
|
||||
# octal for "r"
|
||||
162) echo READ
|
||||
# fake read (always returns "h", soon to be "hello"!)
|
||||
a=150;; # TODO: should be some-input | od -v -A n -t x1 | read -n 1 a
|
||||
# octal for "w"
|
||||
167) echo WRITE: $result
|
||||
printf \\$result >> output;; # TODO: should use octal, \x is not portable.
|
||||
*) echo TODO_OR_ERROR
|
||||
a=42;;
|
||||
esac
|
||||
else
|
||||
echo TODO_OR_ERROR
|
||||
a=42
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
# printf '(w((lxx)r))' \
|
||||
# printf '(r)' \
|
||||
printf '(w(r))' \
|
||||
| od -v -A n -t o1 \
|
||||
printf '(w((lxx)r))' \
|
||||
| od -v -A n -t x1 \
|
||||
| sed -e 's/^ //' \
|
||||
| tr ' ' \\n \
|
||||
| (while read c; do
|
||||
echo lex:$c
|
||||
case "$c" in
|
||||
# octal for "("
|
||||
050) s=$(($s+1)); eval s$s=M ;;
|
||||
# octal for ")"
|
||||
051) stack_debug; rlist; stack_debug ;;
|
||||
28) s=$(($s+1)); eval s$s=M ;;
|
||||
29) stack_debug; rlist; stack_debug ;;
|
||||
*) heap_sbrk; heap_set $h Y $c; s=$(($s+1)); eval s$s=$h ;;
|
||||
esac
|
||||
done
|
||||
heap_debug
|
||||
echo
|
||||
to_eval=$h
|
||||
heap_sbrk; heap_set $h N _
|
||||
eval_scheme $to_eval
|
||||
echo
|
||||
debug_print $to_eval false)
|
||||
debug_print $h false)
|
||||
}
|
||||
|
||||
if true; then main; exit $?; fi
|
||||
|
|
106
references.md
106
references.md
|
@ -1,119 +1,21 @@
|
|||
# Multimedia software
|
||||
|
||||
* [Dorling Kindersley Multimedia The Complete User-Friendly Guide to the Internet, World Wide Web, DVDs, Virtual Reality, CD-ROMs and 3D Games](https://isbnsearch.com/isbn/9780751305418).
|
||||
ISBN-13: 978-0751305418, ISBN-10: 0751305413
|
||||
* [9780751305418](https://isbnsearch.com/isbn/9780751305418) Dorling Kindersley Multimedia The Complete User-Friendly Guide to the Internet, World Wide Web, DVDs, Virtual Reality, CD-ROMs and 3D Games
|
||||
|
||||
This is an overview of the professions and techniques involved in the creation of interactive multimedia software. It fits well as a welcome guide for new employes, to let them know what the other professions are doing in the company, or as a pamhplet for students interested in joining a school training them for these professions.
|
||||
|
||||
# User interface
|
||||
|
||||
* The Humane interface Jeff Raskin
|
||||
* [DocumentDefinitions](https://wiki.c2.com/?DocumentDefinitions), some definitions related to document-based interfaces, on the [C2 WikiWikiWeb](https://wiki.c2.com)
|
||||
* [ZoomableUserInterface](https://wiki.c2.com/?ZoomableUserInterface), on the [C2 WikiWikiWeb](https://wiki.c2.com)
|
||||
|
||||
# Software engineering best practices
|
||||
|
||||
* [Software Engineer's Reference Book](https://isbnsearch.com/isbn/9780750608138),
|
||||
John McDermid, 1992. ISBN-13: 978-0750608138, ISBN-10: 0750608137
|
||||
|
||||
This is a compilation of surveys written by people in the fields of
|
||||
testing, systems design, and so on. Each survey describes the
|
||||
practices and techniques used in that field, and include a rich
|
||||
bibliography
|
||||
|
||||
# Programming practices (human-human interactions)
|
||||
|
||||
* The psychology of computer programming silver anniversary edition
|
||||
|
||||
# Hardware
|
||||
|
||||
## CPU and integrated circuits
|
||||
|
||||
* Wikipedia's illustration of a [NAND gate's physical layout](https://en.wikipedia.org/wiki/CMOS#Example:_NAND_gate_in_physical_layout) clearly shows how NMOS and PMOS transistors are created on a silicon substrate, as well as a schematic representation of the resulting layers. Page visited on 2019-03-12.
|
||||
* Some people have built small integrated circuits (e.g. inverters) at home, using simple equipment: [Jeri Ellsworth](https://hackaday.com/2010/03/10/jeri-makes-integrated-circuits/), [HomeCMOS](https://hackaday.com/2012/07/09/make-your-own-integrated-circuits-at-home/).
|
||||
* [visual6502.org](http://visual6502.org/), a sumulation of the 6502 CPU based on photos of the silicon die. It features an online zoomable view of the CPU with different colors for the logic states, in which wires and transistors blink as the CPU executes instructions.
|
||||
|
||||
## Keyboard
|
||||
|
||||
* N-shot injection keycaps
|
||||
* N-shot injection keycaps:
|
||||
* [](https://imgur.com/a/OhRd4)
|
||||
* [The best mechanical keycaps](https://blog.wooting.nl/what-are-the-best-mechanical-keyboard-keycaps), a presentation of various properties of keycaps
|
||||
* [](https://deskthority.net/viewtopic.php?p=80654#p80654)
|
||||
* Planck keyboards have only four rows. The first row is usually activated with the thumbs, and all other keys are at most 1 key away from the home row. [](https://i.imgur.com/cNipMSc.png)
|
||||
* [](https://deskauthority.net/viewtopic.php?p=80654#p80654)
|
||||
* Planck [](https://i.imgur.com/cNipMSc.png)
|
||||
* [WASD Keyboards](https://www.wasdkeyboards.com/) does full-color print on keycaps. Examples:
|
||||
[](https://i.imgur.com/F3lgqHJ.jpg)
|
||||
[](https://wasdkeyboards.tumblr.com/image/120541521288)
|
||||
[](https://imgur.com/a/DpQHW)
|
||||
* Manufacturers and sellers:
|
||||
* [Massdrop](https://www.massdrop.com/) gathers enthusiasts to buy medium-sized batches of random items (including keybords) to reduce the costs of small series that would not be commercialy viaable otherwise.
|
||||
* [Relegendable keycaps](https://pimpmykeyboard.zendesk.com/hc/en-us/articles/204416135-What-are-Relegendable-Keycaps-), a paper label can be placed below a transparent snap-on top. [Other source](https://www.fentek-ind.com/keys.htm#relegend).
|
||||
[](https://pimpmykeyboard.zendesk.com/hc/en-us/articles/204416135-What-are-Relegendable-Keycaps-)
|
||||
* [Apple Touch Bar](https://support.apple.com/en-us/HT207055)
|
||||
* [Optimus Maximus](https://www.artlebedev.com/optimus/maximus/) keyboard has OLED screens below the keys, which are transparent, so that the symbols or icons under the keys can be changed.
|
||||
|
||||
## Screen
|
||||
|
||||
* [OLPC display](http://wiki.laptop.org/go/Display#Understanding_the_display_system)
|
||||
|
||||
The OLPC (One Laptop Per Child project) integrates a Pixel Qi
|
||||
screen. This screen uses subpixels (red, green, blue) with a square
|
||||
aspect ratio using a non-traditional layout of the subpixels. It
|
||||
features a reflective higher-resolution black and white display,
|
||||
which works in bright sunlight. Behind that black and white layer,
|
||||
there is a backlit screen with colored pixels. This means that
|
||||
depending on the lighting of the environment and backlight
|
||||
brightness, the color may fade away, but a crisp black and white
|
||||
picture will always be visible. This also allows for reduced power
|
||||
consumption if the backlight is disabled or its brightness reduced.
|
||||
|
||||
# File format standards
|
||||
|
||||
## Used to generate or write files in this project
|
||||
|
||||
* [Polyglot Markup](https://dev.w3.org/html5/html-polyglot/html-polyglot.html), an intersection of valid HTML5 and XHTML (except for the doctype)
|
||||
* [Sending XHTML as text/html Considered Harmful](hixie.ch/advocacy/xhtml) on the subtle differences between XHTML and HTML.
|
||||
* POSIX a.k.a. IEEE Std 1003.1 a.k.a. Open Group Base Specifications Issue 7:
|
||||
* [latest edition](https://pubs.opengroup.org/onlinepubs/9699919799/),
|
||||
* [2017-2018 edition](https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/),
|
||||
* [2016 edition](https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/),
|
||||
* [2013 edition](https://pubs.opengroup.org/onlinepubs/9699919799.2013edition/),
|
||||
* [2008 edition](https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/).
|
||||
* The oldest version of POSIX [(IEEE Std 1003.2-1992)](https://ieeexplore.ieee.org/document/6880751) that we could find is behind a paywall.
|
||||
* The oldest version of the Single Unix® Specification [(Version 1 Document Set UNIX 95)](https://publications.opengroup.org/c43x) that we could find is behind a login wall, but seems free to download.
|
||||
* [GraphViz Reference](https://www.graphviz.org/doc/info/)
|
||||
|
||||
## Used to read files
|
||||
|
||||
# Bootstrap
|
||||
|
||||
Bootstrapping is an important facet of technology. By having a clear
|
||||
path to bootstrap a given branch of science or technology we can
|
||||
explain it in a more synthetic way, implement things in a clean way
|
||||
while getting rid of historical blunders and baseless
|
||||
traditions.
|
||||
|
||||
Having some hindsight on the shortest path to success can give some
|
||||
foresight on the future directions to explore. If the failed paths are
|
||||
also made clear, this foresight might extend to knowing which future
|
||||
directions should likely be avoided.
|
||||
|
||||
The references in this section are not limited to computer-related
|
||||
technologies.
|
||||
|
||||
* [RepStrap](https://www.reprap.org/wiki/Category:RepStrap)
|
||||
|
||||
RepRap is a 3D printer that is capable of replicating most of its
|
||||
parts which are not off-the-shelf.
|
||||
|
||||
RepStrap projects are about creating an initial RepRap without an
|
||||
existing RepRap and without advanced tooling.
|
||||
* [Global Village Construction Set](https://www.opensourcetechnology.org/gvcs/)
|
||||
|
||||
The GVCS aims to design construction kits for 50 industrial machines
|
||||
which would be necessary for a self-sufficient village. Among these
|
||||
are the compressed earth brick press (used to make bricks for
|
||||
buildings), a tractor, a wind turbine, or the Fabrication
|
||||
Construction Set which can be used to build the other machines.
|
||||
* [The Knowledge](https://isbnsearch.com/isbn/9780143127048) How to
|
||||
rebuild our world from scratch, Lewis Dartnell, ISBN-10: 0143127047,
|
||||
ISBN-13: 978-0143127048
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
Check how many tasks have been left aside.
|
||||
|
||||
These tasks are marked with the four consecutive letters T, O, D, O in the source code.
|
||||
|
||||
This tool also looks for instances of F, I, X, M, E and of X, X, X
|
|
@ -1,41 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
escapehtml() {
|
||||
sed -e 's/&/\&/g' \
|
||||
| sed -e 's/</\</g' \
|
||||
| sed -e 's/>/\>/g' \
|
||||
| sed -e 's/"/\"/g'
|
||||
}
|
||||
|
||||
cat <<'EOF'
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>{{{project-name}}}</title>
|
||||
<style>
|
||||
body > ul { display: table; }
|
||||
ul > li { display: table-row; }
|
||||
li > a, li > span { display: table-cell; }
|
||||
li > * + span { padding-left: 1em; }
|
||||
li > a + span { text-align: right; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Open tasks</h1>
|
||||
<ul>
|
||||
EOF
|
||||
|
||||
commit="$(git rev-parse HEAD | escapehtml)"
|
||||
(
|
||||
cd "$(git rev-parse --show-cdup)";
|
||||
git grep -i -n \\\(todo\\\|fixme\\\|xxx\\\)
|
||||
) \
|
||||
| escapehtml \
|
||||
| sed -e 's~^\([^:]*\):\([^:]*\):\(.*\)$~ <li><a href="https://gitlab.com/project-name/project-name/blob/'"$commit"'/\1">\1</a> <span>\2</span> <span>\3</span></li>~'
|
||||
|
||||
cat <<'EOF'
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
|
@ -1,5 +0,0 @@
|
|||
Tests for the web pages.
|
||||
|
||||
* Checks that the pages are valid Polyglot Markup (an HTML5 / XHTML chameleon, TODO link to references)
|
||||
* Uses the W3C validator to check that the pages are valid HTML 5, XHTML 1.0, XHTML 1.1, as well as valid HTML 3.2, HTML 4.0 with the exception of the obvious incompatibilities (doctype and self-closing tags)
|
||||
* Checks that there are no broken links between the pages, and no broken links to external pages.
|
Loading…
Reference in New Issue
Block a user