HNHacker News
TopNewBestAskShowJobs

eric_bullington

1,433 karma · joined February 1, 2012

email = "".join(["eric", "@", "eric", "bullington", ".com"])

www.ericbullington.com

[ my public key: https://keybase.io/esbullington; my proof: https://keybase.io/esbullington/sigs/uogXrtJClPOujLreeG3Cp9wulxr3GSsdAoA2Glb-YzY ]

submissionscomments
eric_bullington··on What Are Spomeniks?
Yes.

As someone who at one time spoke fluent Bosnian/Croatian/Serbian, I can confirm that "spomenik" can be (and sometimes is!) translated as "memorial". Indeed, the root of the word is a verb that in its archaic sense can mean "to remember", as does the verbal root of "memorial". Furthermore, "spomenik" can also be translated as "monument".

So while the word often is used in the context of the WWII socialist memorials, the word in fact just means "monument" or "memorial". For example, here's an article using the term for a memorial to veterans ("defenders"), specifically those who died, from the 1991-1995 Croatian War for Independence: https://pakrackilist.hr/spomenik-hrvatskim-braniteljima-dovr...

I don't completely disagree with the author's idea to use the original term to add some local color, but it's not a special term, just one of the general terms used for memorials and monuments. A related term, "spomenica", is also frequently used, but I'm not sure about the nuances between these two terms.

I'm sure a native speaker could fill us in.

eric_bullington··on Covid-19 projects looking for volunteers
With modern genomic science, we can pinpoint almost the exact time and place Covid-19 jumped from an animal host (likely pangolins intermediate host from bat reservoir) to humans.

It almost certainly jumped hosts to humans in November of 2019[1]. It has not been circulating in humans for long.

Indeed, several scientific publications have come out in the past decade that more or less predicted that a similar strain of SARS would jump hosts and become a pandemic disease[2].

Also, technically the Spanish Flu was just a bad flu season, right? Now, few believe now that Covid-19 will be nearly as bad as the 1918 pandemic (at least in its current mutation), but it will almost certainly worse than the 1957 flu pandemic, which was bad enough and which resulted in many governmental edicts similar to today, with many school and library closings.

I agree we need to keep cool and not overreact or panic, but we also need to take this thing very seriously. Even the experts are trying to figure this thing out. Disease modeling has come a long way since 1918, but modelers are not seers.

1. https://www.statnews.com/2020/01/24/dna-sleuths-read-coronav...

2. https://www.nature.com/articles/nm.3985

3. https://www.encyclopedia.com/media/educational-magazines/inf...

eric_bullington··on Passwords: Using 3 Random Words Is a Really Bad Idea (2017)
Exactly. The attacker would have to try a word-based attack to benefit from the ~7 hour time-to-crack.

So I disagree with the article's advice: "Don't use words in passwords. Ever." Yes, you should use caution when using words in a password, but even if you use a password manager, a 5- or 6-word diceware password is ideal. Even better if you stick on a 4-digit numeric "salt" to your diceware passwords.

But yes, I do agree that a 3-word password is too short (~33 bits of entropy[1]). It should be at least 5 words (~55 bits). And you really need at least 6 words (~66 bits, obviously) for a master password.

1. Using EFF's user-friendly, ~1200 word list for diceware.

eric_bullington··on “I Used AI to Clone My Voice and Trick My Mom into Thinking It Was Me”
Cryptography can solve social problems, but the problems need to be approached from a social perspective, not a computer science perspective. There's a hint of this type of approach in the work of Keybase.
eric_bullington··on A Kindergartener’s Best Computer Is About to Die
Don't know if you're familiar with the Dragonbox apps (original for algebra and Dragonbox Elements for geometry). Those are incredible learning experiences that would not be possible on paper. Even a desktop w/mouse for those apps wouldn't be ideal, whereas a tablet or mobile phone is perfect.
eric_bullington··on Ask HN: What service do you use for human translations of your website?
> You're also most likely going to pay per word, so if you can figure out a good way to not send them sentences you've already had translated you can save some money

The typical process would be to send them the translated sentences in Trados or tmx format (translation memory) and ask for a discount for 100% matches (you may even be able to discounts for "fuzzy", or <100%, matches). These discounts are often referred to as "Trados" discounts. That said, not all agencies/translators offer such discounts.

> We once caught a translator (NOT of the above-mentioned companies) located somewhere in Europe inserting some choice political statements about a specific biotech/GMO company we had as a client.

What happened then? This stunt would be a grave offense for a professional translator. A certified/sworn translator would probably lose their certification for it. I'm guessing your translator was a cut-rate freelancer doing this work on the side with little connection to the professional translator community, which generally prides itself on its professionalism.

Also, no reputable translation agency that I know of gets their translators for UpWork. They either find them through word of mouth, translator associations, or sometimes translator communities like proz.com. They don't typically "post" jobs, rather they have a list of vetted translators who have signed their confidentiality and other contracts, and whom they then email individually to ask if they're interested in job X (usually attaching the job). And the more reputable ones have their own certification process or else only work with translators certified by a reputable body (ATA, ITI, etc.). Most reputable translation agencies will also have a second translator edit or proofread the document once it's been translated.

eric_bullington··on Ask HN: What service do you use for human translations of your website?
> Fiver and maybe Upwork If you're going that route of finding a translator for each language yourself, I strongly suggest a translator community like proz.com, translatorscafe.com, or linguaquote.com (founded by HNer luxpir). Or a translator association like the ATA (American Translators Association). They all have translator directories you can search, and the communities have places you can post projects for bidding/quotes.

Alternatively, if you want human translation as a service, there are companies like gengo.com or unbabel.com.

But I strongly recommend against Upwork or Fiver. You can find some qualified translators on those sites, but you're much more likely to find someone who really doesn't know what they're doing. There are some of the same in the translator communities and associations, but if you're judicious about your search criteria, you're much less likely to end up with such a translator.

eric_bullington··on My Journey to a Better Language Learning System
I'm glad that you're integrating grammar into Chatterbug, even if it's implicit. I do believe that learning a foreign language's grammar implicitly (via immersion) is an inefficient way to pick up grammar. I tutored languages for 5 years in university and grad school, and I always saw the light bulb go off when I explained the rules why some word behaved in a certain way in a sentence. For most people, it's very enlightening and makes language learning easier and more enjoyable.

> I would caution against recommending that people pick up a grammar book unless it's an incredibly good one. Most are dry and difficult and assume you know the vocabulary of linguistics, which most people don't.

I strongly disagree. First, grammar books very rarely use any linguistics vocabulary. And learners can find totally adequate basic grammars in the back of introductory language learning books and textbooks. They do assume you know a little grammar vocab, but not linguistics (which is, of course, a field of study completely separate from language learning). For Indo-European languages, that includes things like "indirect object", "relative pronouns", "demonstrative pronouns", etc. And for declined languages like Russian and Greek, they may use terms like "nominative" and "accusative". But they often explain these terms first, and if not, that's why I recommend people first pick up a basic book on English grammar.

And yes, if your goal is simply to get by in a language, like to the level of a serious tourist, making frequent grammar mistakes is not a big deal.

But if your goal is to learn a language fluently, and particularly if your goal is to learn more than one language fluently, you should ask yourself if it's worth the initial investment of learning the basics of grammar, to the level that you're able to follow a basic introductory grammar. For most people reading HN, I'd think this is something they could pick up in several weeks part-time, or maybe a month or two if they have absolutely no background (like, you have no idea what the subject of a sentence is, or what verb tenses refer to). And then, based on my past multi-decade experience learning, teaching, and speaking multiple languages, I'd be willing to bet that things will "click" much more than if they had no idea what these things refer to.

Finally, I do agree that grammar should not be a major focus of foreign language learning -- maybe 10-20% of the time. But that 10-20% has the potential to make the other components of your language learning voyage much, much easier.

eric_bullington··on My Journey to a Better Language Learning System
@schacon Interesting post. I agree that language-learning is more of a marathon than a sprint. As someone who speaks several languages[1], it was interesting to read about your perception of how polyglots learn languages. You picked up on some good things (flashcards and these days spaced repetition learning programs since vocab is critical, multiple different tools and books, online tutors) but you didn't mention a characteristic that most polyglots I know share[2]: an excellent foundation in the grammar of their own language, and the inclination to spend the time necessary to build a good foundation in the grammar of whatever language they are learning. I'm sure there are exceptions to this rule, but it seems to be enough of a trend that it's worth mentioning.

Some people promote the idea of learning a language "naturally" through an immersive environment. Although immersing yourself in the language is critical once you've picked up a strong foundation, I've personally known very few people who have learned a language to near-native fluency as an adult by simply jumping into a new language environment. Kids do this all the time, but the way most adults successfully learn a new language is different from the way children do it. I've watched some people waste a lot of time trying to speak to native speakers of a language they're learning without having any kind of foundation in vocabulary and grammar. They would have done well to spend at least a portion of that time picking up a basic vocab through flashcards and learning grammar fundamentals of the foreign language in question.

And although I'm sure there are exceptions to this rule, most polyglots I know are fascinated by grammar, in addition to having a strong interest in phonology and speech/accents.

So to anyone who has tried and failed to learn a foreign language as an adult and is thinking of giving it another try, I recommend picking up both a review book on the grammar of their native language, as well as a basic but complete grammar of the language they are targeting. Spend some time with these books along with Anki and the language-learning apps, and then go out and immerse yourself in another language environment, either through online language communities, or living/traveling abroad.

And one last type for new language learners: be sure to study idioms and phrases when you use Anki or whatever flashcard program, and not just simple words. Having a good stock of idioms is critical to fluent conversation.

1. At one time, fully fluent in 4 languages, now 2 are rusty but I'm picking them and another back up. I've also enjoyed an intermediate level of fluency in an additional 5-6 languages at one time or another. (I've also worked as a professional interpreter (2 years) and translator (10 years))

2. The only exceptions to this rule have been people who have learned 3-4 languages as children, but even they have a much better knowledge of grammar than most Americans I know.

eric_bullington··on I don’t know who the Web Audio API is designed for
> The API has _zero_ provision for streaming MP3.

Did you look into Media Source Extensions[0,1]? Fetching and playing the various audio formats is a bit outside the purview of Web Audio. But you can feed streaming MSE into Web Audio. If I recall, you use Web Audio's `AudioContext.createMediaElementSource()` to use a (potentially chunked) MSE source with web audio, but it's been a while since I did this.

That said, Media Source Extensions (MSE) is only supported on relatively modern browsers (IE11+) but you should be able to use it to stream mp3 to the Web Audio API on supported browsers.

There's also a way to do this without using MSE for older browsers. See the 72lions repo below for an example[2]. It's a bit convoluted, but not as much work as your workaround. As described in the README of the 72lions proof-of-concept:

"The moment the first part is loaded then the playback starts immediately and it loads the second part. When the second part is loaded then then I create a new AudioBuffer by combining the old and the new, and I change the buffer of the AudioSourceNode with the new one. At that point I start playing again from the new AudioBuffer."

0. https://developer.mozilla.org/en-US/docs/Web/API/Media_Sourc...

1. http://dalecurtis.github.io/llama-demo/index.html

2. https://github.com/72lions/PlayingChunkedMP3-WebAudioAPI

eric_bullington··on Show HN: Ice – WSGI microframework to develop small web applications in Python
When did you last use sanic? It's far from limited, and advancing quickly. However, it's a microframework, so it's true that you'll not get a full Django-like experience (and Meteor isn't even in the same class of web framework as Django or microframeworks like Sanic, so there's nothing to compare there either).

But with respect to microframeworks, Sanic is getting pretty close to feature parity with Flask, only asynchronously. I'm not sure what kind of plugin architecture you're looking for, but you can do middleware with Sanic. Also custom protocols. Also decorators (e.g., for auth). And for namespacing, there are blueprints. I'm not sure what you mean by "conf hooks".

It does help with Sanic if you're already familiar with Flask. Sanic is very close to an async version of Flask.

For a task queue, you can run async tasks with Sanic alone using `app.add_task(some_async_function)`.

It's also simple to use apscheduler if you want a more full-feature async scheduler. Example:

    from apscheduler.schedulers.asyncio import AsyncIOScheduler
    from sanic import Sanic

    app = Sanic()

    async def tick():
        print('Work!')

    @app.listener('before_server_start')
    async def initialize_scheduler(app, loop):
        scheduler = AsyncIOScheduler({'event_loop': loop})
        scheduler.add_job(tick, 'interval', seconds=1)
        scheduler.start()

    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=8000, debug=True)
Finally, unless things have changed, you should be able to set event loop policy with `asyncio.set_event_loop_policy`, have you tried it?
eric_bullington··on Professors’ unprofessional programs have created a new profession
> I do exactly this, AM(A)A.

Thanks! Do you do this kind of work as a contractor, presumably?

Do you also typically write documentation for the projects you're working on (inside from inline comments)?

How did you get started in this line of work?

eric_bullington··on Professors’ unprofessional programs have created a new profession
I'm with you. This is the second time I'm reading about this niche and would love to find out more info about getting into the field.

I used to work as a scientific/medical translator and one of the things I loved about my work then was that with each new project, I had to learn enough about a new topic/subfield to become a bit of an pseudo-expert in it. I greatly enjoyed that research and would love to do some work in software development that would require the same type of constant learning with each new project. Diving into some convoluted, 20-year-old Fortran driving highly-specialized scientific software actually sounds kind of exciting to me (yeah, I'm not normal either :) ).

Is there much demand for this kind of work, I wonder? I'm guessing the best way to get your foot in the door is to be in academia, and those days are long passed for me.

eric_bullington··on Node 8.3.0 released
It's behind a flag now, but they're eliminating it, so it will not be released.
eric_bullington··on Marijuana use holds three-fold blood pressure death risk: study
> 1200 people is a fairly huge study,

1200 people is a huge, convincing study for a well-executed prospective, interventional study, like a clinical trial. This is a cross-sectional retrospective study, using merged data from several different sources. Retrospective, epidemiological studies are notoriously subject to bias, particularly ones like this one.

Such retrospective studies are good for forming hypotheses about diseases in study populations (and often, intervention studies are not feasible), but they are often inadequate for testing these hypotheses. As the study authors say themselves, longitudinal studies are required to really draw strong inferences.

I'd have to read the study to be sure, and it's been a long time since I formally studied or worked in epidemiology/biostatistics, but some of the numbers mentioned in this article look fairly unconvincing. For example, this study found very little association between tobacco use and metabolic syndome, which goes against most available evidence. Also, things like having insurance and being married are associated with a significant increase in metabolic syndrome (not sure if this is in line with existing research, but it sounds kind of counterintuitive).

eric_bullington··on Historians Uncover Slave Quarters of Sally Hemings at Jefferson’s Monticello
I'm afraid that's not it, but rather (probably for the reasons I outlined above), people who crossed the race line made up fake ancestry to explain their "different" appearance without admitting to African heritage. I know some families also claimed to have Middle Eastern or Italian heritage to explain their dark features. It's sad, but they did what they felt they had to do to preserve their safety and standing in the community.
eric_bullington··on Ask HN: What is the flaw of online education?
I've been doing a lot of self-study online, and two things jump to mind:

1) There should be many more interactive exercises during and after instruction, and not just multiple choice and fill-in-the-blank. There's a lot of potential for automated interaction that courses simply don't take advantage of, probably because it's time intensive for each course to do.

Khan is perhaps the best at this, but they still don't have as much as they could, and (understandably) don't have the depth and variety of courses of Coursera, etc.

2) Lack of social interaction. At university, I learned a lot of subjects very well simply by teaching others in them (tutoring students who were lagging, and later paid tutoring). I miss this interaction a lot. I should take the initiative and make YouTube videos and blog posts teaching others about material I have learned, but I often forget as I get lost in textbook readings and online lectures.

