1. 27

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.

  1. 10

    I finished up an ERb-style templating language for Go called ego. It transpiles to pure Go so it allows for any Go constructs, statically compiles, and supports compile-time type checking. Feedback welcome!


    I’m using that inside my open source Mixpanel implementation that I’m currently calling Skybox.

    1. 2

      I saw this yesterday and thought it looked interesting. What made you decide to not use Go’s text/template and html/template? Have you found that your ego templates are overall more or less complex than the equivalent stdlib templates?

      1. 5

        I’ve used the standard library templates before and they work fine but I run into a few issues:

        1. I always have to reference the docs a lot to remember how to use the pipeline syntax.

        2. I have to register any functions I want to use in my view.

        3. I have to separately run go-bindata to embed templates into the binary.

        4. There’s no static type checking.

        5. Nested templates are a pain to manage IMO. With ego, everything is just a function call so they nest well.

        So far it’s been pretty straightfoward. I don’t have to context switch in my head between Go syntax and template syntax. It’s all Go code. Compiling templates using the ego CLI is quick and painless too. I’m using line pragmas in the generated source so template errors are reported based on the template’s line numbers (and not the generated code’s line numbers).

        1. 2

          Cool! The type safety sounds particularly nice. I look forward to trying out ego!

    2. 7

      I finished my 8-bit CPU. It’s implemented in Verilog and runs on an FPGA. It even has interrupts now! I’ll have to verify that more thoroughly to make sure I’m flushing the pipeline and saving the state properly.


      • Refactor the Verilog to get rid of all the magic opcode constants.
      • Add more comments in general so that the RTL code is more understandable.
      • Add some more interesting IO peripherals (like a timer).
      • Write some more complicated example programs to test things out.
      • Figure out a way to write a new program to instruction memory when the CPU is already running.
      • Write a compiler for a high-level language for the CPU (something like C but more stripped down).
      1. 7

        As usual, I’m working on Open Dylan and our forthcoming Objective C / Dylan bridge. Last week, I made great progress and have a working example. However, it was clear that adding a new method to an Objective C class was too verbose, so this week, I’m working on a new approach to slimming that down and making it easier to do.

        I’ve sent a former Dylan hacker an email with a proposal that he help work on generating a first pass at bindings for the Cocoa libraries by using Apple’s BridgeSupport, so hopefully we’ll see some progress on that this week.

        I’ll also be working on generating Qt bindings for Dylan some.

        1. 6

          I am trying to get more familiar with Rust, and so am working on a project to implement common unix utilities in Rust. Not so original, I know, but I like using that particular exercise when I am learning a language. I will be writing a blog post when I have something to show.

          1. 6

            I’m trying to figure out how to store some timeseries data for trading applications. So far, we’ve implemented a kind of lame time-series database ourselves, but it sucks, so I’ve been trying KairosDB. Turns out KairosDB rounds my data points to 32-bit floats, which isn’t acceptable (in other parts of the system we’re representing prices as 11-digit integers), so I’m thinking I may have to try something else.

            For non-$work, I need to finish up turning dumbfts into a book chapter for the “500 lines or less” book coming out later this year. I need to port it to Python 3, fix at least one bug, and explain it clearly. Also, I’m wondering if maybe I can work some kind of index compression into it.

            1. 3

              What kind of queries are you doing for the time series data? I work on a behavioral analytics database (similar to time series) and I’ve always been interested in the trading application use cases.

              That sucks about 32-bit floats. I used to use LuaJIT for query compilation but it had weird number restrictions. I since moved to LLVM which uses int64 & double.

              1. 2

                I’m not sure how much I can say about it, so I’m going to err on the side of silence.

              2. 1

                Do you happen to have more information on this book? It sounds pretty interesting!

                1. 3

                  Yes! Call for reviewers, github repository. I’m excited that this book exists!

                  1. 1

                    Yes! That’s awesome! I wish I had an idea for something to contribute, though perhaps it’s too late at this point.

                    1. 1

                      That’s awesome! I signed up as a reviewer.

                      1. 1

                        I’m delighted!

                2. 5

                  I’ve been working on a readable mailing list archive. Last week I checked my entire mail archive and the storage code. This was a long slog tinkering with charsets and invalid emails. I lost one list to corruption (ruby-dev) but it’s well-archived elsewhere so I can pick it up again.

                  This week I’m dropping the synthetic ID generation system I wrote two weeks ago in favor of hashing an ID from the message contents so that I can import multiple archives of a list without fear of dupes, then test the system for recreating discussion threads with real data.

                  1. 1

                    That sounds awesome. I’d like to move kragen-tol etc. to a new system, but so far the schlep has put me off it.

                  2. 5

                    I’m writing a simple REST app in Haskell that is a test for a company I’m interviewing with.

                    I’m also swapping out an in-house oauth integration system in python that worked with a small set of oauth services with python-social-auth that offers integration with a large set of oauth services. Other advantages include free quality testing from other users and free development from the open source community. As well as the awesome chance to give back if I find bugs.

                    I’m also having a conversation about being a partner in a startup. I’m not sure how that will go though, since it’s an equity up front and get paid after we start making money type offer. I’m also continuing to learn Haskell and have been reading source code of GHC standard libraries as well as on the implementation of Snap.

                    I was sent a review copy of an ebook on Snap and I’m dying to start reading/proofreading it. I believe Haskell has a great future in web development. I hope I can help that along by improving any and all learning resources.

                    1. 5

                      I’m working on rewriting the Win32 drag-and-drop code in gtk+. I’ve got it mostly working, but still having some trouble with how gtk+ handles selections due to its very X11-centric API for this.

                      Yes, I am aware that this could be the least sexy project listed on lobste.rs this week. :)

                      1. 5

                        More work on Storm Applied than I can shake a stick at. It’s been interesting over the last week. I’ve had to create a topology that while not having any external dependencies, has to simulate in a realistic fashion, the latency that external dependencies can create (and in particularly the variability you see between say, the 90p, 95p and 99p).

                        It’s been an interesting exercise.

                        Beyond that, I’m working on taking our new Storm topology that is currently running dark at work and moving it from a simplistic “update matches” configuration that had numerous edge cases, to one that does a log appending style and then is later processed to update matches. On that front, props to Basho for building a database that works beautifully for the problem space and for answering lots of design questions for me already. Mostly of the “am I about to make a mess of this” variety.

                        1. 4

                          I’m working on Sourcegraph, code search for open source. It provides good usage examples and docs for you when you’re coding. This week, I’m focused on improving the snappiness of search and fixing outstanding errors that have popped up (let me know if you find any more!)


                          1. 2

                            Nice project! I like how methods are linked in the source code to their method pages.

                            What search backend are you using?

                            1. 1

                              Sourcegraph uses a combination of PostgreSQL and Elasticsearch for searching. We’ll write up a tech stack post one of these days, but ask away if you have any other questions.

                          2. 4

                            This week I will be finishing up the first version of the Dylan mode for CodeMirror [ http://codemirror.net/ ]. After that, I will focus on wrapping up my Redis library for Dylan [ https://github.com/pvwoods/dylan-redis ] so that I can start using it as a back end for experimenting with Open Dylan’s HTTP library.

                            So much Dylan.

                            1. 2

                              O man, totally looking forward to Dylan mode for CodeMirror.

                              I’d love if someone got to adding the missing documentation to the HTTP library before me ;)

                            2. 3

                              I’m working on creating some challenges for my school’s Computer Science Club. I’ve got the first one mostly done (it could use a few additions to the GUI), it’s really simple, it’s a server that randomly chooses a 32 bit integer (I’d have used 64-bit, but I’m not sure that everyone’s computers are 64-bit, and I didn’t want to give an unfair advantage to people), and has people register and make guesses across the network. The goal with this one is to introduce (or reintroduce) network programming, and build the simplest AI ever.

                              The two follow ups are a game of Connect 4 across the network (with a GUI, so the games can be projected on a screen) and a giant infinity-by-infinity Scrabble game, with infinity pieces, across the network. As an added bonus, the random number server and connect 4 game will be spoofable, meaning that people could try to make clients which make their opponents moves faster than their opponents really can. The Scrabble game would also be spoofable, but harder because the letters given to other players won’t be broadcast to everyone.

                              1. 3

                                Aside from my usual work, I’m writing a blog post about how to handle multi-lingual ecommerce sites (catering for switching both languages and currencies) without causing yourself HTTP caching or SEO headaches.

                                The focus is mainly on the high-level implementation, however the example is building such a solution in Rails, despite this, it should be lightweight enough to replicate in other languages and frameworks.

                                1. 3

                                  I’m going to try and compile my libgdx game Jumpr (https://play.google.com/store/apps/details?id=me.ramblingsby.jumpr) for IOS, using RoboVM.

                                  If I can get it to work good I’ll try to start planning for a new game. Haven’t been writing games for a while now, exited to get started again.

                                  1. 2

                                    That was a fun 15mn on the bus, thanks. I’ll take this opportunity to report a bug: when you hit the home button and put the game in the background, the little runner magically goes through all obstacles. Come back after a couple of seconds and you have effortlessly completed the level.

                                    1. 1

                                      I have uploaded a new version with a fix for this bug to the Google Play Store. Should be available in a couple of hours.

                                      1. 1

                                        Thank you!

                                        Oh, that is a good bug report, kind of removes the whole challenge. I will look into it, thank you again.

                                    2. 2

                                      Just released our Android app and started promoting it last week, hectic but rewarding: http://ridewithgps.com/android

                                      This week cutting my teeth in iOS development with the aim to release an equivalent iOS app ASAP.

                                      1. 2

                                        I’m happy to report that I just published my crowd-funding campaign for a semantic web search engine: http://www.indiegogo.com/projects/brodlist/x/6476711

                                        Please take a look and send feedback to: david@brodlist.com

                                        1. 2

                                          Two weeks to launch an app I’ve been working on over the past year. It lets people define “database tables” and build communities around it. Why would anyone use this? Because many apps such as Flickr, Pinterest are communities around various types of information. Essentially a “Forum platform”.

                                          Screenshots: http://imgur.com/a/agRne

                                          Code: https://github.com/jeswin/fora/

                                          1. 1

                                            Outside my day job, I’m working on Emacs Mastery (https://leanpub.com/emacs-mastery). It’s going to take more than a few weeks, so I promise not to say the same thing every week.

                                            1. 1

                                              I’ve been working on Quantave (http://quantave.com) - it’s a platform which provides market insights for Bitcoin traders. We’re expecting to complete development on our first release within 4 - 5 weeks, at which point, we will open our doors to the public.

                                              If anyone has any questions or would like early access please get in touch.

                                              1. 1

                                                Currently working on version 1.4 of my iOS app CopyCopy. Plus I’m playing with Silex microframework for a little CMS I have to make for some friends. :-)

                                                1. 1

                                                  chugging along on the Udacity Interactive 3D Graphics Programming course. I’m about halfway through; it’s a really great course so far.

                                                  1. 1

                                                    Finishing up support for Augeas value validation in my product, then moving on to improving scalability.