1. 23

    My entry is short this week as I’m not in the mood for talking much.

    If anyone knows of interesting compiler or related work (including, say, LLDB, LLVM, etc), I may well be interested to hear about it. I prefer working remotely but might be interested in discussing other options.

    As for Dylan, I don’t know what my future is with it at the moment. Multiple attempts to get others involved have largely failed. A comment that I made last week about what if I did something that mattered got 4 people to upvote it.

    There are so many interesting things that can be done on top of an industrial quality foundation. Instead, people quake at the thought of working on something big or involved. We’re in a time where people are proud to try to proclaim that they’re less than average, as a number of posters here on lobste.rs like to do. So I’m frustrated, I’m sad, and overall, I’m just really tired.

    I found an answer to my question last week. I started writing a new document as a project notebook listing existing projects, status, notes on them, etc. I just don’t see much point in continuing given the above and the lack of any payoff in doing so.

    1. 16

      Your Dylan posts have been really inspiring to me. Sometimes I worry that the work that I do is somewhat quixotic, or worse, aggressively counterproductive. Yours was neither, to me at least. You’ve been consistent, passionate, and downright interesting to read for the past few. Right now it seems like your project is just a struggling seed, but it’s probably gotten farther than the vast unseen majority of passion projects posted to message boards.

      I’m sorry that you’re feeling down. But if it means anything, your posts have brought me up.

      Also, for perspective. There’s like on the order of 3000 users on lobste.rs, I’m willing to bet that you have one of the highest average interest per post [avg comment score, large volume of posts]. So don’t sweat the upvotes. In our small pond, you definitely have our interest. For me at least, I strongly associate this small community with BruceM who loves OpenDylan. Be well, I wish you the best.

      Edit to update: TL;DR - I don’t know how I can help you with Dylan, but I want to point out that perhaps the payoff will be in an unexpected form; you inspired at least one person when they were down.

      1. 3

        Also, relying on others for payoff will not really lead to a lot of happiness, probably. (From experience, anyway.) Maybe just do things for the fun of it.

        1. 5

          To be sure, I do most of what I do because I enjoy it. I usually refer to myself as “fun-employed”. I do contract work that I enjoy and I do other projects that I enjoy (Dylan stuff being a part of that). My sadness and tiredness stem in part from some other issues (depression), but also the realization that I can’t achieve some of my goals for Dylan by myself, so I’ve tried hard to get others involved without much success. Maybe I let myself get a bit too deep into what I want out of Dylan for my own good.

      2. 6

        I am not surprised that it’s so difficult to attract new developers to OpenDylan. There are tons of new programming languages out there now and you’re competing for attention against companies like Microsoft, Apple, Google, and Mozilla.

        I hadn’t heard of Dylan before and one obvious question I have is: why should I care and invest time in learning about it? For example, Swift is obviously interesting if you’re working on iOS. Rust is a very interesting approach to systems programming. Go is starting to be everywhere so the big ecosystem around it makes it very interesting.

        What’s is special and unique about Dylan and where does it really shine at?

        1. 16

          Funny thing … Dylan was originally developed at Apple (along with CMU and Harlequin as partners) in the 1990s. It died at Apple for a variety of reasons, most of which had little to do with Dylan itself, much like many projects at Apple in the early to mid 1990s.

          What makes Dylan interesting?

          • It is a Lisp with an infix syntax.
          • Multiple dispatch / generic functions ala CLOS.
          • It has a Common Lisp style condition system.
          • It was the first or one of the first languages to offer a macro system with an infix syntax.
          • The core of the language is pretty elegant. The core concepts fit together cohesively and make sense together. (In contrast to some other languages around today.)
          • It has a pretty involved type system, including some aspects of dependent types, but without everything that one would want today. The type system is optional, but most commonly written code is typed.
          • It generates native executables and shared libraries.
          • Pretty good code generation as the compiler was previously a commercial product with a large team working on it who had years of experience implementing Common Lisp and other things.

          Personally, I came (back) to Dylan after a very unhappy time with seeing where things were headed with Scala, poor build tools, a slow compiler, a complicated language, slow development cycle, and decided that wasn’t a world that I wanted to live in. I also ended up not wanting to be tied to the JVM, which also changed my available options and interests.

          For someone who wants to learn and do interesting things, there’s a lot of open projects and interesting things to do.

          • Interested in numerics and generating good code and eliminating boxing overhead? We do okay at that, but can do better.
          • Ever wanted to hack on a compiler backend? We have a couple of those.
          • Been interested in designing aspects of a type system or working on implementing parts of a type system? We have a number of open projects in those areas.
          • Interested in FFI, integrating with Objective C libraries or other things? We have a number of open projects in that area as well, including the basics of an Objective C bridge and a fully implemented C-FFI.
          • Find macros interesting? We have some fun things to work on in that space as well?

          But those are things for people who are interested in working to extend their skills in the language design and implementation area.

          Without thinking too hard, we can probably come up with a good 30-50 projects, involving writing code that works with an industrial quality compiler implementation or related tools (like extensions to LLDB, etc) where the code involved could be in Dylan, C, C++, Python, JavaScript, etc depending on what exactly the project was. Some of these are more suitable for beginners, some for experts some for everyone in between. You don’t have to learn just by building toy compilers, at some point, diving into a full blown system will be a great experience.

          I personally enjoy writing prototype code in Dylan, but we’re missing libraries. Most of them aren’t too hard to do, but there’s plenty of help needed and plenty of areas where we can help someone learn wonderful and amazing new things.

          I’m currently building my own SAT solver as I’m interested in what might be possible with the addition of refinement types to the type system. (Among other potential uses for a SAT solver.)

        2. 4

          Sorry to hear this. You sound very tired.

          Can you put the Dylan stuff down for a bit? Just enough to recharge? FWIW, it sounds really cool; I’m just a bit committed to finishing something big of my own for once. I don’t think I’m the only one who’s in the “temporarily unavailable” category, either. I agree that people fear working on something big; our ‘technological plenty’ unintentionally creates a culture of consumption and taste over raw creation.

          I hope I can read more about Dylan via you and others.

          1. 2

            I think understand some of what you’re going through. At work, I’m involved with several huge scale projects, but sometimes it’s hard to get people to see past the immediate problems (JIRA-chasing, if you will) to see what we can do on a larger scale. It’s hard work, and an uphill battle, but if nothing else, I’m working to build the internet I want to see and quite frankly, I couldn’t do anything else. In the same vein, you’re building the language you want to see, and it’s an uphill battle, and I’m sure many times people don’t seem to see the bigger picture. Hang in there.

            1. 1

              There are so many interesting things that can be done on top of an industrial quality foundation. Instead, people quake at the thought of working on something big or involved. We’re in a time where people are proud to try to proclaim that they’re less than average, as a number of posters here on lobste.rs like to do.

              Are you being hyperbolic, or do you actually think that’s the issue?

              1. 1

                Both. It is certainly possible to pull out posts and comments saying similar things to what I mentioned. But should we always take them at their own word? It isn’t clear.

                This sort of comment isn’t all that uncommon: https://twitter.com/relrod6/status/513943840949288960

                1. 1

                  Yeah; it’s a standard boring comment. I wouldn’t worry about it.

            1. 18

              Nothing personal taken, i’ve been deliberately posting a lot. I’ve figured if it was a problem @jcs would tell me to knock it off.

              For what it’s worth, I am heavily self-editing. Probably only one in ten posts is a “eh, I don’t know how people will take this, let’s see if folks feel it fits”. The rest is “this was an interesting post/paper (I’ve been digging into CS history lately) that I think would fit”. The number of times I go to submit something and see it already submitted a few hours prior is steadily increasing; I think it happened four times yesterday.

              1. 16

                I’ve really been enjoying your compsci posts and paper posts. My favorite thing about lobste.rs is that people post (usually good) papers here. Post like that tend to not be viable on Hacker News anymore. I absolutely love that classic papers can become top posts here.

                Personally, I wouldn’t mind seeing more papers and deeper dive stuff. Maybe cut back on the “bloggier” stuff? (I’ve been guilty of posting some lame stories I later regretted wasting people’s time with, so I shouldn’t really speak to that.) FWIW, I didn’t really have a problem with your posting rate.

                1. 6

                  I agree. I love finding these papers on Lobsters.

                  1. 3

                    I have been posting less papers, I wasn’t able to search through my history very well, though this may have been fixed (BTW I think non-upvoted posts should show up in search). Some great stuff didn’t get upvoted, or stuff gets upvoted and not commented so it isn’t terribly useful.

                    1. 2

                      I dunno, it feels like the bloggier stuff gets more upvotes than the papers. There seems to be a sweet spot where something is written informally using a popular language but references more serious CS concepts; the stuff that explicitly sets out to explore those concepts gets ignored.

                      1. 8

                        PDFs don’t really read well on small (phone) screens. I tend to do most of my reading on my phone on my commute, and it wouldn’t surprise me if others were in the same situation.

                        1. 1

                          No kidding. The ones with two-column text are even painful on landscape monitors <= 15". I wish PDF had not managed to become such a standard. I have been moderately tempted to buy a Sony Digital Paper (an 8.5"x11" eink ereader) just because of this problem, but the ~$1,300 price is just too steep.

                    2. 2

                      Yeah, you’re obviously spending more time reading than I am these days. :) Don’t worry, it’s hardly a crisis.

                    1. 2

                      More stock trading stuff (mostly backtesting an automated trading strategy on historical data), plus a little bit of 3-D printing and modeling. In particular I just learned about 3-D modeling with interval arithmetic, which looks like an impressively useful technique for a variety of 3-D algorithms. Most of the work I’ve found in the area so far is in raytracing of implicit surfaces, but I was thinking it might be a cool way to render parametrically defined surfaces instead, so maybe I’ll do that.

                      Where this comes from is that I wanted to 3-D print a continuous and fairly smooth heightfield standing on its edge on a RepRap, and so I took the simple approach of making two copies of the heightfield surface a millimeter apart, generating four surfaces around the edges to make it a solid, and generating an .stl file. Problem is, the thickness of the plastic depends on the slope of the heightfield. What I really want is something like the PostScript stroke or the <canvas> 2D strokePath operator, but in 3D — I would give it a zero-thickness surface and it would generate for me a 1-mm-thick solid enclosing it — and I don’t know where to find that. (One approach would be a Minkowski sum of the surface and a sphere, corresponding to “round” linejoins and linecaps, but that generates much more complicated geometry than is really necessary.)

                      Really, it seems like there’s no equivalent of PostScript, or even SVG/PDF (PostScript without the programming language), for 3D yet. There are some cool algorithms in CGAL, including the Minkowski sum, and OpenSCAD is a little language with some parametric modeling features (including, again, Minkowski sum), but it still feels terribly limited and limiting to me. The OpenJSCAD variant, which uses JS instead of its own language, looks superficially more promising, and also has a way cooler UI, but I haven’t tried doing anything serious in it yet.

                      So I’m getting together with a mechanical-engineer friend of mine tomorrow night who has done some pretty impressive 3D modeling stuff interactively, and also a little programming, and then hopefully I’ll understand a little better what’s out there now, and whether there’s a “3D PostScript” or not, and what it would need to do.

                      Also, I need to get http://www.canonical.org/ back online.

                      1. 1

                        If you’re into Clojure, check out scad-clj. It’s somewhat actively developed and more powerful than plain OpenSCAD.

                        Edit to add: more powerful in the sense that it’s very extensible, repl friendly, etc. You can still feel the OpenSCAD underneath, though. So it may still feel limiting. YMMV, I had fun.

                        1. 2

                          scad-clj looks like it’s generating the geometry in the same language that you use for writing models, so maybe I could successfully use it to do the kinds of things I want to do! Also, it has font support! Those are both super awesome.

                          The main basis for my gripe with OpenSCAD is that your model program doesn’t have access to the geometry it generates, so it can’t do things like “smooth off sharp corners” or the shell operation I described above as an analogue to the PostScript stroke.

                          Thank you very much for the pointers!

                          1. 1

                            To be honest, my 3D printing exploits have more or less been the digital equivalent of finger painting (unfortunately, I’m too old for it to be considered cute)–so, I’m probably not the best person to be recommending software for abstract geometric transformations that need to be correctly rendered in meatspace.

                            I will say this, I really enjoy Clojure and it was a breeze to use this library to convert coordinate data* into printable form with this lib. You can set up the stock GUI (OpenSCAD’s that is) to listen for repl updates, so it’s painless to sculpt your model from your clj repl and compose functions and abstractions and what not–while watching your model update instantly.

                            • I happened to have coordinate data as a subset of some data in a simulation I was writing. It seemed like a fun tangent to go and try to print some arbitrary abstract data. I think I had to write 3 or so functions to get a decently printable (and surprisingly complex) model up and going. From there it was hard to resist transforming the model from there.
                      1. 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.”

                        1. 8

                          We always talk about technical stuff we work on, I’m up for tossing a curveball.

                          I spent a fair portion of last week working on something I’ve kept hidden to myself for a while, a high-fantasy ‘legendarium’ in the vein of Tolkien (though, I emphasize, not nearly as good), complete with conlangs, maps, even a model of the solar system the various characters inhabit. I’m taking a lot of queues from my reading of Ancient Sumerian and Zoroastrian myths, as well as drawing on my own knowledge of various religions (a subject of some interest to me, for various reasons). I doubt it’s particularly good (and I am unlikely to ever share it), but I enjoy writing little stories to add to the mythos of the various cultures in my little world.[1] I know lobste.rs doesn’t often stray from the very technical subset, but over the last few months it’s become abundantly clear to me just how important non-technical[2] time is to my continued sanity. In particular it’s easy to get caught up working on something difficult (say, like porting large legacy codebases to a micro-service architecture, all the while fighting uphill against a waterfall) and get depressed when despite heroic effort, nothing seems to move. Working on something fully non-technical is liberating. I can feel like I really make progress – whether it’s in writing, or in crafting new and interesting facets of a little language, or finding places to hide linguistic jokes or puns. Conlanging in particular is a hobby I managed to leave behind when I started studying math, and it’s been a real joy to pick it up again.

                          So there it is, fellow crustaceans, what are you doing (that isn’t technical) this week?

                          [1] Yes, I know, as far as non-technical projects go, this is pretty technical, but importantly, it’s technical in a different way than I usually am (Linguistics and, to some extent, Philosophy rather than Mathematics and Programming)

                          [2] Well, at least, less technical

                          1. 9

                            You should check out the world building subbreddit, /r/worldbuilding IIRC.

                            My “non technical” side project last weekend was creating a floating platform to grow herbs and flowers on a pond near my house (away from the hungry deer and rabbits!) I caved this weekend and started fantasizing about attaching motors and microcontrollers to be able to control them remotely (or yield autonomous control). If all goes well it would be cool to have a ‘floating garden’ that is semi autonomous. I’ve got some preliminary designs for a valve system (to replace the wick watering hack I have now.) However, in all likelihood, they’ll forever remain dumb floating platforms, leashed to the shore.

                          1. 11

                            I’m dropping out of my PhD program at the end of the semester and joining a small startup in Cambridge. I’m currently reading some papers on machine learning to prepare. (In addition to a bunch of other things to wrap up the semester.)

                            1. 4

                              Which papers are you reading?

                              1. 2

                                Here’s one: http://people.cs.umass.edu/~sameer/files/largescale-acl11.pdf

                                Basically anything to do with entity disambiguation and coreference resolution. (My PhD was focusing on computational biology, so this area of machine learning is new to me.)

                            1. 5

                              I spend most of my time in Emacs. I’ve set it up so that I can do anything development-related directly from within it - I use it to edit code, as a file manager, to manage git repos (Magit is fucking awesome) and as a terminal emulator. It’s also what I use to organize my life (Org mode + agenda mode).

                              I use Skype for personal IM and HipChat for work-related IM. I also use Screenhero for pair programming, Safari for web browsing, Mailplane for email and work calendar. And that’s about it.

                              1. 2

                                org-mode is seriously awesome and addictive. (I enjoy vanilla org-mode, + agenda, org-habit, org-drill, and various other circles of Org’s Inferno.) Curating my org-workflow is seriously encroaching on other aspects of my life and I love every meticulously tree structured second of it.

                              1. 4

                                emacs (all development, org-mode, notation workflow, magit, shell, SLIME, cider/nrepl, general purpose text editing, file system management, and more).

                                leiningen + various plugins

                                quicklisp

                                Incanter (standalone and as libraries)

                                OS/dist: OS X, Debian

                                1. 1

                                  Wow, this is a really comprehensive list. Wonderful post.

                                  If anyone is interested in learning more about ML, but is a bit shaky on a particular prerequisite topic, or indecisive about a particular source of information, or is unsure about estimating how long it will take to learn a set of topics, I suggest checking out metacademy, I recently stumbled across it on hn. Here’s a pretty thorough walk through: http://www.metacademy.org/roadmaps/rgrosse/bayesian_machine_learning. The (3) “roadmap” sections of the site are really nice, and seem to be thoughtfully curated. There’s also an overall list page and a search page to find individual topics.

                                  It’s geared towards making curated syllabi for topics http://www.metacademy.org/about. But right now it pretty much only has stuff on machine learning. It’s opensource and I really like it so I thought I’d shamelessly plug it.

                                  1. 1

                                    Better suited to a blog post than a paper. And wtf is up with the random xenophobia thrown in at the end? It leaves a sour taste for no reason.

                                    1. 1

                                      Yeah, that ending was weird and uncalled for, I actually didn’t see that last sentence until you pointed it out. I was hoping this would spark discussion, though I agree the tone of the source leaves something to be desired. FWIW, I think the context was a speech, not a paper; not that it really changes anything.

                                      1. 1

                                        I agree that it sounds a little strange when written down and wouldn’t necessarily fit in a written article. However - it is clear that he’s advocating huge investment in a new technology, the kind of funding that still really only comes from government. And fear of falling behind other countries technologically is a time tested sales tactic for government. I think that hinting at china in particular is just because they are the specific country known to be doing the most investment in this kind of thing.

                                      1. 3

                                        This visualization is unrelated to software, software engineers, computer science, or hackers. I don’t think it’s on topic for lobsters.

                                        1. 2

                                          Fair enough, I thought it was a neat informational visualization that didn’t seem too politically charged.

                                          1. 1

                                            I imagine if California had been at the top of the freedom list (gay marriage, yadda yadda) it would’ve been much higher voted.

                                            1. 1

                                              California is at the top of the freedom of marriage list. What do you mean by “…the freedom list (gay marriage, yadda yadda)…”?

                                              Do you mean that lobste.rs would have voted it higher if California was at the top of the overall list? Or that lobste.rs would have voted it higher if the top overall states' freedom combinations included more members of the set of freedoms which include/are closely associated with: “gay marriage” and “…yadda yadda”?

                                        1. 2

                                          Scientist and open-access advocate, Michael Eisen, founder of the Public Library of Science (PLoS), forsakes open access.

                                          http://www.michaeleisen.org/blog/?p=1580

                                          1. 2

                                            Somewhat off topic (related to an example on the page): What is the general opinion on use of the threading macro in clojure? Is it more idiomatic to use it liberally? Is there a certain cutoff when composing functions, above which you have to use the threading macro? Are there any not immediately obvious, but great, use cases for the threading macro? (I am sort of aware of ->> ’s use with map, filter, reduce)

                                            Basically, is it a matter of taste, courtesy, or necessity? Or am I missing the point because there is some glaringly obvious use of the macro that I’m not aware of?

                                            1. 1

                                              I’ve had this happen to me twice.

                                              1. 2

                                                This presentation seems interesting and I like the design of the slides, but I wish there were some notes or a writeup of some sort. I get the gist of the presentation by flipping through, but it would be really nice to hear what the speaker / author had to say.

                                                Am I missing something on the site?

                                                In the future, when possible, should slide decks be posted with accompanying writeups for context? (I’m guilty of not following this suggestion.)

                                                1. 3

                                                  I understand your pain. Some concepts to look up if you want to learn what the talk was about (probably, I wasn’t there):

                                                  • Riak
                                                  • Eventual consistency
                                                  • CRDTs
                                                1. 2

                                                  Here’s an open access paper on fast multipole methods: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2634295/pdf/nihms77405.pdf

                                                  1. 6

                                                    You have submitted three posts from your blog and one post from ‘valbonneconsulting-blog today.

                                                    Incidentally, the user that invited you, ‘valbonneconsulting, has submitted one post from your blog and one post from their own blog. This is certainly a coincidence. 'valbonneconsulting also happened to submit a youtube link to the video that your latest post is about.

                                                    For some reason it seems that those posts aren’t doing too well. Perhaps the both of you will have better luck if you stop loading the new queue multiple times per day with your respective blog posts.

                                                    Edit: For what it’s worth, I think the ‘valbonneconsulting github sorting algorithm submission is a better example of content to submit. Please don’t spam the new queue with blog posts multiple times per day, especially if they are obviously your own.

                                                    1. 6

                                                      Since when has yosefk ever produced anything low-quality?

                                                      As might be surmised from my history, I’m a fan of Go (and not so much Haskell), but seeing the different approach was pretty enlightening. Particularly, the idea that concurrency is part of the problem while parallelism is part of the solution caught my attention. Something to think about, I guess.

                                                      1. 4

                                                        I saw this link on the new page shortly after it was posted, it received (- 2 low-quality) almost immediately. Two of the links that were posted before it had received (- 2 low-quality) within a few minutes of being posted. Those two seemed to be good, on-topic links: ‘parallelism-concurrency-link and 'skyline-github-link.

                                                        Before those two, there are three links to blogs posted by (I believe) the owner of those blogs under two different accounts. Once you get past the blog postings, the (- 2 low-quality) pattern starts again. The ‘julia-link immediately before the blogs received (- 2 low-quality). Then two more blog posts were submitted by (I believe) the same person operating two accounts. Moving earlier on the queue, the pattern continues.

                                                        The ‘clojure-video-link, the 'parallel-api-link, and the 'Guido-talk-link (all good in my opinion) received the (- 2 low-quality) at about the same time as the earlier ones.

                                                        I noticed this because I visited the new page a few times over the past several hours and saw a few well received links that I wanted to follow. I happened to check again around the time that the OP link was posted and noticed the (- 2 low-quality) on this link and all the others I mentioned.

                                                          1. 2

                                                            Yes, I’m fairly certain this is a pattern of malicious behaviour by a pair of accounts; jcs has been made aware and I’m sure he’ll get to the bottom of this.

                                                        1. 2

                                                          Found the sourceforge page of the matlab/simulink project that EOM is based on:

                                                          http://sourceforge.net/projects/adv-vehicle-sim/

                                                          Good to see migration from matlab/simulink to clojure. Can’t find a project page for the new work though.

                                                          1. 1

                                                            Link to new project page:

                                                            https://github.com/ImagineMade/eom