eric_bullington··on Historians Uncover Slave Quarters of Sally Hemings at Jefferson’s Monticello
Yep, both of my "Native American" family branches turned out to be in fact African American.

You should look into your ancestry, you may be able to track it down. Just be sure to depend only on primary documents (birth certificates, death certificates, family bibles, wills, census rolls, etc) and perhaps some very convincing secondary sources (like newspaper accounts, or academic works). There's a lot of misleading "genealogy" that people have done in the past 50-75 years, and particularly in the past 10 years in the genealogy forums.

eric_bullington··on Historians Uncover Slave Quarters of Sally Hemings at Jefferson’s Monticello
I am a (mostly) white American with some African-American ancestry, including several freed slaves. You're absolutely correct that freed slaves were always at risk of being re-enslaved in slave states and even sometimes in states where slavery was theoretically outlawed.

The solution that one of my slave ancestors and free seamstress wife came up with was for her to buy his freedom from a plantation owner. They then carefully recorded the bill of sale from this purchase in the country book of sales each time they moved, which was how a genealogist was able to track down their movements (and from his research[1], I connected a known branch of my family via primary sources, which was later re-confirmed by DNA testing). Clearly, this meticulous record-keeping was done as a shield against re-enslavement, although they likely still lived in fear.

This branch of my family crossed the race barrier some time around the civil war, but evidently only somewhat, because rumors followed that family into the 20th century, leading to claims of native American ancestry to explain their darker skin (as it turns out, according to DNA testing, I have ~3% African ancestry but 0% Native American ancestry).

