HNHacker News
TopNewBestAskShowJobs

jhchen

1,702 karma · joined February 15, 2010

Founder of Slab https://slab.com and BDLF of Quill: http://quilljs.com. Previously founder of Stypi in YCS11.

Email me at jhchen7[at]gmail[dot]com.

submissionscomments
jhchen··on Startup Playbook
My thoughts on why is pure conjecture but I'll add that there are many such common misunderstandings. Chasing growth is another, which is why I'm very happy for this Startup Playbook. So many people do do not realize growth is STEP TWO AND YOU CANNOT SKIP STEP ONE:

"Your goal as a startup is to make something users love. If you do that, then you have to figure out how to get a lot more users. But this first part is critical—think about the really successful companies of today. They all started with a product that their early users loved so much they told other people about it. If you fail to do this, you will fail. If you deceive yourself and think your users love your product when they don’t, you will still fail.

The startup graveyard is littered with people who thought they could skip this step."

jhchen··on Startup Playbook
Novel does not mean no competition--there's always competition, even for breakthrough technologies. Even the telephone had to compete with telegraphs or snail mail. The novelty comes in the way an existing need is met. From your list, Uber competes against taxis to transport people short distances. Airbnb competes against hotels to provide short term housing to travelers. Dropbox competed against flash drive to transfer data between machines. These companies have a novel approach to enter and thrive in a competitive market.

A monopoly simply has to have significant influence on supply of a good. In the UK that can be as low as a 30% market share. Qualify a market enough and any company can be a monopoly (I'm sure there's some geography where Lyft or good ol taxis represent a monopoly), so it's important to determine the size and importance of a market (a monopoly over food in a small town is still problematic). So while I cannot say these companies are monopolies--we have the Department of Justice for that--many companies on your list would make a compelling case, were they to abuse their market power.

jhchen··on Quill – A cross browser rich text editor with an API
I would say the old approach was to add contenteditable=true to a <div>, call execCommand for formatting, and try to fix the issues this would cause. Editors in the last couple of years simply avoid using contenteditable in as many cases as possible. So the major differences would probably be when and where each of these editors tolerate native contenteditable behavior and which implement it themselves. But it's near impossible to not use contenteditable at all and all editors that I know of (including Trix and ProseMirror) use it to some degree.

For example to handle paste, I've found the best way is to detect a paste, shift focus to another invisible contenteditable div, interpret the pasted content, and insert that into the actual editor through the editor's API. That way no weird/unexpected markup ends up in the editor (whether or not the editor also utilizes contenteditable).

Another trend is a focus on the document model, which is the editor's main data structure to keep track of content. Older editors just use the DOM (or HTML strings) and hand that to you as their API. These editors really don't know themselves precisely what content they contain and cannot offer an API for the simple task of inserting text in a specific nth position. Extensibility becomes quite limited and often leads to a lot of edge case code. I think ProseMirror is right to have the document model as a focal point as I've reached the same conclusion with Quill and have worked on to improve for some time now. The upcoming 1.0 version boasts a much more powerful document model that is being open source separately as Parchment.

jhchen··on Quill – A cross browser rich text editor with an API
I'm not sure if I'm using the terminology correctly but to me Microsoft Word and Google Docs are word processors. They offer a whole new level of formatting capabilities with thousands of options to support that goal, with a feature set so complete they are products all by themselves.

The use cases I mentioned utilizes composing text, but that's not the main product. If you want to build a CMS, add in app messaging, add formatting to textboxes, then Quill could be the answer. If you want to build the next Google Docs, out of the box Quill will probably not be enough.

jhchen··on Quill – A cross browser rich text editor with an API
It produces semantic markup when it can, but in some cases such as font color, there is no semantic representation so it uses the most cross browser/application implementation, which is inline styles.
jhchen··on Quill – A cross browser rich text editor with an API
As long as they are relevant to the general use cases pull requests are always of interest! The develop branch is currently very different from the most recent release due to 1.0 roadmap features so there may need to be a bit of conflict resolution to merge cleanly.
jhchen··on Quill – A cross browser rich text editor with an API
Tables are hard to do well and there’s ambiguity as to what constitutes basic. After being able to create an NxM table, should you be able to add/remove rows/columns? What about resizing the width or height of rows or columns. Does using <th> violate the promise of semantic output? Merging rows/columns? And of course now there’s copy/paste support for tables to contend with. What if that table had merging and yours didn’t? Tables also require more complex UI than just a button like most other formats.

But outside of word processing, tables are just not used very much. How many times have you added a table to an email? A task manager description? A blog post? None of the big sites using Quill are clamoring for tables.

For the other newly launched editors out there, I can only imagine they made a similar calculation to not included in the launch shortlist.

