#+title: Projects #&summary Where all my projects are listed. #& #+license: wtfpl #+startup: showall #&fullpage #&toc * Projects ** Pretty current See [[http://git.metanohi.name]] for a list of (mostly) current projects. #++exec #+BEGIN_SRC python3 top_projs = ( 'indirectassassin', 'magicng', ('suum', 'SUUM', 'Webcomic drawn in the art style of banal naivism', 'http://suum.metanohi.name/'), 'gravnoise', 'hbcht', 'mege', 'aeltei', 'alart', 'shadowloss', 'alp', 'electruth', ('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', 'beepfun', ('ticso', 'Create dynamic functions in C uglily', 'https://gitorious.org/ticso'), 'zebralligator', 'kando', 'bolg', 'pebsaq', 'minmailist', ('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: \ BiBBoB 0.1)", '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 = ( 'dungeoncrawl', 'pumila', 'yelljfish', 'exoskelegram', 'desurveil', 'kvigall', 'forestquest', 'dililatum', 'enigma', '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 = '''\
  • {title} {description}
  • ''' listtemplate = '''\
    {title}
    {description}
    ''' 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("') def listprojs(projs): print("
    ") for name in projs: title, desc, url = getparts(name, True) print(listtemplate.format(url=url, title=title, description=desc)) print('
    ') #+END_SRC ** Featured #++exec #+BEGIN_SRC python boxprojs(top_projs) #+END_SRC #&clear *** Less prominent #++exec #+BEGIN_SRC python listprojs(other_projs) #+END_SRC #+mark: old ** Meh #++exec #+BEGIN_SRC python boxprojs(old_top_projs) #+END_SRC #&clear *** Less prominent #++exec #+BEGIN_SRC python listprojs(other_old_projs) #+END_SRC