HNHacker News
TopNewBestAskShowJobs

houshuang

515 karma · joined April 28, 2011

Post-doc in collaborative learning at EPFL, Switzerland. https://github.com/chili-epfl/FROG https://froglearning.wordpress.com

Engineer / Learning Architect at Minerva Project. https://minervaproject.com

[ my public key: https://keybase.io/houshuang; my proof: https://keybase.io/houshuang/sigs/Y_rXPmmrtVbU1K9cHyNJ7NLuZUHHDd04rA-i7IjA7fs ]

submissionscomments
houshuang··on The Babel fish that we have been waiting for
Visiting a live conference in a small village in Estonia without speaking the language... or viewing a TV show where they are negotiating the formation of their country before independence in 1988...
houshuang··on Poll: Is the leetcode grind necessary to land a high paying remote job?
I've gotten jobs at three international remote companies, all paying above $150k, with no whiteboard and definitively no leet code. Although domain expertise helps, and working in the open (a track record of open source code, blog posts, interactions, communication style).

At current company, we're open to hiring in Europe, and we do a ~4 hr take home assignment, which is then discussed in the meeting. Evaluation is just as much around documentation and showing your thinking, as it is around the code quality - very important qualities for a remote team.

houshuang··on I learned 1500 Chinese Characters in a Month
Interesting approach. I learnt Chinese in university 20 years ago, and spent a long time in China both with traditional text books (self study) and just living there... Very curious about the approach of learning characters without the pronunciation - would love to hear about how it goes in the future when the author moves on to learning words and grammar etc.

This made me think about my own process of learning and improving Chinese, wrote up a bunch of rough notes here. Might try to experiment with a few things going forwards. https://notes.reganmian.net/a--chinese

houshuang··on Open source collaborative text editors
Yeah, we need to do a lot around messaging, to be clear - the wiki is in an early prototype and there are known bugs, etc. However if you want to try it out, install the repo (run initial_setup, then npm start server), then go to localhost:3000/wiki/ANYTHING. It will create a new wiki named ANYTHING?login=YOURNAME, and there you are.

Or go to https://icchilisrv3.epfl.ch/wiki/hn/Home?login=YOURNAME to test it immediately. (I added a tiny bit of content).

houshuang··on Open source collaborative text editors
One neat thing about live collaboration is that every single edit is stored. This enables some nice things, like seamless replay of the entire document editing history. We've been working for a while on trying to analyze edit histories, to see if we could predict which stage of editing a document is in, which writing strategy users use, how a small team is collaborating etc. (Main purpose is to support teachers using this with student groups). We have some code here that works with Etherpad and ShareDB (https://github.com/chili-epfl/FROG-analytics), and happy to share preprints with anyone interested.
houshuang··on Open source collaborative text editors
I am curious about this argument - I think CKEditor 5 made a similar one in this epic blog post about how they implemented real-time collaboration (https://ckeditor.com/blog/Lessons-learned-from-creating-a-ri...). We're using Quill.js with ShareDB, which supports JSON structures (which is great, because for us we often have documents with several rich text fields, and other complex structures). So far we've been able to do anything we wanted with Quill, and I've never felt limited by the data structures we have available... (We also do all kinds of other stuff with ShareDB JSON).

I guess one reason you could need custom types would be to ensure consistency - if two keys depend on each other, and one user sets one key, and the other user sets another key, and the document is now invalid, you'd need the engine to be able to reconcile at a higher level?

houshuang··on Open source collaborative text editors
tmbb has been doing work on writing a ShareDB compatible backend in Elixir (https://elixirforum.com/t/realtime-collaboration/9736/5), this has long been a dream of mine. If not, having a separate Node server that just deals with ShareDB documents would also be feasible - all the app logic could still be in Elixir. Happy to share stuff we've been doing with Quill, for example my company recently sponsored work on shared cursors/presence for Quill.
houshuang··on Open source collaborative text editors
That's basically what I'm trying to build - we're starting with Quill.js and ShareDB, adding extensions, configuring, and then adding a plugin system based on React, which can take arbitrary components all based on ShareDB sync (think spreadsheets, forms, but I'd also love to integrate the Pyiodide stuff to have runnable Python code inside a rich text document, etc). We built this as part of a synchronous collaborative learning platform, but I'm currently trying to extract the key components so that it can be a stand-alone open source library that others can help build on. Very early prototype: https://www.npmjs.com/package/@chilifrog/reactive-rich-text
houshuang··on Open source collaborative text editors
Thanks for the component you provided for shared cursors in text areas (https://github.com/convergencelabs/html-text-collab-ext). I've been using it with ShareDB, and have been working on adapting it to work with single text inputs, which has been surprisingly difficult (mainly dealing with scroll/overflow behaviour).
houshuang··on Open source collaborative text editors
Surprised the author didn't mention Quill.js, which works really well with ShareDB, and is fully open source. We've been doing a lot of fun stuff with it - here's a talk I gave recently as a job talk: https://www.youtube.com/watch?v=gN37rJRmISQ. (It worked, I got hired :)). As a side project, I'm working on a ShareDB backed wiki, where we can use rich text for editing pages, but also other components, like spreadsheets or mindmaps, and everything supports live editing - I think it would be amazing for classrooms, hackathons, any kind of meeting etc. Would love to talk with anyone interested in collaborating. I have been waiting for a few features to complete to make a proper demo video, but this early one shows off some of the ideas: https://www.youtube.com/watch?v=9-lU-in3ydc (https://github.com/chili-epfl/FROG)
houshuang··on You’re probably using the wrong dictionary (2014)
If you enjoyed this article, you might also enjoy the novel The Great Passage by Shion Miura, a wonderful quiet novel about the creation of a Japanese dictionary.
houshuang··on Editor.js – Block Styled Editor
People interested in block styled editors and new takes on editors should look at hax-the-web, a big effort using web components primarily designed for educational materials at PSU, but usable for so much more. It's quite amazing the flexibility that is possible - here's one recent video, there are many many more on his channel https://t.co/eXM6yBQA7h
houshuang··on China now the most prolific contributor to physical sciences, engineering, math
If they start publishing in Chinese? The commercial CNKI database indexes 10,406 Chinese language academic journals, and 63 million articles. Arguably, much of it is of low quality (although there are plenty of Western journals of questionable quality as well), but that's a different discussion. If you rephrased the question as "When the leading Chinese scholar chooses to publish in the most prestigious Chinese journal, rather than Nature or Science" - would be a more interesting question.
houshuang··on EU Commission presents draft directive to ban some plastic waste
At most festivals in Switzerland, you have a single kind of reusable plastic cup, for which you pay a deposit of a few Euro. You can then hand it back at any venue part of the festival and get the deposit back. Of course it requires some dishwashing facilities, but it seems to work very well, everyone is used to it, and it avoids massive heaps of garbage.
houshuang··on Ethiopia is now Africa's fastest growing economy
What's the issue with the Yangtze? It only flows within China?
houshuang··on Automerge: JSON-like data structure for building collaborative apps
[ShareDB](https://github.com/share/sharedb) is the most commonly used, we use it extensively - also has bindings to rich text or code editors. [Y-js](http://y-js.org/) is a more academic project, also based on CRDTs I think.
houshuang··on Show HN: All Politicians in Switzerland
Note that most of these are not full-time jobs. Even members of federal parliament only meet four times a year, and go back to their normal jobs in-between.
houshuang··on Show HN: Early-stage Yahoo Pipes spiritual successor
This discussion is very interesting to us, as we are building a workflow system for collaborative learning (students might do an activity individually, the output of that activity is aggregated and transformed, students are grouped based on an algorithm that processes data from the previous activity, output from one activity is redistributed to another activity, etc). (quick demo: https://www.youtube.com/watch?v=HQ9AyzLOn3Q)

So this discussion about visual languages, data transformation etc, is very relevant to us. One thing we're working on is how to make data transformation more intuitive... Right now we are using JSONPath to enable selection of one field to aggregate on (ie. you have a form where people input ideas, and another activity that takes a list of ideas, so you can input a JSONPath for the field to get aggregated). However, looking at JMESPath (http://jmespath.org/examples.html), it looks much more powerful. Has anyone seen any examples of graphical interfaces for going from one data representation to another, with preview, selecting fields, aggregation etc?

houshuang··on New York Has a Great Subway, If You’re Not in a Wheelchair
Same in Paris, we just vacationed there for five days, with a two year old. Very difficult to navigate in a stroller (good proxy for a wheelchair - I can lift it down the stairs, but my wife cannot alone). However, there it's quite a difficult problem to solve (I recognize) because a lot of the transfers between different stations are a bunch of underground hallways with staircases in all directions, so it's not simply enough to add elevators from the stations to platform level.
houshuang··on Kidlington's mystery tourist influx continues to baffle locals
This was really frustrating to me, because it felt like treating the Chinese visitors not as people, but a natural phenomenon (locusts) or some such. It's natural that the locals would be baffled, and if this had been a short notice in a local newspaper, then fine. But I read it in a Norwegian newspaper, and later saw it on Metafilter, Hacker News etc. By that time, surely someone must be able to talk to the visitors in Chinese, do a little bit of research with tourist agencies from China etc?

I decided to see if I could find any Chinese sources writing about this, since they might be more clued in. Sohu.com's article (http://news.sohu.com/20160708/n458318443.shtml) says that the rumor was spread that this is where parts of Harry Potter (the Dursleys) was filmed.

houshuang··on OS X is now macOS and gets support for Siri, auto unlock
Would be useful to be able to type to Siri in a public setting...
houshuang··on One Man’s Impossible Quest to Read and Review the World
This is a great site. I read a huge amount, but I easily "fasten" in detective stories etc. Discovery is a significant problem. I don't necessarily follow review columns in intellectual newspapers. When I come across an author that I really like, like China Mieville, I will find all of their books and read. But I am sure there are large galaxies of writers whose works I will never hear about.

I also love the focus on international writers. As a voracious foreign language learner, discovery becomes even more difficult, and seeing interesting literature available in other languages is a great motivation to learn. And in the meantime, we can rely on translation to at least get a sense of some of these works.

houshuang··on Functional-navigational programming in Clojure with Specter
This is really interesting stuff - reminds me a lot of lenses in Haskell, which the author points out, and also of state-trees in JS/compile-to-JS like Om or Baobab. I have been playing with something similar in Elixir, but deeply nested structures seem far less common there.

One thing I like is the concept that a function can operate on a single well-defined data structure, without worrying about the fact that this structure is part of a much larger state tree.

I wonder if there are things that a strongly typed implementation (Haskell) can do, which this cannot do (as well)?

Also wondering at what point it becomes better to switch to an in-memory database (like Datascript), instead of a simple nested data structure. I guess transparency is a benefit of a single data structure, whereas things like Datascript might be faster(?) and can also handle things like storing history and building in undo-functionality etc (which you'd have to add manually otherwise).

houshuang··on Phoenix 1.0
There's very little in terms of analytics, statistics, machine learning libraries etc. There also isn't a common dataframe like structure.
houshuang··on Phoenix 1.0
I've used Rails, but a long time ago. However, I really enjoyed Ecto; the migrations, the query interface etc. Still wrapping my head around changesets (I think it's quite simple, but when I began with Phoenix there were just so many new concepts).

Very exciting that they are branching out to support MongoDB as well. I'd love if they could support more untraditional Postgres operators for arrays and json (I guess there's always a tension between least common denominator and using the specialized features of each DB). You can get around it with partials, but it makes the code more messy.

houshuang··on Phoenix 1.0
Just wrote something on [sending errors by emails](http://reganmian.net/). The full code is here: https://github.com/houshuang/survey, including my job module https://github.com/houshuang/survey/blob/master/lib/job_work.... The code worked well for me, mostly because it registers errors and retries (I had problems with rate-limiting of Amazon SES), however it's not parallel right now. I will probably rewrite it to have a single module that gets tasks from the DB, and then dispatches it to workers, and I want to split it out into a separate library.

Note that this was my first Elixir library and I was very much learning as I went along. Lot's of code that I want to refactor and extract.

houshuang··on Phoenix 1.0
Phoenix and Elixir are really great tools. I spent the summer building a bunch of interactive components for an EdX MOOC (https://imgur.com/a/rAXVz), and got to try out a lot of Phoenix capabilities (channels/websocket support is great!), but also using underlying Elixir/Erlang libraries for task-queues, email sending and receiving, etc. Super stable, never able to get our server above a few percent of CPU :)
houshuang··on Hackpad source code
Wonder if there are any improvements here that could be pulled back into the open source Etherpad-light?
houshuang··on Ask HN: Who is interested in a book about high performance Erlang?
Very interested. Mostly working in Elixir, but very interested in idiomatic ways of using messages, supervisors, genservers, etc etc. Haven't yet had a chance to scale beyond a single server, but would love to learn about that as well.
houshuang··on Collaborative Editing in ProseMirror
Very interesting to see the approach, especially his critique of OT, which virtually every other system seems to be based on. His alternative seems to make sense, but I'm not sure if the end result for the user will be better, or if it's mainly that the implementation is easier/less bug prone?

I've actually been playing around with "translating" the server backend for share.js to Elixir, to be able to host it as part of a Phoenix app. Playing with ways of integrating with erlnode to run the actual test cases (including a fuzzer) from JS directly on my Elixir code.

If this gets opensourced, I wonder how complex the backend will be (I'm assuming it will be written in Node?), given that it seems like the front-end is doing most of the work.

Page 1 of 3Next →