jhchen··on Quill – A cross browser rich text editor with an API
Thanks for the catch! Looks like my new CDN provider does not provide gzip automatically like my old one. Fixing this now.
jhchen··on Quill – A cross browser rich text editor with an API
Hey HN - project creator here. Pleasantly surprise to see Quill picked up again on HN. We built Quill to because my previous company needed a modern editor with an API to manipulate the contents (our use case was collaborative coauthoring). Before I left we open sourced Quill and I have been working on it since. I recently posted about Quill’s 1.0 roadmap: http://quilljs.com/blog/the-road-to-1-0/. AMA.
jhchen··on Inside Popcorn Time – the world's fastest growing piracy site
Whenever I rent a movie off iTunes, it will fail 2GB in complaining about data corruption. Then it restarts the download. A younger naive me used to give it a 2nd/3rd chance to complete the download but now I turn to torrents with the justification that I already bought the right to watch it.

Netflix/Hulu/Google/Youtube is very reliable and high quality but their library is lacking. It's a shame they don't seem to have the selection Apple does. Compared to any of their libraries, Amazon Instant is more of a bookshelf so I haven't given its streaming reliability a shot yet.

My roommate's family has HBO, so he has an account to watch HBO. But instead we torrent Game of Thrones every Sunday because the video quality is better and there's no risk of buffering interruptions. It's annoying enough for me but this is becoming a small social event and I would gladly pay $5-10 (or I guess break the law) for a guaranteed quality viewing experience for guests.

There really is no legal equivalent to torrents in terms of selection or quality. If there was I would pay for it, like I do for music.

jhchen··on Squire: FastMail’s rich text editor
The sample page (http://djarvis.bitbucket.org/xml/support.xml) is in XML which is an input Quill and many other WYSIWYG editors do not support (nor claim to). Right now Chrome will not even render this page.
jhchen··on Squire: FastMail’s rich text editor
One of Quill’s goals is to be a browser consistent editor. It already produces identical HTML between browsers and everything runs through an automated test suite covering over a dozen platforms. I wouldn’t say it has succeeded in this regard yet (it’s still pre-1.0 software) but it’s at least a goal. Perhaps Quill will be the first to achieve this but I do think many other new editors are hot on the heels. The problematic ones are very old editors and too lightweight of editors (it’s not possible to solve all of contenteditable’s issues in ten lines of code). I’m not sure where Squire falls but it’s always interesting to see different approaches and use cases.

I hate to be nitpick, but since the linked editor list has ~10 facts per editor, and at least two of them are incorrect about Quill (Quill does not depend on jQuery and its license is BSD. Also unclear about the wrapping complaint), I have to say I’m not sure it’s a very reliable list.

Disclaimer: I am the author and maintainer of Quill.

jhchen··on Sway: A new presentation application from Microsoft
From a technical perspective a standard web page could be saved in single HTML file that can be opened offline (with all JS/CSS inlined and images base64 encoded and inclined)--so it can be as easy as double-clicking on a file (just an .html file instead of .ppt).

The average user probably lacks this knowledge though and wouldn't know to or try to double-click on an html file but it is technically feasible.

jhchen··on Node.js Best Practices
HTTP has standard error codes that tell you why a file didn't download (ex. 404 means it doesn't exist). File systems behave similarly (ex. ENOENT). None of this is language specific and therefore do not belong in Node.js documentation (except perhaps to say that these Node.js libraries also adhere to the same standards everyone else does but this is obvious the moment one of these error objects is printed or inspected).
jhchen··on Time to Say Farewell
Tandem does implement OT and can handle rich text. The dependency on diff-match-patch is just for their diff function, not their sync system. We actually recently switched to jsdiff as well.
jhchen··on Time to Say Farewell
Quill maintainer here. Yes Quill will live on. It was originally open sourced at Salesforce while I was on the GoInstant team but is not dependent on either for continued existence.
jhchen··on Quill – An Open Source Rich Text Editor with an API
If you want to use the same image tooltip as the homepage, you just need to add the 'image-tooltip' module and have a toolbar button with the class 'sc-image'. We didn't add it to the examples page editors for aesthetics (the tooltip is bigger than the editor) and thought it was sufficient to just demo the capability on the front page.

We realize and apologies for the lack of documentation for modules. One reason is the module interface is not finalized because we're not sure what the community will dream up and wanted to get feedback before making a decision that might unintentionally exclude certain use cases or encourage unsustainable designs. Depending on what's decided we will probably add functionality to the existing image tooltip. We'd love for you to be involved in the discussion if this is an area of interest.

jhchen··on Quill – An Open Source Rich Text Editor with an API
This project was started originally at Stypi where we needed an editor with a better API than just getting/setting the text to support coauthoring. We didn't find any good enough and because it was core to our product, we started to build our own.

