HNHacker News
TopNewBestAskShowJobs

erjiang

1,213 karma · joined December 13, 2011

You can email me by sending mail to erjiang at alumni iu edu
submissionscomments
erjiang··on What Color Is Your Function?
Really, any language that has threading gives you the easy concurrency that you want. Now, if you limit your choices to "concurrency, but not with OS threads", then your pool is a lot smaller.

I think Clojure (core.async), Haskell (GHC), and Rust would also give you what you're looking for.

erjiang··on What Color Is Your Function?
It compiles down to JavaScript that you can then run on Node or the browser.

I once wrote a big long rant about the mess that JS and Node have made trying to cope with async code and got tons of comments proposing X or Y library that would "fix" the issue. Not a single person mentioned StratifiedJS. I wonder if there was some history to it that prevented it from getting momentum.[0]

[0] http://notes.ericjiang.com/posts/791

erjiang··on El Capitan’s Dawn Wall Climbers Reach Top at Yosemite
It's a tough debate. On one hand, bolts are not very visible and no wildlife is going to try to eat and choke on a bolt. On the other hand, it's permanently altering the rock, and bolts don't have an infinite lifespan. There are also cases of landowners disallowing white chalk (or chalk in general) because it visibly stains the rock and doesn't wash off very quickly.

Bolts allow cliffs to be used for recreational climbing, much like how trails alter the landscape, but allow the land to be used for recreational hiking. No human activity is 100% impact free, unfortunately.

erjiang··on El Capitan’s Dawn Wall Climbers Reach Top at Yosemite
The rating scale has also shifted. A difficult route may have been graded a 5.10 when it was established, simply because that was the limit of the scale. But if it were regraded today it might have a more precise grade like 5.12b.
erjiang··on Show HN: Learn Chinese Through Novels
Maybe, but this is rather like using a Cyrillic letter in a Spanish-teaching website. "What language are you teaching anyways?"
erjiang··on Show HN: Learn Chinese Through Novels
I don't know what the creators' intentions were regarding the favicon. It is, however, the katakana "chi" (チ), which corresponds to the name "Chicory". Seems bizarre, but that's the connection I saw.
erjiang··on Segment is giving away free Watsi gift cards
It's neat that I didn't have to create an account to use the gift card, but I fat-fingered my email address when using it. I don't think I'll get an email confirming my donation (typed ".co.m" instead of ".com") because of this. Not sure how I can self-service fix this since I never created an account.
erjiang··on The Huge, Unseen Operation Behind the Accuracy of Google Maps
Going outside and recording what you see is still the gold standard for collecting data. Don't feel like you have to fix everything in your city - if you can write down a little bit every time you go out and then come back home and enter it in using the map editor, that's very valuable.
erjiang··on The Huge, Unseen Operation Behind the Accuracy of Google Maps
If you're fascinated by maps and digital cartography and haven't done so yet, do check out OpenStreetMap! It's competitive to Bing, HERE, etc. but everything is open, and the data is yours to play with.

There are projects based on OSM for routing, geo search, map editing, etc. that are also free. Definitely a lot of room for both programmers and non-programmers to contribute.

http://wiki.openstreetmap.org/wiki/Main_Page

erjiang··on Wanderers: a short film of humanity's expansion into the Solar System [video]
hollywood blockbusters have many shots that are very labor intensive, and they can be pretty cavalier about throwing money at a problem. For example, films with a lot of mixed live action and CGI can take a lot of manual frame by frame work, and anything involving realistic character animation is a huge time sink. Not to mention huge server farms.

It looks like this film uses a limited number of shots (no cutting rapidly like action films), takes advantage of a lot of nasa and other imagery/data (no army of matte painters), limits characters to simple walking movements (no Pixar gesticulating), and probably keeps the particle effects and physics sims minimal (no computational fluids sims for glorious explosions).

erjiang··on Autoscaling, Welcome to Google Compute Engine
I'm confused - are you saying that scaling was horribly broken for App Engine, not just Compute Engine? Because it seems that it's much simpler to scale App Engine apps and App Engine has been around a long time.
erjiang··on The Other Side of Diversity
"Han" in "Hanguk" is not the same "han" in "Han Chinese". Within East Asia, Koreans and Han Chinese are distinct ethnicities.
erjiang··on Show HN: Run dedicated iOS Simulators in the browser
I'd be willing to pay money for this, seriously. I've followed you on Twitter - let me know if anything happens.