Also, while it is true that freed slaves and their ancestors that crossed the race line faced fewer threats to their freedom than those who didn't, their life was often still full of risk to both life and property since their status was often known to many in the community. One son of the family I mentioned above made good as a trader, and became (the then equivalent of) a multi-millionaire. He married a white woman and lived a long life, and upon his death willed his considerable estate to his son, my 4th g-grandfather (wife had passed).

Unfortunately, one of his wife's nephews moved to annul the will and have the estate passed to him as next of kin, on the grounds that the heir was the product of an invalid marriage, as it was between a black man and white woman. The lower court ruled in favor of the nephew, but it was overruled in one of the first rulings of the reconstruction era SC Supreme Court. Alas, the legitimate heir never managed to recoup much of the estate in spite of the ruling, probably because no one would enforce it.

I'm sure this type of thing was quite common back then, and only grew worse as the region entered the Jim Crow era.

1. http://www.martygrant.com/genealogy/familydata/grpf1652.html

eric_bullington··on A Math Genius Blooms Late and Conquers His Field
Others have noted Feynman, Ramanujan. Walter Pitts is another one, who had a very rough childhood with poor, working class parents.
eric_bullington··on Underhanded Solidity Coding Contest
I agree with many of your criticisms (and have other ones for Solidity as well), but the lack of floating point is absolutely a feature, not a bug. There's no reason for floating point in a contract language. Floats should never be used for monetary values or counts, and you're not going to be doing numerics on the blockchain.
eric_bullington··on Underhanded Solidity Coding Contest
Oh awesome, glad you mentioned your project. I've actually been writing a blog post that parallels a lot of your complaints right here about Ethereum. For safety as well as implementation complexity, Turing completeness is a significant disadvantage for Ethereum, and I'm sorry to see it played up by so many as an advantage. Making a Turing-incomplete DSL need not be limiting and inexpressive, as you clearly know (and have shown).

