|
- ---
- 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 <a href="https://mediawiki.org/">MediaWiki</a> wikicode
- - name: earwigbot
- langs: Python
- started: April 2009
- description: A modular robot that edits <a href="https://en.wikipedia.org/">Wikipedia</a> and interacts with people over <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a>, with <a href="https://github.com/earwig/earwigbot-plugins">a separate repository for plugins</a>
- - name: crater
- langs: C + Assembly
- started: March 2015
- description: An emulator for the <a href="https://en.wikipedia.org/wiki/Sega_Game_Gear">Sega Game Gear</a>, with an included <a href="https://en.wikipedia.org/wiki/Zilog_Z80">Z80</a> assembler/disassembler
- - name: copyvios
- langs: Python + Web
- started: July 2009
- description: A <a href="https://tools.wmflabs.org/copyvios">copyright violation detector</a> for Wikipedia articles running on <a href="https://en.wikipedia.org/wiki/Wikipedia:Wikimedia_Cloud_Services">Wikimedia Cloud Services</a>
- - name: bitshift
- langs: Python + SQL + Web
- started: March 2014
- description: A <a href="https://bitshift.benkurtovic.com/">semantic search engine</a> for source code
- others:
- - name: calefaction
- langs: Python + Web
- started: December 2016
- description: A corporation manager and dashboard for <a href="https://www.eveonline.com/">EVE Online</a>
- - name: kgrader
- langs: Ruby
- started: March 2016
- description: A code autograder for student homework submissions
- - name: gravity
- repo: EnacheB/Gravity
- langs: C++
- started: November 2015
- description: A multiplayer top-down orbital space shooter
- - name: tfdclerk
- langs: JavaScript
- started: August 2015
- abandoned: yes
- description: An English Wikipedia <a href="https://en.wikipedia.org/wiki/Wikipedia:User_scripts">user script</a> to automate common <a href="https://en.wikipedia.org/wiki/Wikipedia:Templates_for_discussion">templates for discussion</a> operations, including closures and relisting
- - name: oriadnos
- repo: VjiaoBlack/Oriadnos
- langs: C
- started: May 2014
- description: A 3D maze exploration game written from scratch using matrix manipulation code, <a href="https://en.wikipedia.org/wiki/UV_mapping">UV texture mapping</a>, <a href="https://en.wikipedia.org/wiki/Z-buffering">z-buffering</a>, and simple lighting
- - name: mal-decimal-scores
- langs: JS
- started: May 2014
- description: A Chrome extension that gives you finer control over <a href="https://myanimelist.net">MyAnimeList.net</a> 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 <a href="https://en.wikipedia.org/wiki/Space_Invaders">Space Invaders</a>
- - name: starlorn
- repo: Hypersonic/Starlorn
- langs: Java
- started: May 2013
- description: A <a href="https://en.wikipedia.org/wiki/Shoot_'em_up">shoot 'em up</a> game with a sweet upgrade system and randomized levels
- - name: goldfish
- langs: Java
- started: Jan 2013
- description: A simple <a href="https://en.wikipedia.org/wiki/Conway's_Game_of_Life">Game of Life</a> implementation in Java
- - name: cellar-strider
- repo: Hypersonic/Cellar-Strider
- langs: Python
- started: June 2012
- description: A pseudo-<a href="https://en.wikipedia.org/wiki/Roguelike">roguelike</a> 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 <a href="https://en.wikipedia.org/wiki/Bolo_(video_game)">the classic tank game</a> 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: benkurtovic.com
- host: gitea
- 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 <a href="https://en.wikipedia.org/wiki/Tk_(framework)">Tk</a>-based program that can help you prepare for your music final with randomly-generated listening quizzes
- ---
-
- <p id="bio">I'm a software engineer, <a href="https://en.wikipedia.org/">Wikipedian</a>, and recent graduate of the <a href="https://illinois.edu/">University of Illinois at Urbana–Champaign</a> with a degree in computer science. My interests center on operating systems, distributed computing, and security, but I enjoy working on exciting problems in many areas. You can reach me at <a href="mailto:ben.kurtovic@gmail.com">ben.kurtovic@gmail.com</a>.</p>
- <div id="links">
- <div>GitHub<br /><a href="https://github.com/earwig">earwig</a></div
- ><div>Freenode<br /><a href="https://webchat.freenode.net/?channels=%23%23earwig">Earwig</a></div
- ><div>Wikipedia<br /><a href="https://en.wikipedia.org/wiki/User:The_Earwig">The Earwig</a></div
- ><div>Twitter<br /><a href="https://twitter.com/benkurtovic">@benkurtovic</a></div
- ><div>LinkedIn<br /><a href="https://linkedin.com/in/benkurtovic">benkurtovic</a></div
- ><div>PGP Key<br /><a href="/static/pgpkey.txt"><i class="fa fa-key" title="PGP Key"></i></a> <a href="https://pgp.mit.edu/pks/lookup?search=0x801B6CE29F2999F2&fingerprint=on&op=index">9F2999F2</a></div>
- </div>
- <table id="work">
- <tr>
- <td>
- <h2>Projects</h2>
- <p>A look at what I've been up to for the past several years:</p>
- <h3>Highlights</h3>
- <ul class="work-list">
- {% for project in page.projects["highlights"] %}
- {% include repo.html %}
- {% endfor %}
- </ul>
- <h3>Other work</h3>
- <ul class="work-list">
- {% for project in page.projects["others"] %}
- {% include repo.html %}
- {% endfor %}
- </ul>
- </td>
- <td>
- <h2>Posts</h2>
- <div id="tags">
- Tags:
- {% comment %} Based on code from Christian Specht at https://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: "#" %}
- <span data-tag="{{ items[1] }}" class="tag">{{ items[1] | replace: " ", " " }} <span class="subtitle">({{ items[2] }})</span></span>
- {% endfor %}
- </div>
- <ul id="post-list" class="work-list">
- {% for post in site.posts %}
- <li data-tags="{{ post.tags | join: "|" }}">{{ post.date | date: "%b %-d, %Y" }}: <a class="underlined" href="{{ post.url }}">{{ post.title }}</a><br /><span class="subtitle">{{ post.description }}<br />{{ post.tags | join: ", " }} · {% if post.draft %}<span class="draft">Draft</span>{% else %}<a href="{{ post.url }}#disqus_thread" data-disqus-identifier="{{ post.id }}"></a>{% endif %}</span></li>
- {% endfor %}
- <li id="null-post" data-tags="" style="display: none;"><i>No posts with these tags</i></li>
- </ul>
- </td>
- </tr>
- </table>
- <script>
- var disqus_shortname = 'earwig';
- var disqus_title = '{{ page.title }}';
- var disqus_url = '{{ site.url }}{{ page.url }}';
- var disqus_developer = 1;
- (function () {
- var s = document.createElement('script'); s.async = true;
- s.type = 'text/javascript';
- s.src = '//' + disqus_shortname + '.disqus.com/count.js';
- (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
- }());
- </script>
|