It’s Monday, so, what are you working on this week? Feel free to share links, ask for help, etc!
I’m teaching kids to program using Raspberry Pis and Python! It’s part of a summer camp at the local children’s science museum here.
Also I’m writing a lot of Dylan to gear up hopefully some contributions to the Open Dylan compiler to do with type-y things.
What is the age range? How do the children interact with Python and the computer? Is the dev env full screen?
8 - 12 year olds. They’re working in a Debian like environment called Raspian. They’re interacting with Python using a combination of IDLE for editing (bleh I know), bash for running code, and minecraft! The code they’re writing is modifying their minecraft world. So they write 3-4 lines of code, run it, and watch blocks appear in front of them in their world. Minecraft has a special version designed just for this, it’s pretty slick actually.
I plan to write about this at some point next weekend if you’re really interested in how it worked in more detail.
Love to know the some details and a retrospective, successes and failures. Esp in precursors to student disengagement or frustration. And what seemed to hook them or trigger a chain of understanding.
You might be interested in this guys research, http://jadud.com/research.html
I’m working on Open Dylan as usual.
As with last week, I’m still working on thinking about our type system. Before diving too deeply into that though, I need to be sure that I understand a lot more of the compiler’s typist and optimization systems, so that’s been a big focus.
I’ve restored some internal compiler test suites that were removed a couple of years ago and have updated them to our test framework and am working on fixing them to pass tests. This is pretty interesting and is making me learn a lot. The main problem at the moment is that a certain part of the IR isn’t getting configured correctly and it isn’t clear at all to me why that is.
I’ve also dug out an old execution engine, dfmc-execution that could evaluate the compiler IR like a VM. I’ve updated it to get it to build and am working on seeing whether or not it was close to working when work stopped on it long ago.
As part of trying out dfmc-execution, I learned that our code for using dlsym() to lookup objects by their mangled symbol names was broken on Mac OS X. I fixed that today by using RTLD_DEFAULT, and in the process, wrote some tests for that part of the codebase.
So, this week, I’ll be continuing to learn more about our compiler internals, improving our internal typist test suites, and working to see if I can get dfmc-execution working again. My goal, as always, is to make at least a little bit of progress every day. i’ll also be supporting some other folks in their work on Dylan, notably the ARM porting work, some work on the warnings infrastructure in the compiler, etc.
(It would be interesting to see if dfmc-execution could be used to power some abstract interpretation / symbolic execution… but not in my near-term future.)
I started development on my attempt at BigTable, called Kaiju. It is meant to be a big umbrella project to learn about building large projects in Ocaml, distributed systems, etc. So even if it doesn’t succeed in itself it will hopefully have some good learning experiences along the way.
I’m working on breast cancer biopsy image cell detection and segmentation. I just spent the last two hours manually annotating 10 large biopsy images. Fun stuff.
I’m trying to stimulate contributions to my open source project, Phusion Passenger (https://github.com/phusion/passenger). It’s an app server for Ruby, Python and Node.js, but it has historically had very few contributors because Passenger is written mostly in C++, making the contribution barrier high for the target group.
In the last 2 weeks, I’ve been writing developer documentation and making code walkthrough screencasts to help new contributors (http://blog.phusion.nl/2014/06/16/announcing-new-revamped-developer-documentation/).
Today, I’ve started working on a marketing campaign and reward system for encouraging people to contribute. The specification is here: https://github.com/phusion/passenger/wiki/Contribution-Campaign
It is super hard to get Rubyists to write C. It’s one of the big reasons Shoes moved to JRuby. I feel your pain :(
This time I’m also enlisting the help from Node.js and Meteor devs. Not sure whether the situation is better there, but one can hope. :)
Working on beefing up the documentation for TokuMX. We’re releasing version 1.5.0 later this week and I’m hoping to meet that deadline with the new documentation. Pretty excited, it’s work long overdue.
Working on FPGA integration and software drivers for Creek. Things have quite predictably gone wrong at this point. My next step is to add more instrumentation so that I can debug things more easily.
I’ll be continuing work on purescript-in-purescript, mainly fixing bugs and working on performance.
Just finished moving, so I have a quiet space to record videos in. Response to my workflow/“how to think in types” video 1 has been consistently positive so I’m feeling pretty good about moving forward with the project.
I still think Haskell needs its “K&R” book, compact, effective, and sufficiently complete to serve as an introduction and reference to the language that works for most people. I’ve been using Yorgey’s cis194 course materials to teach people in my guide 2 but there’s some work needed there and I haven’t decided if I want to just fix that up or embark a book project. I’ll do the videos first in the meantime.
Trying to figure out design for a site for future videos.
I’m building a real, production Rails app that’s 100% AGPL’d: https://github.com/artisan-tattoo/artisan_assistant
Made real progress at $WORK. Many layers of abstraction for my service, but I think I can trace something through all of them over this week.
On my own stuff, I’ve made zero progress over the past week. I’m at the same point in Clojure Programming and on web dev with Clojure. I’m a bit disappointed in myself, but hopefully this coming week will prove more productive.
I’m working on developing a Node.JS version of a J2EE RESTful service that interfaces with MongoDB and has a front end implementation in Angular.JS. I’ve been telling my superior about the “greatness” of Node.JS and he’s finally allowing me to try a solution in it. Although it will only be implemented if he feels others will be able to work on my code, and as long as it is just as or more efficient than the J2EE version.
Have been working on my game TCFODS. Going to finally add sound. Also I plan on user testing Fire★ more. Maybe if I get around to it, add ability to have people who are not in a clique have conversations.
Starting to hack on a backup/archive program for my own use. I intend to write it in my own language.
I’m porting my implementation of squashfs to as many operating systems as possible: https://github.com/vasi/squashfuse/tree/branch_0.2 . My goal is to make it squashfuse the most portable FUSE filesystem around, that other people can use as an example when trying to port their own filesystems.
Been writing a lot of documentation for OlegDB. We just wrapped up cursor iteration via the frontend so now I’m taking care of some of the less fun tasks.
I’ve been having fun learning Qt and cutting my teeth on it by making a persistent color picker widget. My larger goal right now is to build an asset creation app for efficiently making beautiful 2D tiled game maps.
I do write graphics code for a living, but on the internal compute side. I haven’t really messed with GUI programming since the Delphi 2 days, so it’s been a refreshing change of pace.
Some stuff involving the intersection of Play and hadoop. This is not entirely to my liking. But, so be it. I’ve thrown my lot in and am committed.
I’m also going to take some time this week to really go over “The Haskell School Of Music”.
Working on OpenHorus with a friend of mine which is basically a very fast multiplayer third person shooter. It’s a fork of another game, Waiting for Horus, but we’re rewriting a lot of stuff ourselves plus making our own stuff.
Wrapping up a project based around Django and REST … the limitations were starting to get to me so I started putting Tranquil together as a more flexible way of putting together an API. Early days yet but comments welcome!
I’m trying to figure out how to embed gtk+ widgets directly inside NSViews.
So, mostly mucking around with libgdk internals. They’re sizing and rendering right now, but I don’t have mouse input events working yet. I haven’t even started looking into keyboard event handling at all yet. Once those are working I need to handle clipping for cases of overlapping views.
I finished up a reasonable early version of the event counting service (ingests from Kafka, parses/filters/transforms event records, then feeds them into a bunch of configurable counters). This week I’m doing some more architecting, especially on the data flow for configuration changes propagating through the system, so at any given point we know what rule set (ID and version!) any given piece of data was processed under.
I’m finishing up a blog post about Lua and Redis. Beyond that, most of the week will be spent planning out system configuration and deployment issues around some new Go-based services. Microservice-driven architectures are proving challenging to reason about in practice. So…. reading what I can and validating assumptions with tests when feasible.
Switched to zsh, finally, on Monday. Been using bash for over a decade, but my increased use of tmux finally led me to give in. (Multi-shell history support in bash is pathetic.) I think zsh is pretty good, especially when enhanced with oh-my-zsh. I adapted someone’s prompt script, written in Python, to get a left/right prompt with both shortened path display, currently-activated virtualenv support, and git branch/status support. Pretty nice.
The best feature of zsh, by far, is the widespread completion. It can complete anything – shell history, command-line args, directories, files, you name it. It all Just Works.
It also obsoleted my use of the “hop” directory manager plugin (now using zsh’s “cdr”, which is much simpler overall) and my use of autoenv (replaced with zsh’s virtualenv plugin). You can find all my dotfiles on Github:
https://github.com/amontalenti/home, e.g. https://github.com/amontalenti/home/blob/master/.zshrc
OK, enough $TERM tweaking. Otherwise, this week I continue my work on some Apache Storm topologies. Also planning on reading the book Storm Blueprints, recently published by Packt. (I’m 4 chapters in already.) Storm 0.9.2-incubating will be released this week, so I’m also going to play with that and possibly upgrade our cluster to use it. Getting closer to having an important Storm topology completed & performing well for me, combining Storm, Kafka, Cassandra, and ElasticSearch.