I was thinking about creating a functional contract DSL that Coq could extract to. Not as familiar with Z3 and SMT solvers, but that's clearly another good approach to safety (I think Ethereum has finally started looking at formal verification after the DAO debacle, not sure what the status is. EDIT: looks like they've made a good bit of progress the past few months).

What about the status of your project? I see you've bootstrapped the contract language and a consensus protocol, do you plan on bootstrapping a P2P network? Or have you done that already and I missed it?

eric_bullington··on Angular 2/4 Is Too Little Too Late
The "Mostly Adequate Guide" is a tremendous intro to functional programming for any frontend/JS developer. I challenge anyone who knows a bit of JS and is not convinced of functional programming's advantages to read the guide.

My only regret after becoming comfortable with functional programming in JS (and eventually, even more robust techniques in Haskell, OCaml, and Scala) is not pushing harder for a functional approach in work projects that could have really benefited from the functional paradigm.

eric_bullington··on Angular 2/4 Is Too Little Too Late
> even though React components are classes...

Since 0.14, React components can be functions, too: https://hackernoon.com/react-stateless-functional-components...

eric_bullington··on Elliptic Curves as Python Objects
I really enjoy your blog. When are you going to publish a math book for programmers, covering a broad selection of programming-related math topics? I think you mentioned this possibility in a past blog post. I'd buy it.

