I found out that someone (apart from me) has now used my memory profiler
in emscripten to track down a problem in the emscripten port of their game.
That was pretty exciting, I thought. I am also finally getting close to
landing the new analysis user interface.
For my ThirdProject which I’m not publicly naming yet, I worked on
some experiments in HTML / JS / CSS and came to some initial conclusions,
the bulk of which are that “more work is needed.”
I’ve decided to go to Kuala Lumpur for the coming weekend, so that will
be a good change of pace. I’m also looking at some travel around some
tropical beaches and islands for a week next month and starting to think
about what to do around Christmas time. I’m also starting to consider a
trip to Mongolia for next summer for no reason in particular.
In the land of Dylan, a few things have been
going on.
I took a look at Nix for packaging Dylan. So far, I have learned a good
bit and may look at fixing the Nix package for Open Dylan to work on Mac
OS X. However, for that to work, I should fix the 64 bit port to OS X so
that we use that by default rather than the 32 bit version that we use now.
(Incidentally, this is also preventing us from getting packaged with
Homebrew.)
While looking into the 64 bit issues, I realized that a patch that I had
developed in January to let us switch target platforms more easily was
never finished and merged, so I have been working on that, and it is
close. Then I can get back to the 64 bit Mac OS X thing and then fixing
the Nix package. (While working on the target platform switch, I found
some pretty gross code in how we integrate with our build system, so
hopefully I will write down the details of that as a future project
before I forget.) I did take this opportunity to remove a broken
Nix package for the old Gwydion Dylan implementation.
I also helped merge some improvements to other Dylan projects this week
including the HTTP project. These merges fixed some bugs in the HTTP
client, simplified its implementation some. I also landed some code
cleanups that I had done in July to the HTTP server. Since another
set of changes that is being worked on by another team member is to
support multiline strings via triple-quoted strings, I took a quick
look at starting to update our IntelliJ plugin and parser to support
this. I’ll probably do more of that in the coming days / weeks.
I also read Types Don’t Know #
by Howard Hinnant. This is his proposal for an
improvement to how hashing is implemented in C++.
I like it a good bit and it is a noticeable improvement
over what we have in Open Dylan. I have wanted
to revisit hashing in Open Dylan for some time
as our algorithms are old and it isn’t clear
what weaknesses they might have. Unfortunately,
just replacing the algorithm isn’t as easy as
one might like, so there has been a need to revisit
the API behind our hashing implementation for some
time. Another interesting complication for hashing
in Open Dylan is that anything that is dependent
upon the address of some data / an object, must
register with the garbage collector via Location
Dependencies.
This is one of those areas where despite Dylan having been around for a long while, it can learn from more modern techniques and do better. And, since the user base is small, the pain of doing so is relatively little.
Input welcome: I have a lot of notes about
potential projects, annoying things that should
be fixed and so on. I am not really inclined to
file an issue for each. I am also not excited
about using the GitHub wiki for this. Nor does
one of my blogs seem like an appropriate place.
I considered Trello, but it seems to have gotten
hit by the ugly hammer of flatness at some point
in the last year. What do you all do for this?
I can set up a website of just idea pages that
I can update whenever or use one of the above
things.
Managing time tightly. When I need a break from one thing, I have a whole bunch of other things I can take a swing at. Sometimes, I have 2-3 things in progress at once, if I’m working on stuff with longer build times. And I don’t watch much TV except for the @AJEnglish NewsHour occasionally, unless I’m watching TV with my daughter.
Some things don’t take as long as you’d think as long as you stay focused and move quickly. I spent some time on the IntelliJ plugin while waiting for the new version of IntelliJ to download to get my build environment working again. The hashing stuff was a matter of about 2 hours over the course of 2 days, but I was already familiar with the code in Open Dylan and the GC from last year when I’d done earlier investigation into it.
And there’s a lot that isn’t in here as it is my client work … but that’s usually more focused and the write up would be much shorter.
Not sure if you’re an emacs user, but I’ve heard a lot of good things about org-mode http://orgmode.org/
“Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.”; I don’t use it though.
As usual, more and more Rust docs. My guide is finally the official one now, which was nice. Still have more work to do, but I’m moving on to topic-focused, advanced guides, rather than beginner material. I’ve also been working on stabilizing Rust’s SemVer module, which is kinda funny in a meta way.
This week marks the first week I’ve really been at home in almost a month, so it’s going to be a bit quieter. I forgot how much travelling all the time wore me down. :)
Last week, I got most of the functionality of my Haskell web service working, so this week I plan to put the finishing touches on it and work on getting it tested and deployed.
For non-work: I plan to get some PureScript compiler bugs squashed and work on the 0.6 release, including binary builds. Also, I’ll be attending Strange Loop and planning my PureScript unsession, so if any Lobster(ian?)s want to hang out and chat Haskell/AltJS/anything else, I’ll be around.
!$work: Still fighting with C build tools. I gave up on Auto* and started working with CMake. A lot of the same problems crop up, a lot of rage-y tweets, and a lot of confusion as to how people live with the state of this madness.
$work: Boring crap. I’m going on vacation next week, so I really just going through the motions till it’s time to vacate to the Cape. Seafood awaits me, Seafood and probably some Cigars. (EDIT): And liquor.
I’ve been working on my Common Lisp library for manipulating GPX files. I added writing of files, simplifying tracks by removing contiguous points that are near each other, and generating elevation profiles. Still a few more things I want to add this next week.
My library for converting latitude/longitude to UTM was in the latest quicklisp released yesterday. Would be awesome if people would give it a try, but i admit gis in lisp is a pretty small niche, and I’m not expecting much use. Nice to have it distributed, though :-)
At my job we’re still tying up loose ends to finish up a release. Primarily focused on documentation this week :-/
I think I will do more user testing and build another example App or two for Fire★.
But what I really should be doing is creating documentation for the API so far and some kind of help system. But because I haven’t figured out the best approach for tha,t I am doing other things.
Anyone have a good idea for that? Fire★ has a built in App Editor and having something integrated in that is probably the best approach. I have a crude auto complete with some documentation, but it doesn’t allow for discoverability.
I’ve been working on writing blog posts about reactive programming. blog.lacebark.io/2014/09/15/structuring-reactive-programs/
And I’ve also been working on an app that mashes up a spreadsheet with a shape editor. Right now, I’m working on the part that selects a shape. I’m writing it in Elm, partially to finally learn a pure functional programming language, and partially for shits and giggles.
At work, I’m still working on adding the ability to configure machine placements for the OpenStack components that the Ubuntu OpenStack Installer project installs for you on your MAAS cluster. It’s built with urwid, and it has been a bit of a time sink working through some of the quirks of urwid’s focus handling and layout system. Hopefully, though, when we’re done this will be a useful tool for people who want to get started with OpenStack on Ubuntu without wading through long tutorials.
As an aside, I’ve now written some small and some large UIs with Tkinter, ObjC Cocoa (old and new AppKit and UIKit), HTML/JS, PyQt, C++ Qt, GTK in C and Vala, and QML. Probably I’ve missed one or two. The more of these UI frameworks I use, the more that any deficiency in any particular one grates on me.
For work, I’m in Austin, TX giving three trainings over the next ten days. Which means for not-work, I’m mostly coding in my hotel room. Currently playing around with alternative buffer caching algorithms, thanks to tedu’s post on 2Q algorithm.
Planning on getting some serious hiking and bird photography done this weekend
Last weekend I finally made it possible to create a new virtual machine in VirtKick (see the screenshot) and mount an ISO to a virtual machine, even when running.
This week I’ll be adding the final missing part: public network. With this handled, I’ll be ready to deploy VirtKick in production and finally invite folks to the beta tests.
Continued work on streamparse, project for running Apache Storm topologies with Python. Plan on expanding the examples of using Python + Java/Clojure together in a single topology, and specifically letting a Python Bolt read from the bundled Kafka Spout in Storm 0.9+.
May also release onto Github some Docker scripts I’ve been running locally that can get Cassandra, Elasticsearch, MongoDB, and Redis all running within a Vagrant box. In the case of Cassandra and Elasticsearch, the scripts also support multi-node clusters and external data volumes.
At work I’m leading the charge in integrating Kafka across our organization by providing an easy to use client library on top of Kafka for producing and consuming messages. I hope to opensource some of it, including something I’m calling RxKafka right now, a Kafka consumer built around RxJava. After building out the library, I’ll be integrating it in half a dozen places across the infrastructure in a project we’re calling the “data bus” – a fancy way of turning our batch/rpc based systems into background near realtime systems with replayability. One of these is getting log data into Hive (still batch) for ad-hoc analysis.
At home I’ve been working on cleaning up an old web crawler I have written in Scrapy, and really diving into Rust now that it’s approaching 1.0 and steveklabnik’s guide exists.
Im cleaning up and polishing on Ipfs. We’re getting really close to having an alpha type ‘release’ (aka, this probably works, y'all should try it). Almost everything is done feature-wise, just finishing up on some refactors before we says its ready. Also, if anyone is interested, we’re looking for Go and Node programmers to help out.
Still trolling through doing internationalization right. It’s not sexy, but it’s so painful when it’s done wrong. Too easy to get clever and make it hard for linguists, too easy to play dumb and make it hard for developers.
I’m back from holiday on Wednesday and then off to PyCon UK where I’m giving a talk on a programming game that we had some interns working on over the summer. I’ll be preparing for the talk on Thursday/Friday I expect.
I really enjoyed reading this MSc thesis: http://www.cs.rice.edu/CS/Architecture/docs/msthesis-barr.pdf Exploiting Address Space Contiguity to Accelerate TLB Miss Handling by Thomas Barr. It’s very well written and covers a range of interesting suggestions for improving TLB miss handling.
In the last week …
I found out that someone (apart from me) has now used my memory profiler in emscripten to track down a problem in the emscripten port of their game. That was pretty exciting, I thought. I am also finally getting close to landing the new analysis user interface.
For my ThirdProject which I’m not publicly naming yet, I worked on some experiments in HTML / JS / CSS and came to some initial conclusions, the bulk of which are that “more work is needed.”
I’ve decided to go to Kuala Lumpur for the coming weekend, so that will be a good change of pace. I’m also looking at some travel around some tropical beaches and islands for a week next month and starting to think about what to do around Christmas time. I’m also starting to consider a trip to Mongolia for next summer for no reason in particular.
In the land of Dylan, a few things have been going on.
I took a look at Nix for packaging Dylan. So far, I have learned a good bit and may look at fixing the Nix package for Open Dylan to work on Mac OS X. However, for that to work, I should fix the 64 bit port to OS X so that we use that by default rather than the 32 bit version that we use now. (Incidentally, this is also preventing us from getting packaged with Homebrew.)
While looking into the 64 bit issues, I realized that a patch that I had developed in January to let us switch target platforms more easily was never finished and merged, so I have been working on that, and it is close. Then I can get back to the 64 bit Mac OS X thing and then fixing the Nix package. (While working on the target platform switch, I found some pretty gross code in how we integrate with our build system, so hopefully I will write down the details of that as a future project before I forget.) I did take this opportunity to remove a broken Nix package for the old Gwydion Dylan implementation.
I also helped merge some improvements to other Dylan projects this week including the HTTP project. These merges fixed some bugs in the HTTP client, simplified its implementation some. I also landed some code cleanups that I had done in July to the HTTP server. Since another set of changes that is being worked on by another team member is to support multiline strings via triple-quoted strings, I took a quick look at starting to update our IntelliJ plugin and parser to support this. I’ll probably do more of that in the coming days / weeks.
I also read Types Don’t Know # by Howard Hinnant. This is his proposal for an improvement to how hashing is implemented in C++. I like it a good bit and it is a noticeable improvement over what we have in Open Dylan. I have wanted to revisit hashing in Open Dylan for some time as our algorithms are old and it isn’t clear what weaknesses they might have. Unfortunately, just replacing the algorithm isn’t as easy as one might like, so there has been a need to revisit the API behind our hashing implementation for some time. Another interesting complication for hashing in Open Dylan is that anything that is dependent upon the address of some data / an object, must register with the garbage collector via Location Dependencies. This is one of those areas where despite Dylan having been around for a long while, it can learn from more modern techniques and do better. And, since the user base is small, the pain of doing so is relatively little.
Input welcome: I have a lot of notes about potential projects, annoying things that should be fixed and so on. I am not really inclined to file an issue for each. I am also not excited about using the GitHub wiki for this. Nor does one of my blogs seem like an appropriate place. I considered Trello, but it seems to have gotten hit by the ugly hammer of flatness at some point in the last year. What do you all do for this? I can set up a website of just idea pages that I can update whenever or use one of the above things.
I barely manage to read your weekly updates without toilet breaks—how do you find time to do all this? :-)
Managing time tightly. When I need a break from one thing, I have a whole bunch of other things I can take a swing at. Sometimes, I have 2-3 things in progress at once, if I’m working on stuff with longer build times. And I don’t watch much TV except for the @AJEnglish NewsHour occasionally, unless I’m watching TV with my daughter.
Some things don’t take as long as you’d think as long as you stay focused and move quickly. I spent some time on the IntelliJ plugin while waiting for the new version of IntelliJ to download to get my build environment working again. The hashing stuff was a matter of about 2 hours over the course of 2 days, but I was already familiar with the code in Open Dylan and the GC from last year when I’d done earlier investigation into it.
And there’s a lot that isn’t in here as it is my client work … but that’s usually more focused and the write up would be much shorter.
Imagine if I worked on something that people actually cared about, rather than Dylan. Hah.
i think github issues for little notes about potential projects is fine; it’s what i do for a few things.
there is also taskwarrior - http://taskwarrior.org/ - but it’s a bit more cumbersome to add little bits and pieces of text; images; etc.
I ended up needing something a lot more robust than that … I’ll talk about my solution in next week’s post. :)
Not sure if you’re an emacs user, but I’ve heard a lot of good things about org-mode http://orgmode.org/ “Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.”; I don’t use it though.
I’ve been using cherrytree (http://www.giuspen.com/cherrytree/) to manage notes, it allows you to organize them using a tree layout.
Haven’t seen you on IRC in a while.
Anyway, I’ve got a solution and am working on fleshing it out … more in next week’s post. :)
As usual, more and more Rust docs. My guide is finally the official one now, which was nice. Still have more work to do, but I’m moving on to topic-focused, advanced guides, rather than beginner material. I’ve also been working on stabilizing Rust’s SemVer module, which is kinda funny in a meta way.
This week marks the first week I’ve really been at home in almost a month, so it’s going to be a bit quieter. I forgot how much travelling all the time wore me down. :)
Last week, I got most of the functionality of my Haskell web service working, so this week I plan to put the finishing touches on it and work on getting it tested and deployed.
For non-work: I plan to get some PureScript compiler bugs squashed and work on the 0.6 release, including binary builds. Also, I’ll be attending Strange Loop and planning my PureScript unsession, so if any Lobster(ian?)s want to hang out and chat Haskell/AltJS/anything else, I’ll be around.
!$work: Still fighting with C build tools. I gave up on Auto* and started working with CMake. A lot of the same problems crop up, a lot of rage-y tweets, and a lot of confusion as to how people live with the state of this madness.
$work: Boring crap. I’m going on vacation next week, so I really just going through the motions till it’s time to vacate to the Cape. Seafood awaits me, Seafood and probably some Cigars. (EDIT): And liquor.
I’ve been working on my Common Lisp library for manipulating GPX files. I added writing of files, simplifying tracks by removing contiguous points that are near each other, and generating elevation profiles. Still a few more things I want to add this next week.
My library for converting latitude/longitude to UTM was in the latest quicklisp released yesterday. Would be awesome if people would give it a try, but i admit gis in lisp is a pretty small niche, and I’m not expecting much use. Nice to have it distributed, though :-)
At my job we’re still tying up loose ends to finish up a release. Primarily focused on documentation this week :-/
I think I will do more user testing and build another example App or two for Fire★.
But what I really should be doing is creating documentation for the API so far and some kind of help system. But because I haven’t figured out the best approach for tha,t I am doing other things.
Anyone have a good idea for that? Fire★ has a built in App Editor and having something integrated in that is probably the best approach. I have a crude auto complete with some documentation, but it doesn’t allow for discoverability.
I’ve been working on writing blog posts about reactive programming. blog.lacebark.io/2014/09/15/structuring-reactive-programs/
And I’ve also been working on an app that mashes up a spreadsheet with a shape editor. Right now, I’m working on the part that selects a shape. I’m writing it in Elm, partially to finally learn a pure functional programming language, and partially for shits and giggles.
For the lazy who just want to click on a link … http://blog.lacebark.io/2014/09/15/structuring-reactive-programs/
Cleaning up some work code to parse written-out numbers (“one hundred and twenty-three”), then heading off to Strange Loop for the rest of the week.
At work, I’m still working on adding the ability to configure machine placements for the OpenStack components that the Ubuntu OpenStack Installer project installs for you on your MAAS cluster. It’s built with urwid, and it has been a bit of a time sink working through some of the quirks of urwid’s focus handling and layout system. Hopefully, though, when we’re done this will be a useful tool for people who want to get started with OpenStack on Ubuntu without wading through long tutorials.
As an aside, I’ve now written some small and some large UIs with Tkinter, ObjC Cocoa (old and new AppKit and UIKit), HTML/JS, PyQt, C++ Qt, GTK in C and Vala, and QML. Probably I’ve missed one or two. The more of these UI frameworks I use, the more that any deficiency in any particular one grates on me.
For work, I’m in Austin, TX giving three trainings over the next ten days. Which means for not-work, I’m mostly coding in my hotel room. Currently playing around with alternative buffer caching algorithms, thanks to tedu’s post on 2Q algorithm.
Planning on getting some serious hiking and bird photography done this weekend
Last weekend I finally made it possible to create a new virtual machine in VirtKick (see the screenshot) and mount an ISO to a virtual machine, even when running.
This week I’ll be adding the final missing part: public network. With this handled, I’ll be ready to deploy VirtKick in production and finally invite folks to the beta tests.
Continued work on streamparse, project for running Apache Storm topologies with Python. Plan on expanding the examples of using Python + Java/Clojure together in a single topology, and specifically letting a Python Bolt read from the bundled Kafka Spout in Storm 0.9+.
May also release onto Github some Docker scripts I’ve been running locally that can get Cassandra, Elasticsearch, MongoDB, and Redis all running within a Vagrant box. In the case of Cassandra and Elasticsearch, the scripts also support multi-node clusters and external data volumes.
At work I’m leading the charge in integrating Kafka across our organization by providing an easy to use client library on top of Kafka for producing and consuming messages. I hope to opensource some of it, including something I’m calling RxKafka right now, a Kafka consumer built around RxJava. After building out the library, I’ll be integrating it in half a dozen places across the infrastructure in a project we’re calling the “data bus” – a fancy way of turning our batch/rpc based systems into background near realtime systems with replayability. One of these is getting log data into Hive (still batch) for ad-hoc analysis.
At home I’ve been working on cleaning up an old web crawler I have written in Scrapy, and really diving into Rust now that it’s approaching 1.0 and steveklabnik’s guide exists.
I pushed the first version of wtch, which runs make when a file under the current directory is changed, on OS X: https://github.com/wolverian/wtch
It’s a fun project to dust off my C skills too.
Im cleaning up and polishing on Ipfs. We’re getting really close to having an alpha type ‘release’ (aka, this probably works, y'all should try it). Almost everything is done feature-wise, just finishing up on some refactors before we says its ready. Also, if anyone is interested, we’re looking for Go and Node programmers to help out.
Still trolling through doing internationalization right. It’s not sexy, but it’s so painful when it’s done wrong. Too easy to get clever and make it hard for linguists, too easy to play dumb and make it hard for developers.
I’m back from holiday on Wednesday and then off to PyCon UK where I’m giving a talk on a programming game that we had some interns working on over the summer. I’ll be preparing for the talk on Thursday/Friday I expect.
I really enjoyed reading this MSc thesis: http://www.cs.rice.edu/CS/Architecture/docs/msthesis-barr.pdf Exploiting Address Space Contiguity to Accelerate TLB Miss Handling by Thomas Barr. It’s very well written and covers a range of interesting suggestions for improving TLB miss handling.