It’s Monday, so let’s talk about your plans this week. Feel free to also share what you accomplished last week. Please provide links! Self promotion in this thread is encouraged.
I’m going on leave from my company for 4 months, so making sure my projects are well documented before I head out. Also, trying to lay the groundwork for a new super secret project. Most of this work involves coffee and project specs, not so much coding, yet.
I am working on an implementation of Raft in Ocaml. The rough outline can be found here
It doesn’t do anything yet but the idea is that this repo is purely the state machine for Raft. And then another repo will implement the I/O layer above it, which is what users would actually develop against. The interesting thing about this repo is it’s an attempt to encode the state machine into the type system, in the hopes it will make using it incorrectly really hard.
For those that don’t know, Raft is a consensus algorithm, similar in idea to Paxos.
For the curious, here’s an excellent intro to Raft from Ricon West 2013: http://www.youtube.com/watch?v=06cTPhi-3_8
The original paper is very readable too, linked here with some other resources: http://raftconsensus.github.io/
I finished a raycasting game engine demo last week. Raycasting is a 3D rendering technique that was used pseudo 3D games like Wolfenstein 3D and Duke Nukem 3D in the 1990s. Of course, I ended up using OpenGL for the actual drawing which is actually what Wolfenstein 3D port for iPhone does as well.
This week I will modernize the rendering pipeline and switch to the common subset of OpenGL ES 3 and OpenGL 4 core using programmable GPU.
I’ve been working on a readable mailing list archive. As planned last week, I built a distributed ID generation system and dropped in a job queue (sidekiq). This week I am loading my several gigs of archives into the new system and recreating the discussion threads. It may take more than one week, as my old system archived in a couple formats over the years and Ruby 1.8 was not super with charset issues. Either I get lucky and things are consistent, or I don’t and there’s a lot of hand-checking and tinkering ahead.
This would be super useful! Browsing mailing lists is a huge pain.
Are you planning on releasing this widely? Worrying that adoption might be hampered if it requires multiple moving parts, and a specific Ruby version…
This will be publicly hosted. I have scrapers laying around for most of the common mailing list software, so it’s easy for me to import a list’s archive on request (and follow it for new messages).
This week, like last week, I’m working on my Objective C / Dylan bridge for Open Dylan. I’m also working on the Qt bindings generator so that i can start adding a Dylan backend to it.
The Objective C work this week is finishing up being able to subclass an Objective C class from Dylan and add methods to it that are implemented in Dylan. After that, I will work on some examples.
I might also sneak in some work on having the compiler be able to emit dtrace probes. This would allow us to instrument some core parts of our runtime (which is written in Dylan) and help us optimize method dispatch.
I’m starting work on designing an 8-bit microprocessor. I originally wanted to implement a PIC micro, but after implementing the emulator for it, I decided the encoding was a bit too tough for me to handle as a side project, so now I’m designing my own ISA. I’ve taken care to pick the encoding in such a way that the control logic is easy to implement. So far, I have written an assembler in Ocaml and an emulator in C, which you can find on Github. I have a few small pieces of the processor implemented in Verilog. I hope to flesh out all the datapath elements this week.
I’m working on a web app. that typesets beautifully designed recipe eBooks, automatically.
Imagine imgur + iPhoto + jsfiddle for recipes. The application uses a Natural Language Parser combined with a normalized and hierarchically categorized ingredient database to parse ingredient names, measures, and preconditions (e.g., chopped). The instructions are added using a custom enumerated list editor based on the contentEditable tag.
Unlike other recipe sites, mine allows people to find recipes using exact ingredient matches (e.g., “seven eggs”); the ingredient categories eliminates false positives (e.g., “chicken” will not match “chicken-of-the-woods”, which is a mushroom, but would match recipes that call for “rooster” as roosters are male chickens).
My first target market will likely be community farms.
Last week I finished up the initial alpha version of Bolt, my LMDB port in pure Go, so this week I’m implementing it in a new project. I also did some extensive documentation that I would love some feedback on:
http://godoc.org/github.com/boltdb/bolt
My new project is an open source behavioral analytics application similar to Mixpanel / KISSMetrics. Those tools are great but they’re so expensive for startups (e.g. lowest plan is $150/month to track 500,000 events). The aim of my project is to be able to track millions of events per month and do ad hoc funnel analysis on a $5/month DigitalOcean box.
I’d love to get some beta/alpha testers if anyone has some analytics they want to track.
I feel like these “what are you working on” threads are my weekly update for what you’re doing just a couple blocks away. Maybe I should visit more often. Oh, and I have analytics I want to track. May I test for you?
lol, yeah, we should get together more often! Maybe a regular lunch or something is in order. What about tomorrow or Friday?
And yes, analytics for me to track would be great! It’s not done yet but I’m hoping it’ll be finished in about a month.
We released TokuMX 1.4.0 last week, so this week I’m pushing out some more blog posts about it, and planning a webinar for Thursday on how to pull off some cool tricks with sharding that go beyond what can be done in vanilla MongoDB.
We’re also working on the roadmap for 1.5, so if you have suggestions we’d like to hear them.
I’ve been putting off writing the VM for my toy programming language, tin. I hope to work on that this week a bit. In addition, I’ve been playing with some graphite dashboard concepts.
What sort of graphite dashboard concepts?
The idea is to combine a bunch of things into a single display which “targets” an SLA. Response time would be the time series, which would change color if the SLA was violated, say. You’d have numeric values for 95%, 99%, average, and a few other things–one display per “endpoint.” Finally, I’d love to be able to easily link to the dependency’s dashboards, and perhaps even “discovery” which of the underlying dependencies is causing the response times to spike. Of course, this isn’t well fleshed out, but I’m a bit inspired by Hystrix
We are using both graphite and Hystrix here at TheLadders. Would love to see what you come up with.
It’s possible that we should just adopt hystrix, but it’s not a trivial thing to just throw in there. If it turns into something, we’ll probably open source it.
I built a tiny library for making social network widgets (mainly Like/Share buttons with counters for facebook, linkedin, pinterest, github, gittip…), pulling the data straight from the source over AJAX with CORS and JSONP. This avoids loading all the crap the regular widgets shove down your pipe.
Been trying to come up with a name for it…
“low-pro-so”
Helping to implement a testing cloud and also working on my “pseudo-roguelike game with a huge procedurally generated world and huge procedurally generated tech tree and everything else that can foster emergence thrown into it” project. In Clojure.
http://www.reddit.com/r/roguelikes/comments/1xa9rj/i_have_been_writing_a_pseudoroguelike_mmorpg_with/
http://www.reddit.com/r/Clojure/comments/1x4ycd/i_have_been_writing_a_pseudoroguelike_mmorpg_in/
Pretty cool. I’d love to give it a play when it’s ready. Have you considered doing the front-end in ClojureScript so that you can use the same language throughout?
Yes, and I came to the same conclusion that the circleci clojurists came to: Right now, considering that my client is very simple, the superior debuggability of Javascript puts it on top.
That makes sense.
This week, I’m working on developing an integrated affiliate program for my company that ties into all of the OpenStack APIs which is proving to be an interesting challenge :)
Last week, we finished and rolled out a new pricing model for specialized flavours so that users only have to spin up the resources they need for their cloud instances potentially saving gobs of money. It was challenging to roll them out and deal with planning the capacity requirements – given that adoption matches our predictions, we’ll actually be able to pack more instances per compute node as it relieves the disk space constraint. (release post)
[Comment removed by author]
Have you seen hyperkitty? I don’t know what the status of the project is, but it might serve as inspiration.
[Comment removed by author]
For work, going out and talking to customers to see how StackMachine can better serve game developers. If you know anyone doing Unity work, I’d love to talk to them. Outside of work, I’m adding real-time price information to my Magic: The Gathering API.
I’m going to be working on our site owner signup process (where users create their own forum) and improving the code quality of our web application.
The latter was written in a hurry and it shows, but I’m pleased with the usage we’re seeing and the bugs aren’t too serious or numerous.
[Comment removed by author]
At work, I’m in month two of building a RESTful API in Clojure.
In my spare time, I’m working on an Android app to push my Camera stuff to S3.
I’m working on an iPad app for mediaBrowser community mediabrowser. It will be a full blown media player that can stream local media to iPad. The app will also let you stream your local media to chromecast. The iPad is a successor for my first iPhone app mediabrowerios.com I have a little teaser with the screen mockups. The UI was designed by designer friend Dribbble Profile
Please feel free to leave your feedback.
This week I’m working on improving StatDNS, my DNS research project which publishes deployment statistics and open source DNS related tools (a DNS over HTTP API and an IP Geolocation API). I plan to improve descriptions and documentations everywhere (especially adding more usage examples), and to release new versions of the tools fixing some issues and introducing unit tests.
I created a silly application that is just an API for “fortunes” found here: https://github.com/codingjester/zoltar I may start running them through a markov chain to see what I get and of course, give an API for that.
The current Pokemon using twitch to control the player has piqued my interest in genetic algorithms and I’m probably going to write my own for completing a game of Tetris. Done to death but good for flexing my brain.
I’m not working on anything and it’s driving me a little crazy. conroy let me help with a pull request on a Go project last week, so that was nice. I’ve run into a wall on my preferred side project (yet another news aggregator), so I don’t really know what to do with myself.