summaryrefslogtreecommitdiff
path: root/public/what-im-working-on-fall-2014.html
diff options
context:
space:
mode:
Diffstat (limited to 'public/what-im-working-on-fall-2014.html')
-rw-r--r--public/what-im-working-on-fall-2014.html158
1 files changed, 158 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..a20a381
--- /dev/null
+++ b/public/what-im-working-on-fall-2014.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>What I'm working on (Fall 2014) — Luke T. Shumaker</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <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
+ <a class="em" href="/imworkingon/">my work</a> 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>