--- layout: base title: Home projects: highlights: - name: mwparserfromhell langs: Python + C started: May 2012 description: An easy-to-use and outrageously powerful Python parser for MediaWiki wikicode - name: earwigbot langs: Python started: April 2009 description: A modular robot that edits Wikipedia and interacts with people over IRC, with a separate repository for plugins - name: bitshift langs: Python + SQL + Web started: March 2014 description: A semantic search engine for source code - name: copyvios langs: Python + Web started: July 2009 description: A copyright violation detector for Wikipedia articles running on Wikimedia Labs others: - name: oriadnos repo: VjiaoBlack/Oriadnos langs: C started: May 2014 description: A 3D maze exploration game written from scratch using matrix manipulation code, UV texture mapping, z-buffering, and simple lighting - name: mal-decimal-scores langs: JS started: May 2014 description: A Chrome extension that gives you finer control over MyAnimeList.net scores - name: BAJA repo: stuycs-softdev-fall-2013/proj3-6-BAJA langs: Python + Web started: Jan 2014 description: A hacking game featuring multiple simulated websites, tied together by messages sent to the player from a mysterious individual using a fake email client - name: omnithinker repo: stuycs-softdev-fall-2013/proj2-pd6-04-omnithinker langs: Python + Web started: Nov 2013 description: An online brainstorming tool that displays relevant information from the web in a sidebar - name: databanks repo: VjiaoBlack/databanks langs: C started: Nov 2013 description: A simple database with a terminal-based interface for notekeeping - name: terminvaders repo: VjiaoBlack/terminvaders langs: C started: Oct 2013 description: A terminal-based multiplayer arcade game with a client–server model inspired by Space Invaders - name: starlorn repo: Hypersonic/Starlorn langs: Java started: May 2013 description: A shoot 'em up game with a sweet upgrade system and randomized levels - name: goldfish langs: Java started: Jan 2013 description: A simple Game of Life implementation in Java - name: cellar-strider repo: Hypersonic/Cellar-Strider langs: Python started: June 2012 description: A pseudo-roguelike game with a YAML-based level system - name: func-smash langs: Python started: April 2012 description: A library that tries to generate random Python functions using Markov chains - name: lobo langs: NetLogo started: Dec 2011 description: 'Logo Bolo: a re-envisioning of the classic tank game by Stuart Cheshire in NetLogo' - name: git-repo-updater langs: Python started: June 2011 description: A console script that allows you to easily pull to multiple git repositories at once - name: earwig.github.io langs: Web started: June 2011 description: The site you're viewing right now in source code form - name: music-quizzer langs: Python started: May 2011 description: A Tk-based program that can help you prepare for your music final with randomly-generated listening quizzes ---

I'm a software developer and Wikipedian currently studying computer science at the University of Illinois at Urbana–Champaign. My work mostly focuses on text parsing and analysis, but I'm also interested in programming language theory and algorithm design. Want to chat? Contact me at ben.kurtovic@gmail.com.

Projects

A look at what I've been up to for the past few years:

Highlights

    {% for project in page.projects["highlights"] %}
  • {{ project.name }} ({{ project.langs }} // started {{ project.started }})
    {{ project.description }}
  • {% endfor %}

Other work

    {% for project in page.projects["others"] %}
  • {{ project.name }} ({{ project.langs }} // started {{ project.started }})
    {{ project.description }}
  • {% endfor %}

Posts

Tags: {% comment %} Based on code from Christian Specht at http://stackoverflow.com/a/24744306/2712951 {% endcomment %} {% capture tags %}{% for tag in site.tags %}{{ tag[1].size | plus: 10000 }}{{ tag[1].first.date | date: "%Y%m%d" }}#{{ tag[0] }}#{{ tag[1].size }}{% unless forloop.last %}|{% endunless %}{% endfor %}{% endcapture %} {% assign sorted = tags | split: "|" | sort | reverse %} {% for tag in sorted %} {% assign items = tag | split: "#" %} {{ items[1] | replace: " ", " " }} ({{ items[2] }}) {% endfor %}
    {% for post in site.posts %}
  • {{ post.date | date: "%b %-d, %Y" }}: {{ post.title }}
    {{ post.description }}
    {{ post.tags | join: ", " }} · {% if post.draft %}Draft{% else %}{% endif %}
  • {% endfor %}