metanohi/site/projects/index.org

232 lines
8.3 KiB
Org Mode

#+title: Projects
#&summary
Where all the prominent projects are listed.
#&
#+license: cc0
#+startup: showall
#&fullpage
#&toc
* Projects
These are my projects, new and old.
#++exec
#+BEGIN_SRC python3
top_projs = (
'magicng',
('suum', 'SUUM', 'Webcomic drawn in the art style of <em>banal naivism</em>',
'http://suum.metanohi.name/'),
'gravnoise',
'hbcht',
'mege',
'dungeoncrawl',
'pumila',
'yelljfish',
'exoskelegram',
'desurveil',
'aeltei',
'alart',
'shadowloss',
'alp',
'electruth',
'kvigall',
'forestquest',
'dililatum',
'enigma',
('films', 'nohifilms', "Niels' films", 'http://films.metanohi.name/'),
('nohix', 'nohiX', 'Small web experiments, some of them useful', 'http://nohix.metanohi.name/'),
('natur', "Niels' Nature", 'Watch Niels as he spouts nonsense about nature', 'http://nature.metanohi.name/'),
)
other_projs = (
'luncheon',
'textmation',
('ticso', 'Create dynamic functions in C uglily', 'https://gitorious.org/ticso'),
'sleinlib',
'kando',
'bolg',
'pebsaq',
('drget', 'Get media from Danmarks Radio', 'https://gitorious.org/drget'),
('folketingetmeninger',
'A small Python script to download and show the opinions of the Danish parties',
'http://projects.metanohi.name/misc/folketingetmeninger.py.gz'),
'nanonote',
'totxt',
('pdfsplit', 'A small Python script to split PDF files on a page-basis',
'http://projects.metanohi.name/misc/pdfsplit.tar.gz'),
'dotbox',
'vit',
('raipaw', 'A pseudo-random IPA word generator.',
'http://projects.metanohi.name/misc/raipaw.py.gz'),
('woiwo', 'Find words in words',
'http://projects.metanohi.name/misc/woiwo.py.gz'),
('resistorpair', 'Calculate which standard resistors to use for a specific resistance',
'http://projects.metanohi.name/misc/resistorpair.py.gz'),
'qvikconfig',
'htmlentitiesdecode',
('gadon', 'Creates scary cirle animations reminiscent of heartbeats',
'http://projects.metanohi.name/misc/gadon.tgz'),
('colchs', 'A simple GTK color chooser',
'http://projects.metanohi.name/misc/colchs.tgz'),
('Japanese web apps', 'Javascript/CSS experiments with a theme',
'http://projects.metanohi.name/jap/'),
('wikiaq', 'A quiz system using Wikipedia articles',
'http://projects.metanohi.name/misc/wikiaq-0.1.tar.gz'),
('BiBBoB 0.1.1', "A simple sound wave generator (older versions: \
<a href='http://projects.metanohi.name/misc/bibbob-0.1.tar.gz'>BiBBoB 0.1</a>)",
'http://projects.metanohi.name/misc/bibbob-0.1.1.tar.gz'),
('data2wav', 'Converts all data to sound (and back again)',
'http://projects.metanohi.name/misc/data2wav.tgz'),
('pitivi-smil', "A workaround to make PiTiVi XPTV files get rendered using \
Kino. No support for PiTiVi's more advanced features.",
'http://projects.metanohi.name/misc/pitivi-smil.tgz'),
('googolplex', 'A program that attempts to print one googolplex. \
If saved to a file, this requires 1 googol + 1 bytes.',
'http://projects.metanohi.name/misc/googolplex.c'),
('data2png', 'Save data as a png file, and restore the data from the png file.',
'http://projects.metanohi.name/misc/data2png.tar.gz'),
('stanimate', 'A bash script to aid in the creation of stop motion films.',
'http://projects.metanohi.name/misc/stanimate.gz'),
('mssrnm (mass rename)', 'A bash script to rename a bunch of files into files \
"001.jpg", "002.jpg", "003.jpg", etc.',
'http://projects.metanohi.name/misc/mmsrnm.gz'),
)
old_top_projs = (
'forbi',
'naghni',
'movact',
'noncrawl',
'wordwork',
'simplechat',
('words', 'words', 'Words and sentences. Not a blog.', 'http://words.metanohi.name/'),
('pictures', 'Pictures', 'Pictures uploaded by me', 'http://pictures.metanohi.name/'),
('eonaton', 'Eon Aton', 'An underdeveloped RPG-style JS system and a story', 'http://projects.metanohi.name/eonaton/'),
'zita',
'cln',
('algo', 'Algo', 'A JavaScript window manager', 'http://projects.metanohi.name/algo/'),
'an5w',
('canvas', 'Experimenting with canvas', 'Old HTML canvas element experiments', 'http://projects.metanohi.name/canvas/'),
('bsq', 'Brainy Stickman Quiz', 'Sidescroller/quiz based on the HTML canvas element', 'http://projects.metanohi.name/bsq/'),
('snake', 'JavaScript Snake', 'Arrow keys to move, PageUp and PageDown to adjust speed.', 'http://projects.metanohi.name/snake/'),
('gt3000', 'GT 3000', 'Retro JS mini racing game.', 'http://projects.metanohi.name/gt3000/'),
('sq', "Satan's Quest", 'Retro RPG-style JS minigame. You are Gabruel.', 'http://projects.metanohi.name/sq/'),
('evolution', 'Evolution', 'Notice the intelligence.', 'http://projects.metanohi.name/evolution/'),
('roptoligs', 'roptoligs', 'RPG project with planned modules and games',
'http://roptoligs.metanohi.name/'),
)
other_old_projs = (
'sadbipws',
'bito',
'nalgh',
('Graphical web experiments',
"Some of them'll work, while some of them might crash your browser.",
'http://projects.metanohi.name/x/'),
('cheatbibtex', '''\
Provides an alternative way of dealing with BiBTeX bibliographies. Use BiBLaTeX
instead of cheatbibtex (cheatbibtex isn't that great, while BiBLaTeX is quite
the LaTeX package).''', 'http://projects.metanohi.name/misc/cheatbibtex-0.1.tar.gz'),
('dsktp', 'A JS wm like Algo',
'http://projects.metanohi.name/dsktp/'),
('webCLI', 'A CLI lookalike in JavaScript with XML',
'http://projects.metanohi.name/webcli/'),
'wontofor',
('lapyrint', 'A stupid maze solver. Includes example labyrinths.',
'http://projects.metanohi.name/misc/lapyrint.tar.gz'),
('poemgen', 'A poem generator using Identi.ca blog posts as its source',
'http://projects.metanohi.name/poemgen/'),
('problist', "A newbie's way of programming permutations in Python. Kept here for its funny code and misuse of terms",
'http://projects.metanohi.name/misc/problist.tar.gz'),
('The Life of a Snowman', "Life can be cruel towards snowmen. This is proof.",
'http://projects.metanohi.name/snowman/'),
('Katten Pedro (Pedro the Cat)', "A comic I drew during a vacation in Mallorca.",
'http://projects.metanohi.name/pedro/'),
('Misc.', 'Very old stuff.',
'http://projects.metanohi.name/misc/'),
)
#################################
boxtemplate = '''\
<li>
<a href='{url}' style='background-image: url(img/{name}.png);'>
{title}
</a>
<dfn>{description}</dfn>
</li>
'''
listtemplate = '''\
<dt><a href='{url}'>{title}</a></dt>
<dd>{description}</dd>
'''
def getparts(name, no_name=False):
if isinstance(name, tuple):
if no_name:
title, desc, url = name
else:
name, title, desc, url = name
else:
orgpath = misc.get_org_path(os.path.join(page.pathdir, name))
url = './{name}'.format(name=name)
if orgpath.endswith('index.org'):
url += '/'
a = htmlgen.org_to_abstract(orgpath, isfile=True, only_metadata=True)
title, desc = a.title, a.summary
if no_name:
return title, desc, url
else:
return name, title, desc, url
def boxprojs(projs):
print("<ul class='projectboxes'>")
for name in projs:
name, title, desc, url = getparts(name)
print(boxtemplate.format(name=name, url=url, title=title, description=desc))
print('</ul>')
def listprojs(projs):
print("<dl>")
for name in projs:
title, desc, url = getparts(name, True)
print(listtemplate.format(url=url, title=title, description=desc))
print('</dl>')
#+END_SRC
** Pretty useful and not very buggy
#++exec
#+BEGIN_SRC python
boxprojs(top_projs)
#+END_SRC
#&clear
*** Less prominent
#++exec
#+BEGIN_SRC python
listprojs(other_projs)
#+END_SRC
#+mark: old
** Less useful (and in a few cases a bit more buggy)
#++exec
#+BEGIN_SRC python
boxprojs(old_top_projs)
#+END_SRC
#&clear
*** Less prominent
#++exec
#+BEGIN_SRC python
listprojs(other_old_projs)
#+END_SRC