We were using and enjoying app.io[0] until they decided to pivot and stop serving us.

[0] they didn't support pinch gestures, which made using a map impossible

erjiang··on Show HN: Using computer vision to detect birds in parks
Speaking of CV + birds, I knew the guys behind a small company called Ornicept.

Basically, wind turbines kill birds. To protect birds, you have to collect data on birds in the area. The standard way of doing this was literally putting a guy in a lawn chair for a few hours each day counting birds, and then extrapolate the numbers.

They put some cameras in the field and run CV on the footage to count the birds instead. Cameras are cheaper than people in lawn chairs, apparently. I don't know if they still do this, but it was their initial product.

erjiang··on Show HN: Get coached by developers for free
I'll tell you what I hope this can be:

I and co-workers often need domain-specific help, usually with annoying or complex tools. I could spend a few hours doing the research, or I could pay a chunk of money for 30 min. of someone's time to walk me through.

Example: I need someone to help me fix some build config problems in Xcode. I'll pay for an Xcode expert to spend 30 min. and walk me through fixing it over Hangouts.

Example 2: I have a lot of experience with autotools[0]. I'd be happy to sign up as an autotools expert and either help people get started with autotools or get people unstuck on autotools problems for a bit of cash. Ideally I'd just set a price, add some tools to my profile, and have money start rolling in.

askadev.com seems close, but right now it feels like it's focused on fuzzier mentoring help between junior and senior devs instead of trading domain-specific knowledge. It might be as simple as just marketing towards that a little more.

[0] I know nothing about autotools, actually.

erjiang··on Missing Maps: a human genome project for cities
It's really incredible how much work has been put into the Humanitarian OSM Team's projects. Many cities in disaster-struck regions now have better detail and quality in OpenStreetMap than your average American city. Compare the city of Lubumbashi [0] linked from the article with a random mid-sized city near you.

[0] http://www.openstreetmap.org/#map=13/-11.6648/27.4900

erjiang··on OpenStreetMap Then and Now
Fun trivia: Google had quite a bit of data for North Korea that was added by unpaid editors, and then one day they decided to flip the switch and show it on the public Google Maps site. Their data source can vary country-by-country and they can config per-country display options.
erjiang··on We’re 10 today
A fun side-by-side comparison of OpenStreetMap in 2007 vs today:

https://mvexel.github.io/thenandnow/#10/52.2644/5.2899

erjiang··on Ask HN: Freelancer? Seeking freelancer? (August 2014)
SEEKING FREELANCER - Indianapolis, IN or remote

Looking for web front-end developer. Must be skilled at web development, good at adapting designs from a graphics designer, experienced in common libraries and tools. Need to be able to work on this project full-time for 1-3 months starting very soon.

We have an ambitious idea that we want to turn into reality. You would be working closely with a back-end developer and graphic designer to implement a web app from scratch.

If you're interested, email [my username]@indiana.edu with your portfolio and preferred stack.

erjiang··on How U.S. Cities’ Public Transit Stacks up
Yes, college towns often have great public transit usage because students ride for free, the school pays the local agency or runs their own vehicles, and you have a lot of young people without cars.