I'll also make note of your Patreon:

https://www.patreon.com/user?u=615882

eric_bullington··on Ask HN: Best tool to build a single page, text-focused static content site?
> Best tool to build a single page, text-focused static content site?

Vim.

Ok, seriously. You probably want Sphinx. Some very nice, mobile-friendly themes (I like Paramiko), and it can easily build a single page with table of contents automatically from a collection of rst or markdown pages. It's technically for documentation, but some people use it for their static web sites and blogs. Ideal for a text-driven site. I used it once to build a single-page documentation site, with table of contents (no longer online).

If you want a service that supports Sphinx, instead of deploying yourself on s3 or github, you can use readthedocs: https://readthedocs.org/ For no ads, you can use their commercial service at https://readthedocs.com

Mkdocs is another documentation generator like Sphinx with some attractive themes you could customize.

What kind of long-form content? Sounds interesting.

0. Sphinx: http://www.sphinx-doc.org/en/stable/

1. A few Sphinx themes: http://www.writethedocs.org/guide/tools/sphinx-themes/

3. Here's a blog post (written with Sphinx) on using Sphinx as a static site generator: http://echorand.me/site/notes/articles/sphinx/static_html.ht...

eric_bullington··on Advice on learning Python efficiently
I strongly agree. Dealing with a language in development is hard enough when you're an experienced programmer, I can't imagine trying to learn programming with an unstable language.
eric_bullington··on Advice on learning Python efficiently
For many years, I worked on the periphery of the programming world, but with a very superficial level of programming knowledge. I was a "webmaster" back in the mid 90s, working with simple PHP, JavaScript and VB scripts. I then went to grad school for public health and afterwards worked in several biostat-oriented research analyst roles focusing on Stata and SPSS programs.