Stypi was acquired by Salesforce in 2012 but we continued to work on Quill because we felt it was a missing piece of the web. We're now working for GoInstant (also acquired by Salesforce in 2012), who are also working on some very cool stuff.

Quill was originally called Scribe but then another editor released a bit ago with the same name so we changed it to Quill.

jhchen··on Quill – An Open Source Rich Text Editor with an API
It's intended to be simple though we can definitely use some better documentation in this area. All you need to do is pass in a config. You can take a look at some configs in src/format.coffee. Most are just a few lines (though we need to document what they mean). For example link is just { tag: 'A', attribute: 'href' }.

Realistically though will probably end up adding all of the common formats leaving just custom ones for the user. But even custom ones should be simple. For example all we did to define a custom authors format in the Authorship module was quill.addFormat('editor', { class: 'author-' }).

Better documentation (and more predefined formats) to come!

jhchen··on Quill – An Open Source Rich Text Editor with an API
Thank you for the high praise. We definitely view the API as our main differentiator vs other editors. Hope you will not be disappointed!
jhchen··on Quill – An Open Source Rich Text Editor with an API
Quill developer here. I'll look into the issue for Firefox for Android. It appears to be doing something different than its desktop counterpart. Feel free to submit an issue on Github for tracking though. It will be tough to officially support Firefox on Android though as we use Sauce for automation and it does not appear to be supported there.
jhchen··on Build your own Google Docs with GoInstant's new OT API
GoInstant developer here. First thank you for your kind words and thoughtful comment!

We did focus purely on text synchronization as the first step so you are correct cursor positions may be in the wrong spot if you are just moving the cursor around while conflicting text is being inserted/deleted. We do also use a post OT heuristic to place the cursor as the end of a text edit though so the cursor while typing should still look natural. Since cursor position is not included in OT I'm not sure I follow your example where <p>abcd|ef</p> becomes <p>abc123d|</p> though.

This was a tradeoff we made to launch earlier but more core cursor sync support is definitely possible in the future.

jhchen··on Brendan Eich Steps Down as Mozilla CEO
Three board members did step down [1] so it's not just the internet.

[1] http://blogs.wsj.com/digits/2014/03/28/three-mozilla-board-m...

jhchen··on Binary ANSI Art in the Terminal
I'll update the article to use /etc/motd then. Thanks for the input!
jhchen··on Show HN: CoderPad, an etherpad + REPL for coding interviews
If you like collabedit give http://www.stypi.com a try!
jhchen··on Shark Tank Statistics
It's worth noting that advertising is not free: 5% equity or 2% royalty goes to Shark Tank just for appearing. See the last page of http://a.abc.com/media/primetime/sharktank/SharkTank3OpenCal...
jhchen··on MongoHQ (YC S11) Raises $6 Million For Database As Service Engine
Public clouds are not a niche service and to say companies will never adopt nosql even as they improve every day is a very strong statement. Companies don't want to manage their databases; they just want uptime, performance and control (which in the past implies direct management), but this is exactly what MongoHQ is offering and why they will succeed.
jhchen··on China’s deserted fake Disneyland
According to the article, the Chinese government was partially responsible for stopping this project, not start it to "increase the GDP."

Regardless, whatever China's economic strategy, it seems to be working quite well and not just "for a while." This project was started/abandoned over a decade ago and China is still experiencing close to double digit GDP growth every year.

Giving away free jobs or free money is actually not such a ridiculous proposition. If the recipients actually use that money, whoever they spend it on now just got more business and can in turn employ more people, who will use their paychecks to buy other things and thus continue the economic cycle. The public works jobs in the New Deal and the rebate checks in 2008 are a couple examples of this in practice in the US.

jhchen··on The Sad Reality of Post-Mature Optimization
"'We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.' He's not saying to ignore performance."

Totally agree. In fact the rest of his quote is "... is the root of all evil. Yet we should not pass up our opportunities in that critical 3%."

jhchen··on Twice the height of the Empire State - massive solar tower for AZ
The most exciting claim to me was how efficient and robust this method of harnessing solar was. In particular:

- "Because it works on temperature differential, not absolute temperature, it works in any weather"

- "Because the heat of the day warms the ground up so much, it continues working at night"

- "It requires virtually no maintenance - apart from a bit of turbine servicing now and then, the tower "just works" once it's going, and lasts as long as its structure stays standing"

If these claims are true, then it would make sense for this plant to have a much higher capacity factor than most solar plants given that the major factors lowering CF is mitigated in this design (works at night and no shutdown for maintenance). Maybe I'm stuck in CS land where we think by factors of 10 but the numbers in this article doesn't seem too far off the beaten path.

← PreviousPage 3 of 4Next →