1. 27

It’s Monday Tuesday and no one posted this Monday, which means it’s time for our (semi-) weekly “What are you working on” thread! Please share links and tell us about your current project. Do you need feedback, proofreading, collaborators?

  1.  

  2. 13

    For my genetic-roller coaster generation project, I’m to the point where I would like to generate a fitness function. However, I need to know how RCT2 generates excitement scores for rides.

    I’ve begun decompiling a function from x86 into C that hopefully computes excitement scores. I’ve also gotten the OpenRCT2 engine running in a virtual machine on my Mac, so I can make changes and see how the game is affected.

    I’m also in Japan, so I’m not sure how much progress I’ll be able to make between the extraordinary sights, hikes, and sushi that’s here.

    1. 2

      so you’re trying to create an open source roller coaster tycoon? Or am I totally not understanding what you’re making?

      1. 1

        If I understand correctly, GP is developing genetic algorithms to create roller coasters in RCT2. https://en.wikipedia.org/wiki/Genetic_algorithm

        Basically, this is a way to iteratively create sets of (pseudo)randomly generated roller coasters. Each roller coaster will have a set of “traits” or “genes”. The genetic algorithm works over a series of “generations”. Each generation a “fitness function” kills certain roller coasters that do not sufficiently meet the requirements of the fitness function. Afterwards, a new “population” (set of randomly generated roller coasters) is created by mixing the traits of those roller coasters that survived.

        Right now GP is working on the prototype fitness function to apply to each set of roller coasters that is created. https://en.wikipedia.org/wiki/Fitness_function

        The fitness function “selects” a subset of those roller coasters to “survive” to the next generation. One example of a fitness function in this case might be, “All roller coasters that have an excitement score above 8 and a nausea score below 2 can pass their traits on.” Or perhaps more subtly, “All roller coasters that have [arbitrary elevation change] and [minimum length of track] may produce offspring” Or more realistically, “All roller coasters that crash before [number of rides] shall not pass their traits on.”

        Over successive generations, the fitness function gradually optimizes for the desired traits. This will make for a very interesting way to design roller coasters. Instead of explicitly designing each roller coaster, GP can declaratively state: “I would like to explore a subset-space of roller coasters that would pass these design thresholds.”

    2. 9

      As usual, I’m working on Open Dylan.

      Last week, we got 5 new volunteers from our call for help. I haven’t heard much out of some of them, but we’ve already gotten a pull request from one and have been given cause to fix up some documentation and other things to help some of them out.

      Out of curiosity, I started looking at our compiler’s optimizer. We’ve long had some issues as a result of how it is structured. Up until late 1996, it was structured as a set of discrete passes, but that was abandoned after that. We’d like to return to discrete passes, but that’s going to take some effort. I’ll probably be blogging about this soon, but I did an initial write up.

      I also landed some work that I’d done 3 weeks ago to move a function in a core library to a better location. This doesn’t sound exciting, but it had led to some annoying boilerplate in a number of projects which will no longer be needed after the next release.

      I also worked on assisting someone else with some changes to our run-time and how we integrate the garbage collector. At this point, the changes are not yet complete, but looking promising.

      This week, I have some client work to wrap up, but I’ll be trying to help out our new contributors and probably writing new documentation about compiler internals.

      I’m also trying out switching from vim to emacs for the first time since 1998 or so (when I’d switched to vim). This is driven in part by wanting to use our dylan-mode. Using dylan-mode a little bit has already shown some of its weaknesses and issues. If anyone out there knows Emacs Lisp and would like some small projects, do let us know. :)

      1. 8

        I’m finishing up my talk “Programming an Arduino Due in Rust” for GlueCon on Thursday. The source is here

        1. 1

          This looks awesome. Will your talk be available online at some point? (If so, please share!)

          1. 1

            Looks like it’s not going to be recorded. Sorry

        2. 6

          For $work, I’m bottoming out about five different little things, and bemoaning the fact that my company is hopelessly entrenched in waterfall-y practice that I’m doubtful we’ll ever really make it out. But, pay’s good so I’ll keep trudging.

          For !$work, I’ve been reviewing Complex Analysis using the MIT OCW classes (among others). The particular classes are a 5 course sequence taught by the incomparably excellent Herb Gross. I highly recommend everyone go take a look at his courses.

          I’ve also been working on a little window garden. I’ve got a couple of Zinnias in the works, some various Beanplants, and an African Violet (which actually lives on my desk). It’s pretty nice to be able to stop working for a few minutes, take some time with the plants, and let my brain focus on something which requires very shallow thought. I find that I often get stuck in a local-optima when working on problems requiring deep thought and understanding. Being able to mentally ‘reset’ by watering or pruning some plants – where there isn’t much in the way of complicated or deep thought, just simple ‘see pattern, execute action’ is pretty nice. Also, flowers are pretty.

          1. 6

            This week I am planning to integrate Memory Pool System to Hornet which is an experiental JVM implementation for low-latency applications that I have been working on for a while now.

            1. 2

              Awesome to hear of more people using MPS. :) Are they aware of what you’re doing?

              1. 1

                No, I only learned about MPS recently and haven’t finished the integration. I’ll drop them an email when I have something working. :-)

            2. 6

              This week, I am continuing work on my vector processor Creek. I’ve finished the Chisel code for the vector registers, adder units, multiplier units, and crossbar switch. Still left to do is to figure out how to talk to the DDR3 SDRAM on the FPGA and then write the controller to tie everything together.

              1. 1

                That’s quite interesting! I hadn’t heard of Chisel before this. I’m glad to see people are actively working to improve the tools used by the hardware design community.

                1. 1

                  Chisel is pretty cool, but quite new. The documentation isn’t very complete, the API has changed drastically in the last major release, and I uncovered a small bug while working on this project (it’s been fixed in mainline but the fix hasn’t been released yet). I’m hoping to right a blog post on “Effective Chisel” once I’ve finished the project.

              2. 5

                Relearning Twelf and Open Dylan so I can contribute to something useful over the summer. I’m finally done with high school so I’m catching up on all the fun projects I’ve been meaning to catch up on: Scheme compiler, command line argument parser, augmenting generic-church to support recursive types properly, writing a library in the style of lens-family with prisms so I can finally kill the rest of my dependencies on lens.

                I also am writing a few blog posts that could use someone familiar with Haskell to proofread since I’m just terrible at English. (hint hint? :))

                1. 4

                  I’d love to help with the blog posts. Also would love to learn Twelf in more detail.

                  1. 1

                    Looking forward to seeing you around in Open Dylan land. I’ve been having fun learning more about our compiler in preparation!

                  2. 5

                    Got my haskell port of Gary Bernhardt’s Selecta to feature parity with his version. It’s a fuzzy filter like CtrlP or Command-T, but reads from stdin so it can be used in all kinds of places, like selecting a process to kill or switching git branches.

                    Planning on posting it to r/haskell and attempting to get some more experienced Haskeller’s to review it and then refactor it to improve resource management. Would love any code review from people here as well. Also looking to improve the scoring algorithm, it’s just a straight port of GB’s algorithm right now which doesn’t incorporate account for word boundaries.

                    1. 3

                      I’m continuing to work on building, testing, and automating a new hosting infrastructure on AWS using FreeBSD VMs and Ansible to configure everything. It’s a pretty basic stack otherwise (nginx, HAProxy, PHP, RDS)

                      I’ve been using Ansible for a couple of months now and I’m firmly in love with it.

                      1. 3

                        I did some sort of birthday tracker and I tried doing a COBOL static site generator because IRC arguments.. but the horror was too big for me, it seems :( So it’s back to my other projects, Web irc client and whatever I can find..

                        1. 2

                          How do you even go about setting up a COBOL dev environment these days?

                        2. 3

                          I’m Reading and studying Garbage Collection subject! :) using the book ‘The Garbage Collection Handbook’ as reference.

                          1. 2

                            I’m heading south for ICUAS Sunday, and my last finals are Friday, so I don’t have a ton of free project time between the two of those, but I’m going to try to work a little bit on vim-IdrisConceal and touch up on neural networks for an unrelated prject.

                            1. 2

                              I am working on the documentation for my personal finance analytics and reporting toolkit (for banks and credit unions primarily) http://cashbooktoolkit.com/

                              1. 2

                                Working on making our data parsing functional on a distributed system. To be more specific I am implementing RabbitMQ to tell VM’s when to wake up (hosted on AWS) and take the load from other instances.

                                1. 2

                                  Checking out Apache Samza to hopefully provide a nice substrate for my new behavioural anomaly detection product. If anyone has tried it, please let me know how it went!

                                  1. 1

                                    Go for Apache Storm + Kafka instead, and if you’re using Python, help us out on streamparse. You can also see some slides + notes I wrote about log-oriented architectures with Kafka/Storm.

                                    1. 1

                                      I’ve been looking at Storm for awhile too; can you point to anything that makes it particularly suitable? Thanks!

                                  2. 2

                                    Dulcimer, a node.js levelup & riak ORM. I’m working on making riak a first class citizen, first with riakdown (a levelup backend for riak), and riak features as levelup wrappers.

                                    The idea is that you can develop against level and deploy against riak, although if you don’t need high availability, the embedded levelup db would be faster.

                                    1. 2

                                      I gave a talk at !!Con this past weekend, and it reenergized me to think more about VMs again. So, I’m hoping to work on a toy programming language to try out some ideas.

                                      1. 2

                                        Continuing work on streamparse this week, the library we released a little while ago for working smoothly with Apache Storm and Python. As part of this work, I’ve set up a new Apache Storm 0.9.1 cluster for production use at Parse.ly, and am deploying a prototype computation topology that utilizes some bleeding edge stuff from Cassandra and ElasticSearch. In Cassandra, I’m using recently-added support for paginated wide rows and the CQL binary protocol. In ElasticSearch, I’m using recently-added support for multi-level “aggregations”. It’s working pretty beautifully so far. Now scaling it up to approx 4 billion pageviews per month of data!

                                        1. 2

                                          Continuing to hack away at a RSS reader written in python. :)

                                          1. 2

                                            I’m starting my summer job working on a cloud-sync tool, implementing a way to schedule a task on a client and then a chunking upload API.

                                            For fun, I just bought Clojure Programming and I’m going to start going through that this week.

                                            1. 2
                                              1. Writing the next issue of A Drip of JavaScript, my biweekly JS tips newsletter.
                                              2. Outlining and beginning the early chapters of an SF novel.
                                              1. 2

                                                I had a little idea for an iOS videogame. Right now I’m just storyboarding some sh*t that comes to my mind while commuting or wasting time… :P

                                                1. 1

                                                  iOS app for work. Converting old .frame based layout code to use Auto Layout. Also plugging away at Coursera Algorithms course :)

                                                  1. 1

                                                    I work at a web development company, and I have been working on the same site for the same stubborn client for the last few weeks. Really looking forward to switching gears to another project soon.

                                                    In my personal time, I’m taking the time to learn Objective C. I’m having trouble digesting the syntax (I’m used to Python, which is so much more digestible…), but am trying to force myself through it. I really want to get into more application type development. I really want to work on programs and solving problems, and this is the language that I’m choosing to start that adventure with!

                                                    1. 1

                                                      I’m giving a talk on the C compilation pipeline, preprocessor -> IR generation -> code generation -> assembling -> linking tomorrow, so today I’m writing the slides. ;D

                                                      1. 1

                                                        I will improve my open source projects because I got a lot of feedback from people:

                                                        • Kanboard an alternative to Trello or can be use as a kanban board.
                                                        • Miniflux, a minimalist RSS reader
                                                        1. 1

                                                          Continuing from last week, added a few more things to http://graphcake.com/ (my pastebin service for throwaway time series graphs). Added ability to export chart data into various formats, as well as embed charts on other services.

                                                          1. 1

                                                            A new game! Haven’t made a game in a long time so it is exciting. I forgot how fun it is to write code for a game. “struct doge {…}”

                                                            1. 1

                                                              Work: rewriting our customer onboarding/activation process in node and backbone.

                                                              Not work: I just moved across the country for this new job last week, so meeting new people and drinking beer.

                                                              1. 1

                                                                Work - software restaurations: keeping a 10years old java web stack based on ATG9.0 in working conditions. Fun&Work - writing regression tests with nightwatch/selenium/browserstack. Fun - provisioning & learning OM/clojurescript

                                                                1. 1

                                                                  Working on an ebook for new command line users, don’t have anything proofreadable yet. Otherwise, playing with go, finishing up a cli tool for writing blog posts, and that’s about it for the moment.