All these jobs definitely involved a very basic understanding of programming, but I had no understanding of many important fundamental programming concepts, and had created very few programs bigger than a 1-page script.

It was only when I started to learn Python, and then C (to write Python extensions), that everything really clicked. Something about Python made it so much easier than PHP or JavaScript for me. I think Python's relative lack of glyphs, brackets, and other "syntactic noise" (my opinion only) made it much easier for me personally to grasp big picture ideas. Python also prepared me for learning C to a pretty good level (with much help from the K&R book).

These two, in turn, gave me a good foundation for branching out into other languages, eventually including functional programming languages.

But Python was with no doubt the turning point for me, and even though I do little Python work these days (ironically, I'm back to JS but at a much higher level than in the 90s), I'll always be grateful for Python.

If you've struggled with programming and haven't given Python a shot, give it a try! If that doesn't work, maybe try Pyret like this post advises (once it's stable), or maybe some lisp such as Clojure. I also know some mathematicians who struggled initially with imperative programming but then thrived with Haskell. Point is, we think in different ways, so keep trying different approaches until something sticks.

eric_bullington··on Ask HN: What projects are you currently working on?
As someone who recently went back and did an extensive review of college math, I got a lot out of your site. I'm looking forward to your book!
eric_bullington··on The Joy of Linux Desktop Environments
> Perhaps I need to dedicate more time to understanding how things work?

Yes, if you don't already, learn basic command line very well, with stderr/stdin/stdout, pipes, sed, grep, find, cat, make, etc. etc. You'll then thrive in Linux, and it will help you with OSX, too.

Page 1 of 18Next →