Ann Arbor, MI (#20) is a great example where University of Michigan runs a fleet of buses that puts many small cities' systems to shame. Lafayette, IN (#30) is partially supported by serving Purdue University. Bloomington, IN (#40) has two bus systems - the city's, and Indiana University's. (Disclaimer: these are all customers of DoubleMap.)

Not sure why you think it would be a false impression - public transit is used a lot in college towns.

erjiang··on F1 Tech Is About to Make Buses More Efficient
Right, that's why I said in a smaller city (less dense, more long stretches of roads) there would be fewer savings from a flywheel or hybrid.
erjiang··on F1 Tech Is About to Make Buses More Efficient
I should add that driving in dense urban areas means fewer miles, lower speed, and more frequent stopping and starting, so the savings in a smaller city would be smaller.
erjiang··on F1 Tech Is About to Make Buses More Efficient
I just pulled numbers from some of the public transit buses that DoubleMap tracks. I see annual usage of 40k-50k miles on a single bus. Given 2013's diesel prices and standard diesel bus efficiency, that might be about $1/mile, so let's say $50k/yr in fuel for a single bus.

If they claim to save 20% on fuel, then a single bus would save about $10k/yr, and if the system can pay for itself in three years, then it would cost about $30k.

These mileage numbers aren't for London, so that estimate could be off by quite a bit. Still, consider than a standard diesel bus may cost $250k in the US while a hybrid 40' bus could cost $600k,[1] and this looks like a great deal.

[1] http://www.intercitytransit.com/SiteCollectionDocuments/hybr...

erjiang··on The Benefits of Failing at French
I began some Korean self-studying and found that koreanclass101 and Talk to Me in Korean (ttmik) have pretty good audio lessons. The rest of the process was trying to get my hands on as much material as possible - practice with native speakers, children's books, dramas, readers, flash cards, etc. Anki is incredible for memorizing a huge number of facts (e.g. words), but can only power one part of the whole experience. Finding material can be hit or miss, so don't be afraid of spending small amounts of money here and there on books, etc. I will say that prepackaged courses like Rosetta Stone and Pimsleur will not get one very far.

Just tell him that Korean's not too bad to learn once you already know English, Chinese, and Japanese - that'll really encourage him!

erjiang··on What concurrency in Node.js could have been
I've described some in the post I linked at the beginning, and many many others have described similar things. I've cribbed these from TJ Holowaychuk's recent post and added some others:

* callbacks are not logical for expressing sequential logic

* you end up with deeply nested code when having many sequential actions

* you may get duplicate callbacks

* you may not get a callback at all (lost in limbo)

* you may get out-of-band errors

* emitters may get multiple “error” events

* missing “error” events sends everything to hell

* often unsure what requires “error” handlers

* “error” handlers are very verbose

* callbacks suck

* too many different libraries to "fix" callbacks that each have their own problems

* e.g. easy to lose errors in Q promises

* varying performance of various promises/async libraries

* "best" async library constantly changes

* callback style is the only common api, so you end up with wrappers for each library x library combination

* sometimes forget whether a function uses a callback, returns a promise, is a generator, returns a stream, returns something that looks like a promise

* some libraries may not call callback asynchronously

and more. Callbacks have gotten a reputation as a dead horse that people like to beat on.

erjiang··on Live Google transit directions change the value of transit
I think you'll be happy to hear that not only has this idea been worked on starting much earlier than 2008, but I was part of a group to implement this for a city in the US. Service is scheduled to start later this year.

As it turns out - many of the hurdles are non-technical, especially without many examples of pre-existing systems to base it off of.

erjiang··on Live Google transit directions change the value of transit
As a programmer who develops software for public transit, there is a lot of opportunity for technology to make a difference. But, it's not the kind of market that VCs and entrepreneurs prefer.

Public transit agencies vary dramatically from city to city, but they are the ones who provide Google with data on their transit system's timetables. In fact, Google is the last in a chain of software and manual labor that creates and manages transit schedules. It's very hard to create software that captures all the nuances and variations in transit to create a one-size-fits-all solution.

The other tough part is funding - public transit improvements are often driven by grant money because the operating budget all goes to day-to-day expenses. And oftentimes the wealthier people who could make a difference in transit (e.g. SV techies) own cars or otherwise avoid public transit because it's so inconvenient, so they often don't notice the problems.

erjiang··on The Best Tool for the Join: Scaling Node.js with Unix
I thought the 1.7GB memory limit for v8 was lifted? This bug[0] seems to indicate that was fixed.

[0] https://code.google.com/p/v8/issues/detail?id=847

erjiang··on The emperor's new clothes were built with Node.js
Yes, streams/pipes/channels/whatever can be great for certain classes of problems. I omitted them because I very very rarely see them used in Node.js. They are probably under-utilized and I simply didn't have enough examples to think about, since the overwhelming majority of the libraries and code I've encountered use callbacks. It could be a great topic to write about if you have the time.
erjiang··on The emperor's new clothes were built with Node.js
Hi, I attempted to address your argument in the section roughly titled "Node.js has super concurrency!". You may have to scroll down "below the fold", so to speak.

I presented two different ways of writing a single-threaded, event-based function that can handle "an awful lot of concurrency without ever thinking about threading issues or managing thread pool size to balance memory and concurrency". Essentially, it is possible to get good concurrency in a single thread without the use of many nested callbacks or abandoning the language's natural control flow primitives. It's not necessarily the case that you can't have both event-based concurrency and sane code.

← PreviousPage 3 of 5Next →