HNHacker News
TopNewBestAskShowJobs

mraison

602 karma · joined November 15, 2013

∇.com
submissionscomments
mraison··on Fuzzing FFmpeg for fun and profit
There is also generative testing, which can be a good middle-ground between hand-crafted tests and fuzzing. You can think of it as a fuzzer with more guidance regarding input generation, and can uncover edge-cases that a fuzzer would take forever to discover. I tend to think of those 3 approaches as complementary.

Example in Clojure: https://github.com/clojure/test.check

mraison··on Writing Friendlier Clojure
Nice post! What about the following (untested) version of the sentence function:

    (defn sentence [mapping]
        (->> :start
             (iterate #(pick-next-word mapping %))
             next
             (take-until #(= (last %) \.))
             (clojure.string/join " ")))
There is no loop, and it almost reads like English: "Using :start as a departure point, iteratively pick the next words until you find one that ends with a dot. Join all the words generated so far with spaces."

Small catch: take-until is not yet in clojure.core, however it's easy to add to your utility toolbelt and there's already an issue open for it http://dev.clojure.org/jira/browse/CLJ-1451

mraison··on Why Is Europe Failing to Create More $1B Startups?
Once again, state in the US != country in the EU, and Europe != China. Those are not "local" languages (or "minority" languages), they are "national" languages, no matter how ridiculously small you may think those nations are. There are "regional" (or "local") languages too, but they are rarely used in a professional environment, and thus more akin to dialects in China. This has strong cultural implications.
mraison··on Open Sourcing the Stupid-Simple Messaging Protocol
Cool work. Any plans for an IETF submission?
mraison··on Prune: A Tree-Based, Home-Row-Oriented Code Editor
I think coding in lisp-family languages without using structural editing (aka paredit) is a significant waste of time. It takes maybe 2 hours to get used to it. If you don't use it, you will spend more time counting and adjusting parentheses than actually writing symbols, and you will spend more time fixing bugs caused by bad parentheses than thinking about the logic of your program. In addition, after you make the jump, you will never complain again about lisp having "too many parentheses".

"If paredit is not for you, then you need to become the sort of person that paredit is for. -Phil Hagelberg"

mraison··on Changing San Francisco is foreseen as a haven for wealthy and childless (1981)
Interestingly, Paris does have strict height restrictions for buildings. But two big differences are:

* it is easier to find tiny (and thus cheaper) housing in Paris, since the standards of comfort are lower. For people who want a simple shelter and spend most of their time outside, it can frustrating to look for housing in SF.

* public transit is everywhere in Paris and most areas inside the city are safe, whereas in SF people tend to choose from a small subset of neighborhoods. Cars are unnecessary - they generally create more problems than they solve.

mraison··on Tutte-Coxeter Graph
I don't know any examples, and maybe there aren't (at least as of today). But it is beautiful, deep and fun at the same time, so if you're into that sort of thing it's a perfect hobby.
mraison··on PEP 0448 – Additional Unpacking Generalizations
Whenever I see a new feature proposal for a programming language, I like to check how a language in the lisp family could solve the same problem with a macro (not trying to point out who is better than who, it's just for fun). For example, this 3-liner would get you the "multiple array unpacking" in clojure:

    (defmacro pep448 [f & args]
      (let [unpack? #(and (list? %) (= (first %) '$))]
        `(apply ~f (concat ~@(map #(if (unpack? %) (second %) [%]) args)))))
which can be used like this:

    (pep448 + ($ [2 3]) 4 ($ [5 6 7]))
    => 27
A bit verbose, so you probably wouldn't do it this way in real life. Thankfully there are generally easier and more elegant ways to handle this kind of situation.
mraison··on A Year of Spaced Repetition Software in the Classroom
I'm really glad to see such an encouraging and useful comment on HN.

I'm right in the middle of the John DeFrancis series (just started Intermediate Chinese Reader volume 2). These books seem to be almost forgotten and I haven't found any modern equivalent, so I was starting to feel slightly lonely in my quest for Chinese reading fluency :) I started them after trying

* regular flashcards: not very effective for me, as all the accumulated knowledge would disappear very quickly after I stopped practicing

* "modern" graded readers: they're nice, but far less structured than the DeFrancis' series, and they often stop at a beginner/intermediate level.

What's truly unique about the DeFrancis' series compared to other graded readers is that the texts are adapted to the vocabulary lists, rather than the other way around. Therefore characters and compounds can be introduced logically, in a coherent manner: for example each new character comes with a cluster of words that use this character, making the whole much easier to remember. The downside is that the texts often feel contrived and boring, but if you're serious about learning to read it feels much more effective and gratifying on the long term. The approach used by most other readers is to start from a simple and enjoyable story, and then adding a glossary containing the more advanced words in the story. But although the story itself is more natural and enjoyable for the reader, the vocabulary itself is much harder to remember.

It would be awesome if someone was willing to put in all the hard work it took to craft the DeFrancis' series, and write something similar with a more modern and less academia-focused content.

mraison··on Inceptionism: Going Deeper into Neural Networks
Really nice. I'd be interested in seeing a more in-depth scientific description of how these images were actually generated. Are there any other publications related to this work?
mraison··on Clojure Repl in Excel
Is there any chance to have this working with the OSX version of Excel?

I don't know much about the Excel environment and ClojureCLR so I don't know if it's feasible at all.

mraison··on RegExr: A website for interactive regex prototyping with syntax highlighting
Nice work :) Looks like this tool puts the emphasis on the pedagogical aspect.

For development, the most fantastic tool that I know of in this space is debuggex. Here is an example with roman numbers:

https://www.debuggex.com/r/Xqlv3QcAuw_EgPSM

mraison··on Clojure Development Environment for Excel
That's awesome. I'm wondering if there's a way to make this work with Excel for OSX. It sounds unlikely but I hope to be surprised.
mraison··on Multiprocess Firefox
You can have concurrency with only one thread. What you cannot have is parallelism.

More context here: http://stackoverflow.com/questions/1050222/concurrency-vs-pa...

mraison··on Creative computing with Clojure
I think dynamic functional programming languages such as Clojure are great for "creative coding" because they go straight to the point. You don't have to instantiate complicated objects, create classes all over the place, or consider every single code path to make the type checker happy. An advantage they have over non-functional (or "less functional") scripting languages such as Python or Javascript is the ability to move code easily without breaking anything (because most functions are pure).
mraison··on Grooveshark Shuts Down
To be fair, companies such as Bandcamp are making this easier every day. If you're an artist and want to be directly paid by your fans, it is becoming easier every day. However I agree that a big part of the industry is still very opaque (including services like Spotify, unfortunately)
mraison··on Ten Years of Git: An Interview with Linus Torvalds
I think we all understand why git branches are called branches, the problem is that it's a misleading name.

Git branches are pointers to commits. For example I can move the pointer to a commit to point to the previous commit instead. But the commit which was previously being pointed to is still there. However when I say that I reset a branch to a previous commit, I get the feeling that the branch was "cut", and so that the commit was lost - which is not the case.

This is why using the name "bookmark" is better in my opinion. Not because I'm used to it (I've used git much more than mercurial), but because it's a better representation of what is actually happening.

mraison··on China's Man-On-the-Side Attack on GitHub
I still don't really get it. What's the actual goal behind the attack? When the Chinese government decides to block a website, I can at least understand their motivations, as bad as they may be. But DDOSing Github just seems to be pissing the whole world off for a few hours without any actual long term consequences.
mraison··on Parents with annual family incomes below $125,000 will pay no tuition
> The only real options are RAships and TAships

Having been in that exact situation before, I wouldn't complain too specifically about Stanford's master in CS. That department makes it really easy to get a TA/RA (I'm comparing with my friends in less trendy fields of study), and while they represent a non-negligible amount of work, I think they are perfectly manageable at the graduate level. So while it's not financial aid, it actually makes it possible to go through the whole program with a positive net balance. Now I understand that the absence of guaranteed funding can feel scary for many, although the current state of the job market should greatly reduce their fears.

mraison··on MyTemp.email – Temporary Disposable Email
I wasn't aware of the bunch of services that provide temporary email addresses. Something I've been doing with my gmail address is to put johndoe+thenameofthesite@gmail.com instead of just johndoe@gmail.com. It's nice that Gmail gives you such a wide range of addresses that automatically point to your regular mailbox. It's clearly not ideal (doesn't preserve the privacy of my normal email address), but it's super easy to do and in most cases it allows me to filter out unwanted emails, trace which advertiser got my email address from which service, etc. Now of course if services start implementing the removal of the +* part from the email address then this doesn't work anymore. But for now I think they don't really care.
mraison··on Bug 1202858 – Restarting squid results in deleting all files in hard-drive
> like any other programming language

some real-world programming languages don't have undefined variables :)

mraison··on Sirius: An Open Intelligent Personal Assistant
> monolithic project

Actually it's not. Looking at what is on Github, it seems that the project is mainly about bridging a few open-source modules (kaldi, sphinx, pocketsphinx, openephyra) together to make an end-to-end system. So if you want to contribute, you can always work on improving one of the base modules (that handle things like speech recognition, question answering, etc).

mraison··on Author of “Unix in Rust” Abandons Rust in Favour of Nim
> Maybe someone else can confirm, but I think right now Rust can't cross-compile; I would hope that this changes after 1.0, as LLVM makes it fairly easy to do.

Rust can cross-compile, at least for a limited set of targets (see https://github.com/npryce/rusty-pi/blob/master/doc/compile-t... for an example)

The main pain point for the moment is that you need to build the cross-compiler yourself (which takes a while), and since the language changes every week, you have to recompile the cross-compiler every time.

mraison··on Moreutils
From the man page:

> Unlike a shell redirect, sponge soaks up all its input before opening the output file. This allows constructing pipelines that read from and write to the same file.

mraison··on Apple's original business plan
Interesting to see that the "growth curve" was already a thing back then.
mraison··on A Computer Scientist Tells Mathematicians How to Write Proofs
Great link, thanks!
mraison··on A Computer Scientist Tells Mathematicians How to Write Proofs
As noted in some comments, writing a non-trivial proof by hand with TLA+ only seems possible if there exists a good repository of non-trivial propositions that one can start from.

Does anyone know of interesting initiatives out there to build an open repository of mathematical proofs?

mraison··on Final – A credit card built for the 21st century
> I just want an online service that will generate a new credit card number for me on demand.

I'm wondering why it's not more widespread. My (small) bank has been providing me a unique card number for every purchase for at least the last 5 years, and they're not usually on the cutting edge regarding banking technology. You can also give a maximum amount that can be withdrawn on the card, and once someone has withdrawn money using that number, no one else can do it.

mraison··on Facebook's std::vector optimization
> most of us had in-house stl libraries for decades now

I've no doubt there has been many talented programmers for decades, but what about open-sourcing these "in house" libraries if they are so great, to avoid countless other programmers the need to reinvent the wheel? I think it would be more constructive than bashing Facebook for being late to the party.

mraison··on Deep Learning Image Classifier
I think that when you're not expected to publish any papers to rationalize what you're doing, you're free to use any possible ugly hack to improve your results, (using a "kitchen sink" approach where you just combine the results of lots of unrelated techniques, extracting words from the URL, using the URL to actually fetch some related textual content on the website, etc). This gives private companies a competitive advantage over research institutions - their only purpose is to "make things work", not to introduce new techniques and have interesting insight about them.
← PreviousPage 3 of 4Next →