12 votes

What programming/technical projects have you been working on?

This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

10 comments

  1. DataWraith
    Link
    I've been playing around with Snorkel. Snorkel is a project from Stanford DAWN; DAWN aims to democratize AI by making it easier for hobbyists or smaller companies to build AI-powered applications....

    I've been playing around with Snorkel.

    Snorkel is a project from Stanford DAWN; DAWN aims to democratize AI by making it easier for hobbyists or smaller companies to build AI-powered applications.

    One of the problems DAWN identified for small-scale practitioners (apart from the lack of compute power) is the lack of training data. Companies like Google have a huge workforce that labels training data for their machine learning pipelines (even involuntarily through ReCaptcha), but as a hobbyist, I don't.

    Snorkel tries to improve the situation through data programming: you write small functions in Python that heuristically classify an unlabeled dataset. If you did this naively (as I have attempted in the past) you probably tried to assign each heuristic function a score-value ("if this review contains 'worst' that's -3 points on the sentiment axis"), but then you need to tune those scores manually, which gets intractable quickly as their interactions multiply.

    Snorkel's approach is to learn a probabilistic graphical model of your heuristics -- it measures when and how they conflict and estimates how reliable they are. This works entirely on unlabeled data, and the result is a set of pseudo-labels for the entire dataset you can then train an ML model with. The idea here is that the trained model might learn to generalize beyond what the labeling functions themselves provide.

    I've so far experimented with an IMDB sentiment dataset, and after a few hours of fiddling and with ~100 simple keyword heuristics, reached an accuracy of 78%.
    I think that is quite good given that I did not need to hand-label 25000 movie reviews -- using the provided ground-truth labels works better of course (86% accuracy on the testset), but the entire point of Snorkel is that you don't need perfect ground-truth annotations to train a useful model.

    7 votes
  2. aphoenix
    Link
    I'm writing a small slackbot that will record foosball scores and allow you challenge other people in slack to a game of foosball. It's delightfully silly. I've been fiddling with it in Rust. I am...

    I'm writing a small slackbot that will record foosball scores and allow you challenge other people in slack to a game of foosball. It's delightfully silly. I've been fiddling with it in Rust.

    I am experiencing no notable troubles. I'm still reading through the Rust book.

    7 votes
  3. onyxleopard
    Link
    I wrote a pair of Python scripts that offer command-line interfaces to The Pirate Bay (since I was getting annoyed with the website 😡). I found this TBP API wrapper, so just created a CLI driver...

    I wrote a pair of Python scripts that offer command-line interfaces to The Pirate Bay (since I was getting annoyed with the website 😡). I found this TBP API wrapper, so just created a CLI driver and very simple TUI with pagination and not much else. I made it so that if the user selects an entry in the results, it opens the magnet link with Transmission.app (ostensibly some other torrent client could be used as well). Here’s an asciinema demo.

    It’s pretty shitty, but at least now I can browse/search for and download torrents from my terminal.

    5 votes
  4. krg
    Link
    The beginnings of a fretboard display. Last night I started trying to algorithmically build a display of a fretboard for fretted instruments in html+css+js. It's not much at all, yet, but some...

    The beginnings of a fretboard display.

    Last night I started trying to algorithmically build a display of a fretboard for fretted instruments in html+css+js. It's not much at all, yet, but some foundation has been laid (I think). So far all I have is a way to build each string based on a tuning (limited to 12-tone equal temperament, at the moment) and populate the fretboard with the appropriate number of strings and each fretted note (technically, starting with the open string) displayed in its MIDI number equivalent. Well, that was a whole lotta description for notta lotta work...

    The organization is a bit messy and I'm sure my software design practices aren't up to par, but I'll work on that as I go along. I'll eventually write a function that converts MIDI note number to Western musical note names. Not sure how I'll deal with display enharmonically equivalent notes, yet. And maybe I'll figure out a way to play the appropriate sine wave when a fret is pressed. 🤔 First, of course, is getting it to look like an actual fretboard. So, y'know, I gotta draw strings and frets. And, if I want to be fancy, scale the fret width based on scale length. If I want to be real fancy, I'll figure out how to deal with multi-scale fingerboards (though, I imagine it's just an issue of setting scale length per string).

    Eventually, I want to be able to feed it patterns so that it'll selectively display notes and stuff so that I can create diagrams/lessons/etc. But that's starry-eyed future thoughts, at the moment. Just generating a fretboard would be cool!

    Anyway, if anyone wants to have a peek at the code and sound off on its..uh...sound-ness.. I'm all ears! 👂

    4 votes
  5. SUD0
    Link
    More Rust. Haven't really touched my graphics project much, but that is because I have been working on an assignment for grad school. I have to write a basic neural net that has customizable...

    More Rust. Haven't really touched my graphics project much, but that is because I have been working on an assignment for grad school. I have to write a basic neural net that has customizable hidden layers and uses back-propagation. I have REALLY been enjoying working on it. It's not working yet, I have a lot of kinks to work out in the math still. Made some good progress tonight.

    3 votes
  6. [5]
    unknown user
    Link
    I've just released one of the mods for Cataclysm: Dark Days Ahead that I'd been working on: Private Defense, which adds 3D-printable firearms and accessories into the game. It's a small mod, but...

    I've just released one of the mods for Cataclysm: Dark Days Ahead that I'd been working on: Private Defense, which adds 3D-printable firearms and accessories into the game. It's a small mod, but one that sees near completion, and that's very exciting for someone's who's only ever finished few things worth a damn.

    If you're playing the game and are ready to give it a shot, you can download Release Candidate 1 (as well as Homestead, the resource Private Defense depends on). The designed way is to loot the houses and the gunstores that have gunsmithing tools: that way, you can get access to the rare CAD files for specific guns or the entire design binder with every single CAD file for the mod. The easy way is to spawn the items via debug spawn menu.

    2 votes
    1. [4]
      cfabbro
      (edited )
      Link Parent
      Nice! You're getting closer to being able to attempt the Fay/Fae (no iron) run now. :P

      which adds 3D-printable firearms and accessories into the game.

      Nice! You're getting closer to being able to attempt the Fay/Fae (no iron) run now. :P

      1 vote
      1. [3]
        unknown user
        Link Parent
        Well, these guns are pure plastic through bullshit, handwaving, and fairy dust. I can then use tin, copper, or even titanium bullets, so... yeah, I think I'm good to go. :P

        Well, these guns are pure plastic through bullshit, handwaving, and fairy dust. I can then use tin, copper, or even titanium bullets, so... yeah, I think I'm good to go. :P

        2 votes
        1. [2]
          cfabbro
          (edited )
          Link Parent
          Well, if you're looking for bullshit/hand-waiving lore to explain it, apparently "nanodiamond-reinforced polymer-matrix composites" are a thing and quite hard... so you could go with that as your...

          Well, if you're looking for bullshit/hand-waiving lore to explain it, apparently "nanodiamond-reinforced polymer-matrix composites" are a thing and quite hard... so you could go with that as your description of the material used in the guns. :)

          2 votes
          1. unknown user
            Link Parent
            That would be a hell of a thing to justify while using regular consumer-grade 3D printers and common plastic. I'm not sure I have this much guts to wave my hand that hard. But hey, thanks for...

            That would be a hell of a thing to justify while using regular consumer-grade 3D printers and common plastic. I'm not sure I have this much guts to wave my hand that hard.

            But hey, thanks for fueling my sci-fi vocab!

            2 votes