diff options
Diffstat (limited to 'public/what-im-working-on-fall-2014.html')
-rw-r--r-- | public/what-im-working-on-fall-2014.html | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/public/what-im-working-on-fall-2014.html b/public/what-im-working-on-fall-2014.html new file mode 100644 index 0000000..efc293a --- /dev/null +++ b/public/what-im-working-on-fall-2014.html @@ -0,0 +1,156 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>What I'm working on (Fall 2014) — Luke T. Shumaker</title> + <link rel="stylesheet" href="assets/style.css"> + <link rel="alternate" type="application/atom+xml" href="./index.atom" name="web log entries"/> +</head> +<body> +<header><a href="/">Luke T. Shumaker</a> » <a href=/blog>blog</a> » what-im-working-on-fall-2014</header> +<article> +<h1 id="what-im-working-on-fall-2014">What I’m working on (Fall +2014)</h1> +<p>I realized today that I haven’t updated my log in a while, and I +don’t have any “finished” stuff to show off right now, but I should just +talk about all the cool stuff I’m working on right now.</p> +<h2 id="static-parsing-of-subshells">Static parsing of subshells</h2> +<p>Last year I wrote a shell (for my Systems Programming class); +however, I went above-and-beyond and added some really novel features. +In my opinion, the most significant is that it parses arbitrarily deep +subshells in one pass, instead of deferring them until execution. No +shell that I know of does this.</p> +<p>At first this sounds like a really difficult, but minor feature. +Until you think about scripting, and maintenance of those scripts. Being +able to do a full syntax check of a script is <em>crucial</em> for +long-term maintenance, yet it’s something that is missing from every +major shell. I’d love to get this code merged into bash. It would be +incredibly useful for <a +href="/git/mirror/parabola/packages/libretools.git">some software I +maintain</a>.</p> +<p>Anyway, I’m trying to publish this code, but because of a recent +kerfuffle with a student publishing all of his projects on the web (and +other students trying to pass it off as their own), I’m being cautious +with this and making sure Purdue is alright with what I’m putting +online.</p> +<h2 id="stateless-user-configuration-for-pamnss"><a +href="https://lukeshu.com/git/mirror/parabola/hackers.git/log/?h=lukeshu/restructure">Stateless +user configuration for PAM/NSS</a></h2> +<p>Parabola GNU/Linux-libre users know that over this summer, we had a +<em>mess</em> with server outages. One of the servers is still out (due +to things out of our control), and we don’t have some of the data on it +(because volunteer developers are terrible about back-ups, +apparently).</p> +<p>This has caused us to look at how we manage our servers, back-ups, +and several other things.</p> +<p>One thing that I’ve taken on as my pet project is making sure that if +a server goes down, or we need to migrate (for example, Jon is telling +us that he wants us to hurry up and switch to the new 64 bit hardware so +he can turn off the 32 bit box), we can spin up a new server from +scratch pretty easily. Part of that is making configurations stateless, +and dynamic based on external data; having data be located in one place +instead of duplicated across 12 config files and 3 databases… on the +same box.</p> +<p>Right now, that’s looking like some custom software interfacing with +OpenLDAP and OpenSSH via sockets (OpenLDAP being a middle-man between us +and PAM (Linux) and NSS (libc)). However, the OpenLDAP documentation is… +inconsistent and frustrating. I might end up hacking up the LDAP modules +for NSS and PAM to talk to our system directly, and cut OpenLDAP out of +the picture. We’ll see!</p> +<p>PS: Pablo says that tomorrow we should be getting out-of-band access +to the drive of the server that is down, so that we can finally restore +those services on a different server.</p> +<h2 id="project-leaguer"><a +href="https://lukeshu.com/git/mirror/leaguer.git/">Project +Leaguer</a></h2> +<p>Last year, some friends and I began writing some “eSports tournament +management software”, primarily targeting League of Legends (though it +has a module system that will allow it to support tons of different data +sources). We mostly got it done last semester, but it had some rough +spots and sharp edges we need to work out. Because we were all out of +communication for the summer, we didn’t work on it very much (but we did +a little!). It’s weird that I care about this, because I’m not a gamer. +Huh, I guess coding with friends is just fun.</p> +<p>Anyway, this year, <a +href="https://github.com/AndrewMurrell">Andrew</a>, <a +href="https://github.com/DavisLWebb">Davis</a>, and I are planning to +get it to a polished state by the end of the semester. We could probably +do it faster, but we’d all also like to focus on classes and other +projects a little more.</p> +<h2 id="c1">C+=1</h2> +<p>People tend to lump C and C++ together, which upsets me, because I +love C, but have a dislike for C++. That’s not to say that C++ is +entirely bad; it has some good features. My “favorite” code is actually +code that is basically C, but takes advantage of a couple C++ features, +while still being idiomatic C, not C++.</p> +<p>Anyway, with the perspective of history (what worked and what +didn’t), and a slightly opinionated view on language design (I’m pretty +much a Rob Pike fan-boy), I thought I’d try to tackle “object-oriented +C” with roughly the same design criteria as Stroustrup had when +designing C++. I’m calling mine C+=1, for obvious reasons.</p> +<p>I haven’t published anything yet, because calling it “working” would +be stretching the truth. But I am using it for my assignments in CS 334 +(Intro to Graphics), so it should move along fairly quickly, as my grade +depends on it.</p> +<p>I’m not taking it too seriously; I don’t expect it to be much more +than a toy language, but it is an excuse to dive into the GCC +internals.</p> +<h2 id="projects-that-ive-put-on-the-back-burner">Projects that I’ve put +on the back-burner</h2> +<p>I’ve got several other projects that I’m putting on hold for a +while.</p> +<ul> +<li><code>maven-dist</code> (was hosted with Parabola, apparently I +haven’t pushed it anywhere except the server that is down): A tool to +build Apache Maven from source. That sounds easy, it’s open source, +right? Well, except that Maven is the build system from hell. It doesn’t +support cyclic dependencies, yet uses them internally to build itself. +It <em>loves</em> to just get binaries from Maven Central to “optimize” +the build process. It depends on code that depends on compiler bugs that +no longer exist (which I guess means that <em>no one</em> has tried to +build it from source after it was originally published). I’ve been +working on-and-off on this for more than a year. My favorite part of it +was writing a <a href="/dump/jflex2jlex.sed.txt">sed script</a> that +translates a JFlex grammar specification into a JLex grammar, which is +used to bootstrap JFlex; its both gross and delightful at the same +time.</li> +<li>Integration between <code>dbscripts</code> and +<code>abslibre</code>. If you search IRC logs, mailing lists, and +ParabolaWiki, you can find numerous rants by me against <a +href="/git/mirror/parabola/dbscripts.git/tree/db-sync"><code>dbscripts:db-sync</code></a>. +I just hate the data-flow, it is almost designed to make things get out +of sync, and broken. I mean, does <a +href="/dump/parabola-data-flow.svg">this</a> look like a simple diagram? +For contrast, <a href="/dump/parabola-data-flow-xbs.svg">here’s</a> a +rough (slightly incomplete) diagram of what I want to replace it +with.</li> +<li>Git backend for MediaWiki (or, pulling out the rendering module of +MediaWiki). I’ve made decent progress on that front, but there is +<em>crazy</em> de-normalization going on in the MediaWiki schema that +makes this very difficult. I’m sure some of it is for historical +reasons, and some of it for performance, but either way it is a mess for +someone trying to neatly gut that part of the codebase.</li> +</ul> +<h2 id="other">Other</h2> +<p>I should consider doing a write-up of deterministic-<code>tar</code> +behavior (something that I’ve been implementing in Parabola for a while, +meanwhile the Debian people have also been working on it).</p> +<p>I should also consider doing a “post-mortem” of <a +href="https://lukeshu.com/git/mirror/parabola/packages/pbs-tools.git/">PBS</a>, +which never actually got used, but launched XBS (part of the +<code>dbscripts</code>/<code>abslibre</code> integration mentioned +above), as well as serving as a good test-bed for features that did get +implemented.</p> +<p>I over-use the word “anyway.”</p> + +</article> +<footer> + <aside class="sponsor"><p>I'd love it if you <a class="em" + href="/sponsor/">sponsored me</a>. It will allow me to continue + my work on the GNU/Linux ecosystem. Thanks!</p></aside> + +<p>The content of this page is Copyright © 2014 <a href="mailto:lukeshu@lukeshu.com">Luke T. Shumaker</a>.</p> +<p>This page is licensed under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> license.</p> +</footer> +</body> +</html> |