Ask HN: Please evaluate my reddit-clone - <AUTHOR>

I've been thinking about putting a spin on social news and I decided to put up a prototype to test my idea.
The idea/twist is simply this: Use full sentences as a subreddit name.
So instead of subscribing to subreddits:
- worldnews
- technology
You would 'subscribe' to:
- I am interested in world news.
- I am interested in technology news.
You can subscribe to other 'full sentence' subreddits like:
- I love Star Trek.
- I need a student loan.
- I enjoy rock climbing.
- I am worried about the global economy.
Thus, submitting a link would look like:
- Title: Greek tremors continue to rock markets - CNN.com
- URL: http://edition.cnn.com/2010/BUSINESS/05/05/...
- Target this link to people with this profile:

    -- I am interested in world news.

    -- I am interested in technology news.

    -- I am worried about the global economy.
 The difference may look minor, but I think it provides an interesting twist on submitting links.
For example, here's another possible submission:
- Title: Star Trek club is more than 'stereotypical nerds'
- URL: http://www.cw.ua.edu/2010/04/22/star-trek-club-is-more...
- Target this link to people with this profile:

    -- I love Star Trek.

    -- I enjoy rock climbing.
 If you want to play around with submitting a link, you can use any of these demo accounts:
hn_demo1
hn_demo2
hn_demo3
hn_demo4
The password for all of them is: hacker <comment><USER2> I'm not sure that that is a large enough differentiator.

If I understand correctly, you're changing 'topics' into sentences. Is that correct?

the nice thing about not having a sentence to assign as a subject is that it is faster for the person adding the link, and doesn't take up as much real estate when navigating.

I was having some serious usability issues with your site. The colors made it VERY difficult to focus on what I was supposed to be looking at. As well, the layout didn't really direct me as to where I should be looking.

Most important, I kept looking at the Social News section, expecting to see the submitted links. Then I thought that maybe i needed to answer the questions before getting the links.

It took a bit before I realized that the links where in the 'recommendations for you' section.

Overall, you've put a huge number of roadblocks between the user and the content, which is a big no-no.

<comment><AUTHOR> Yes, that's pretty much what I'm doing. I'm experimenting with adding more meaning to a 'topic' or 'tag'. It does make it a more complicated to add a link, but it allows someone to be more expressive in what they want to see in their news. This should in turn allow a submitter to really target their link to the right audience.

</comment></comment><comment><AUTHOR> Clickable link: <http://socialnews.targetmyinfo.com/improve_recommendations></comment>


Choose Your Name With Care - <AUTHOR> http://www.thefailingpoint.com/2009/07/gettingstarted/choose-your-name-without-care/

<comment><USER3> I agree with the "must have .com" mentality, unless you're targeting a tech- savvy market specifically, then you can get away with the domain hacking (.us, .ly, .me, etc.)

However, let's be honest: your name is not going to make or break you. Don't let choosing a name hold up real progress. If you're sitting there trying to decide what to name your svn/git repo, just call it "myapp" and move on.

<comment><USER4> "Fatbrain.com," I thought, hurt Computer Literacy Books when it decided to broaden its brand and go public.

The name was professionally chosen and got favorable write-ups at the time (2000 era). Though memorable, it somehow had a wrong feel for the nature of the company's business (selling tech-related books in Silicon Valley).

<comment><USER5> {*}

Still got the cap!

Fatbrain sounds more fun.

</comment></comment></comment><comment><USER6> I agree overall. I do think there are some exceptions though. xpertsite.com is horrid, but I _might_ suffer the problems if I could get XPert.com or xprt.com even. Maybe. They're so short that spelling or typing them is very easy.

Same with AskMe.com. It might be annoying, but that's a good domain, and a good name. I think IMSafer just sucks. IMSafe.com is way better.

</comment><comment><USER7> The single most important thing in a product name these days is that it needs to be immediately spellable. Surprisingly, this is this single most common mistake that startups make when choosing a product name.

"Hey, check out my site biivo.com!"

"Ok, type-type-type... Uh, it's a domain squatter's parking page."

"No, it's spelled with two i's and only one v."

"Ohhhh. let me try again..."

The day I registered Twiddla.com, I also registered Twidla.com and a few other misspellings. People in the UK sometimes try going to Twiddler.com and there's not much we can do about it. Fortunately, we're the #3 Google result for "Twiddle", and we get about 5% of our search traffic from that keyword.

It's hard to imagine how much traffic these startups with missing letters and intentional misspellings are missing out on.

<comment><USER5> OTOH, I though "Wii" was the dopiest name imaginable, yet it seems to not have mattered.

</comment></comment><comment><USER8> Do not overlook the importance of trademarks:

Be sure that you can obtain a trademark for your name from the U.S. Patent and Trademark Office (uspto.gov).

Be aware of the "gotchas" in what are considered acceptable trademarks.

For instance, under U.S. law, a "geographically (mis)-descriptive" trade name is often very difficult to trademark.

Furthermore, trademarks are often not addressed by OSI-approved open-source licenses (The GPL, for example). Therefore, obtaining a trademark for your open-source project can be a very effective way of de-comoditizing your open source project, achieving containment of forks, and building a revenue- generating business around your code base. Example: Red Hat vs Centos.

Own your namespace.

<comment><AUTHOR> This is an excellent point. Trademarks are very important. We had to buy "IM Safe" as a trademark from a public company which had acquired the trademark in one of their acquisitions. They didn't even know they had it.

Trademarks are a tricky beast, and one that can get you a cease and desist letter from a lawyer, and I hate getting mail from lawyers.

</comment></comment><comment><USER9> During the late-90s bubble, a group of British radio stations chose the name koko.com for their internet presence.

Think about it - could you have found a _worse_ name for something that's going to be read out on the radio repeatedly through the day? "Check out koko.com, that's kay-oh-kay-oh-dot-com."

Koko.com is long gone, but the practice remains. At present, I'm on a radio station with a hyphen in its domain name. I sound like I'm going dotty when I read out the email address. Infuriating. Don't do it!

</comment><comment><USER10> Question: What do you think about E-mail addresses not ending in .com?

I currently use a g-mail address (firstname.lastname@example.com), but also have for potential use:

        email@example.com
        firstname.lastname@example.com

I don't like having a GMail address because someday I might want to switch away from GMail. I'd rather have an address on a domain I control.

<comment><USER11> I have firstname.lastname@example.com and use Gmail. It's dead easy to set up, and free.

<comment><USER12> I apologize beforehand my ignorance, but how did you that?

<comment><USER11> <http://www.google.com/apps/intl/en/business/index.html>

Free for personal use.

</comment></comment></comment></comment><comment><USER13> what do you all think of the "empty vessel" concept for naming things - <USER2> that mean nothing immediately related to the product, but completely unused and un-liked a concept?

Fandango Loopt Amazon Exxon Texaco Google (most people had no clue what a Googol was) Pepsi Nike Coke Wachovia Verizon Xerox Sunoco Sysco Alcoa Aetna Tesoro Exelon Kroger Nucor Pfizer

the list goes on and on

By the way, I know there are many very clever "spins" on these names to help them relate to their products, but upon first look this isn't evident.

</comment><comment><USER14> I wonder whether perfect names exist anymore. All the short, simple, meaningful names must be gone by now. Whatever you choose, you'll end up with something that's either long, irregular, hard to remember, overloaded or otherwise impaired. Which leads me to question: is the company name really _that_ important? Or is myscream.com (squatted) a fine name for an emo icecream vendor?</comment>


The Rise and Fall of KREYOS (2014) - <AUTHOR> https://medium.com/@stevekreyos/the-rise-and-fall-of-kreyos-new-ac4e2d847964 <comment><USER2> More context: [http://www.pcworld.com/article/2683138/kreyos-smartwatch- wer...](http://www.pcworld.com/article/2683138/kreyos-smartwatch-were-not-a- scam-just-a-trainwreck.html)

</comment><comment><USER3> So to summarize:

1\. A group of marketers came up with a cool concept video and some UI layouts. 2\. Marketers get surprised when a sketchy hw/sw house takes them for everything they are worth.

Quote " _All we needed to do was provide them with our brand, watch industrial design, packaging design, App UI design, and they will take care of all the rest. So I thought it shouldn't be too hard, as I won't have to work on the software, hardware, firmware and focus on building a good brand instead._ "

None of these are the hard parts of design. For sure, good design is a huge portion of a successful product, but making a pretty looking sketch is not hard. Having ME and ID teams work together on a design that can be actually produced? A lot harder.

Another quote: " _In the beginning we did a wonderful job handling the campaign launch, emails, social media and pretty much everything else. After the campaign period we considered our part done._ "

Proclaiming "We'll make an amazing smart watch that does everything, has 7 days of battery life, and is waterproof!" is not enough to launch a product.

That 7 day battery life? You need damn solid EE and FW teams to pull it off. How every single component is hooked up will impact your battery life, in ways that are dependent upon your SoC. The amount of engineering discipline and foresight required to squeeze good battery life out of a product is stunning.

This is a case where someone in marketing considered all the technical stuff "easy", and outsourced it to someone who it appears was dishonest.

But no one honest would take them seriously. All the honest engineering teams are already at work on their own smart watches!

</comment><comment><USER4> ...this is why you dont get in to business with something you dont understand. If you want to deal with manufacturing and doing business in china, then you actually need to have the core understanding of the process & actual costs of manufacturing, as well as how to deal with business in china. (Generalized rule of thumb, always negotiate. The price given is nearly always 1:7 for every hand that's changed. If they say its $70 a unit, that means he got it for $10 a unit. Negotiate.)</comment>


Ask HN: How are you building cross-platform (mobile and browser) apps? - <AUTHOR> I've been developing web apps for 5+ years and in my next project I've been tasked with building a mobile (iOS and Android) app that we can also run as a web app. I would obviously like to try keep a single code base for simplicity as we have limited resources. I've investigated writing a PWA but I'm put off by the arbritrary heuristics that Google  are placing on whether or not the apps are presented as "installable".
After that, it seems the only options are Ionic, or React Native + separate web app.
What is your experience writing apps for both mobile and browser? <comment><USER2> I use React + React Native for [https://www.jqbx.fm](https://www.jqbx.fm). As a 1 man project it seemed like the only sensible way to build mobile (android/iOS) and browser versions. I can share almost all of the code (where applicable) so one can move a lot faster and have a lot less mental overhead.

That being said React Native has stability and performance issues that are tricky and can hold up your app for a non-trivial amount of time. Also staying on top of updates requires diligence and can be a pain. But if you're looking for the quickest path to market I would say look no further.

<comment><USER3> Wow that app is exactly what me & my friends have been looking for. They even started hacking together an Android version of this. Looks really well done!

One question: Do you plan on writing a native desktop solution? I'm not a fan of having to keep my browser open just to run a single app.

<comment><USER4> Hehe.. turntable.fm v2.0 :-) [https://en.wikipedia.org/wiki/Turntable.fm](https://en.wikipedia.org/wiki/Turntable.fm)

Just checked it out. This is really well executed! Definitely doesn't look like a one man operation. Congrats!

<comment><USER2> Thanks! And yeah heavily inspired by tt.fm (RIP). Hopefully the community keeps growing and can bring some of that 2011 internet magic back.

<comment><USER4> Yeah and this is smart because this time around the licensing falls on Spotify where as back then TT had to negotiate licensing if I'm not mistaken. I'm not a lawyer but if that's true this seems much more viable using Spotify's APIs with the caveat that your entire business relies on them if that's your aspiration. Regardless, wish I'd thought of this :-P Seems like it would be such a fun app to work on :-) Best of luck to you!

(BTW it just pinned a Google chrome helper on my machine so I had to kill it. Not sure if you know anything about perf. with your app yet. Just FYI)

<comment><USER2> Yeah it's fun- and you're right about the licensing and reliance on Spotify. Hopefully it all works out but who knows :)

Sorry about the perf- it's a known issue and I'm working on it, I only recently got it (somewhat) feature complete so It's next on the list...

</comment></comment></comment></comment></comment></comment><comment><USER5> It's the third time I have to build the whole stack (web+ios+android).

For the first time, I used a webapp and was hoping that the ios/android experience would be good enough. Unfortunately, It wasn't and it was a big mistake. I'd only recommend this for quick mvp knowing that it'll need to be rewritten or if your audience really understand what it means to have a mobile webapp compared to a native app. I.e. if there's an IT department in place that can install it on the devices and understand the limitations.

For the second time, we went with ionic/phonegap. It was a huge improvement, but we hit too many limitations and scenarios where we wanted native tweaking for animations or handling the keyboard hiding fields or the topbar acting weird, etc. You don't see those issues at first.. but they start appearing as you start doing QA on more devices and with real users. And at that point, you've invested so much in trying to make it work that you can't just go back, so you start piling weird hacks on top of weird hacks.

For the third time, we went with react-native. Overall it was a great experience and unlike ionic, it's a real native app, not just a webview. We could reuse a big part of the code between web, ios and android. The issues we faced were often related to weird edge cases that are buggy within react- native itself such as input fields not working correctly when dictating or a "pull-to-refresh" supposed to be stateless but in practice being stateful and buggy if you call "refresh" on it twice within 30ms. However, it's a good feeling to know that when we'll have the time, we have the flexibility to either fix the library itself or re-write it (compared to ionic where we couldn't do much and web apps where the solution to most our problems would be to "wait a few years until the browsers decide to improve it".)

If I had to do it another time (a fourth time), I'd go with react-native again but I would make sure to stress test the libraries with real data on all the devices we'd want to support. Also, it's popular in the javascript ecosystem to have libraries that depend of another library that depends of another library that wraps another library.. in most cases, it's just better to write a quick wrapper for your app and only include the inner-most library that does most of the work anyway. Otherwise you're depending on too many authors and libraries quickly go out-of-sync and you're stuck with old versions that aren't compatible with new ones.

</comment><comment><USER6> We use React Native for our apps and React for desktop - I'd say about 95% of the Android/iOS code is shared and we're able to share a lot of business logic between mobile and web. Having all of the code together in one repo has worked really well for us and some of the most complicated stuff is shared between all platforms.

If you want to share UI across platforms you could potentially use something like [https://github.com/lelandrichardson/react- primitives](https://github.com/lelandrichardson/react-primitives) to do that, but we don't and I'm not sure we'd want to because we don't want to use the same design on all platforms.

</comment><comment><USER7> Haskell on web, Android, iOS, desktop (and shared code with the server of course) with [https://github.com/reflex-frp/reflex- platform](https://github.com/reflex-frp/reflex-platform)

It's pretty hard to beat the productivity of one codebase for every platform with a powerful type system catching errors across every part of system.

</comment><comment><USER8> I've been using Kotlin for the past few years. The multi platform support is getting really nice. Ios is the lagging participant, but with the upcoming conference alot of the niggling bugs should be addressed. Right now JVM, android, and js are all stable.

Writing a graphql endpoint emitting a data class. Then have react directly cast to that same data class. With proper type safety is great.

There are bugs but they feel like fringe cases. I spent half a day cleaning up my bindings to react material ui. An hour or two fighting serializaiton bugs. Those are the biggest time sinks that come to mind. It's still marked as experimental but it's something to keep an eye on.

</comment><comment><USER9> We've built an offline first webapp that is basically a PWA (it's one manifest file away from being one IIRC), but instead of relying on Google to have something installable[1] we also create an Android app which is just[1] a web view hardcoded to the correct URL.

I'm not convinced this is what we'd do if we were starting fresh, I imagine we'd look at React / React Native. However, this definitely works for us for now.

[1] We also deploy to very old / basic phones, so we use this opportunity to bundle our own version of the web view so we can target higher chrome versions.

</comment><comment><USER10> At Khan Academy, our award-winning[1] mobile apps are a combination of native + React Native + web view. The React Native part is relatively new, but it's definitely helping us to move a lot faster in developing our apps.

A few years ago, I worked on a project in Xamarin with some success. The iteration cycle with React Native is far faster, though.

[1] [https://blog.google/products/google- play/winners-2018-google...](https://blog.google/products/google- play/winners-2018-google-play-awards-are/)

</comment><comment><USER11> Depending on your needs, using something like Turbolinks [1] may be a great fit. There are iOS and Android libraries that can make your web app talk to your native app so it can do things like trigger screen transitions, populate native menu or tab controls, etc. We're using a similar idea at my company and so far it's been very successful for us.

[1]: [https://github.com/turbolinks/turbolinks/#readme](https://github.com/turbolinks/turbolinks/#readme)

<comment><USER12> I use Turbolinks over at HOALife.com. Mobile clients take advantage of native geolocation, camera, and photo library upload.

The web, iOS, and Android devices utilize all of the same server generated HTML + JS google maps et al. 0 to completed for both Android and iOS in maybe 30 hours because of the native API stuff I had to learn. If you don't need those native API's or know Swift/Java better, that time could be trimmed down considerably.

</comment></comment><comment><USER13> You should consider your target audience and your own resources. For consumer facing apps, I'm not sure an hybrid (cordova / ionic / webview shell) approach is really up to par, as the UX is really challenging to make right and performance will be lacking. That said, a native approach requires twice the codebase and twice the resources (man hours) roughly, so the challenge becomes maintaining feature parity and team expenses.

Apps targeted for B2B users are considerably more flexible in terms of UX, the goal is mainly to help users get stuff done, so hybrid is more viable here. Which is what we usually do with cordova. Some considerations to bear: using cordova, the team doesn't really get much expertise with the proper platform, so problems are sometimes harder to debug because of lack of developer maturity in the platform. You need to design with an eye to light performance requirements, which usually means facilitating inputs and maybe have a separate web interface for complex UI like dashboard and management.

If you absolutely have to share code between apps, your options are:

\- hybrid approaches like cordova, or build your own native web view shell and load your web code manually

\- react native, which is not v1 yet, and looking at it recently I'm personally not sold on it yet, many unkown unknowns to actually double down and build on it. But that's just my opinion.

\- Black box compatibility frameworks like Xamarim, Nativescript and the like. They work by giving a common platform middleware that builds to multiple target platforms. There are a lot of trade offs here, specially the lack of control. If a feature is buggy or not supported there is little recourse.

\- I have read some big companies share code via C++ bindings used natively on each platform (loaded in Java and Objective C). I imagine this technically "solves" the problem, as you can share code and build natively, though I have no idea what tooling there is to help with this, and imagine the developer experience gets the short end of the stick.

edit: typos

<comment><USER14> Instagram is pretty popular, has a good UX and is built on a webview (ocne a year on a shitty connection the CSS doesn't load and you see it).

<comment><USER15> Wow I wasn't aware but looks like they did start with webviews and migrated to native + react native

</comment></comment></comment><comment><USER16> We launched [https://usebx.com](https://usebx.com) as a PWA, and have successfully managed to keep a single code base across pretty much all devices. The install process isn't much of a problem either, as a user can always "install" your app by adding it to the home screen. I would definitely recommend a PWA, unless you need some hard core native features that aren't available in browsers yet.

<comment><USER17> Do you have any requirements for offline data storage for your PWA? If yes, how do you manage it? From what I've heard the amount of space available for data varies wildly between devices. In that case what does your offline data storage strategy look like?

<comment><USER16> We use indexeddb, which is generally okay, but you're right, the DB size can vary across browsers (I think some limit to 10mb, and others to half the HDD). For our use case, it was good enough. Our strategy is to try and cache things offline, but if indexeddb fails to store the data, we attempt to fetch from the server. As the saying goes, cache invalidation is hard, but that's true regardless of the platform.

</comment></comment></comment><comment><USER18> Consider taking a look at the Visual Studio tools, which have really matured over the last few years: [https://www.visualstudio.com/vs/features/modern-web- tooling/](https://www.visualstudio.com/vs/features/modern-web-tooling/)

Specifically, tools for Apache Cordova: [https://www.visualstudio.com/vs/features/cordova/](https://www.visualstudio.com/vs/features/cordova/)

(disclaimer: I haven't used them, but I've heard very positive feedback)

<comment><USER19> 1) The Microsoft development product line is great at some things, but not for directly enabling cross web/mobile solutions. However do use VS Code as the environment for other solutions mentioned here.

2) If you are a non-MS person, make sure you don't miss out on the greatness of Visual Studio Code by dismissing it as yet another Windows centric product. VS Code is world class performant, has a great plugin arch/ecosystem, and somehow combines a hardcore developer first mindset with carefully thought out UX at the same time.

Also to be clear for those not much in the MS world, the "Visual Studio" product line you've heard of for decades is not the same thing. It's confusing naming but Visual Studio Code is relatively new and very different.

<comment><USER20> They should have just called it (Microsoft) Code. If they can use Word, Access, and Excel as product names, surely they could get away with just calling their world-class editor "Code".

I second your recommendation, I'm a sucker for a sleek editor with a great plugin architecture.

</comment></comment></comment><comment><USER21> We're running all our apps based on Ionic which works absolutely brilliant & allows for the deployment as PWA today or at any point in the future. That being said we primarily build b2b applications. Minor drawbacks to native in terms of UX performance exist, but tbh, if you know how to optimize rendering performance in a browser you'll get 99% of native performance by putting in the effort.

For us the ability to run on literally any(!) device (this includes for example also smart TVs) completely outweighs the potential (minor) performance drawbacks.

</comment><comment><USER22> Create React Native App (CRNA) with Expo. It doesn't get any better than this from a developer experience perspective.

<comment><USER23> How does it handle Electron apps? I thought playing with EXPO was a limited venture?

<comment><USER24> I'm currently developing with Expo with plans to expand to Electron (though I haven't written anything for Electron yet, just the React-Native and Expo portion) but my theory is that once you have the core React functionality down (The API endpoints, Reducers and Actions (if using redux), and general component structure) then porting to Electron will be fairly trivial.

React-Native has a lot of cross-over with React for the web. So I'm hoping when the time comes my port will go smoothly.

<comment><USER25> Expo/create-react-native-app experimentally support the web now, so you can build both from one codebase. My PR to that effect was recently accepted. See my blogpost[1] about it.

[1] [https://firstname.lastname@example.com/web-support-for-create-react- na...](https://email@example.com/web-support-for-create-react-native- app-80b16f930326)

</comment></comment></comment></comment><comment><USER26> Advice: get OUT of the UI/UX business, it's an ever-changing grinder. Unless you enjoy relearning 50 Shades of the Wheel every 3 years, bail fast and quick. It's getting worse over time, not better. An alternative may smaller internal applications where they care less about latest-and-greatest UI's. It still changes, but not as fast.

</comment><comment><USER27> This is exactly the vision we have for Ionic and where we are taking it. One app that works great in the app stores _and_ when deployed on the web (or even electron), built entirely on standard browser technologies. If you are put off by Angular, our v4 release (alpha right now but quickly heading into beta and then production ready) was rebuilt on top of web components and is framework agnostic.

It also happens to be creating some of fastest PWAs right now based on benchmarks. We built a lot of web component tech to make sure we were sending the least amount of code to the client and things like SSR and lazy loading with minimal configuration on your part (see our web component compiler Stencil we built in order to build our v4 components: [http://stenciljs.com/](http://stenciljs.com/)).

[http://ionicframework.com/](http://ionicframework.com/)

<comment><USER28> Not sure about the speed benchmark, but Stencil's build process could be improved. It takes more than 1s to build on file changes. Definitely not ideal for development.

Vue.js PWA, on the other hand, rebuild quite fast.

With that said, I really like Ionic PWA and the component approach. Will wait for the stable release.

<comment><USER27> I was referring to runtime performance. Our build process will probably be slower than vue because we're using typescript, but we do have plans to speed it up. I've been using it for a large app and barely notice rebuilds, so I think we're almost there.

</comment></comment></comment><comment><USER29> I'm using flutter [1] which uses the dart programming language. I'm loving the static typing of dart, hot reload of flutter, very good debugging tools. Also the fact that layout/ui and logic are all laid out in code and not in a separate markup lang

1\. [https://flutter.io](https://flutter.io)

<comment><USER30> Would you care to comment on runtime performance of the finished product? I've played around with Flutter a bit and get the impression that it's still a little too heavily skewed toward Android in terms of optimization. I guess I can't fault a Google-built framework for that, but I could never sell Flutter to upper management if I have to say, "well... it's a little janky on iOS."

</comment></comment><comment><USER31> Ionic can get you the most code sharing. Ionic uses a web view to render the UI so it will never get you the same as a native UI, but it is actually really good. Expect a few delays here and there, though. Make sure to try it out on the oldest phone you plan on supporting to see if you're okay with the performance before moving forward. Ionic will get you the most code sharing.

React Native is a great for cross platform iOS and Android native. If you want code sharing across native app and web app, look into ReactXP, or come up with your own code sharing technique, which apparently @sdcookie's team did.

Titanium from Appcelerator also supposedly targets Native and Web.

Also consider focusing your efforts on native and not doing a web app. RobinHood stock trading app went a long ways without having a web app. Just throwing that out there.

</comment><comment><USER32> Pure html+css with as little js as possible...

eg: websites/single page webapps over native ios/android apps

<comment><USER33> Wow. Among all conversations, haven't heard this simple truth mentioned any more. Would love to hear more discussion along these lines.

<comment><USER34> Before hybrid apps where a thing I would build HTML/CSS/JS web apps and put them in an android web-view with no controls. Easy peasy.

You can use local storage to cache for offline use. TBH I don't think most apps really need the overhead of these new libraries. Half of the apps on the app store just display and update data from a DB.

</comment></comment></comment><comment><USER35> Just wanted to mention that React Native + React Native Web _is_ a viable solution (at least for me it was). I was able to convert a mobile React Native project into a usable mobile website with Next.js and `react-native-web`.

I had to use a lot of platform-specific imports (eg: `index.ios.tsx`/`index.web.tsx`) to replace anything mobile-specific, and there are some cases where you need platform-specific UI components as well to make everything look nice on larger screens.

My only complaint is it gets a bit messy having all these different entry points and platform-specific modules and whatnot. Overall, it's probably the best you can hope for to write an app for mobile + web with ~80-90% _actual_ code sharing.

</comment><comment><USER36> Interestingly, Flash/Air seems most-popular cross-platform mobile toolkit for app dev (far ahead React Native):

[https://blog.appfigures.com/wp- content/uploads/2018/03/11-No...](https://blog.appfigures.com/wp- firstname.lastname@example.com)

(from [https://blog.appfigures.com/ios-developers-ship-less-apps- fo...](https://blog.appfigures.com/ios-developers-ship-less-apps-for-first- time/) )

<comment><USER10> A lot of games have been made in Flash. I'm guessing that a lot of those apps cited are games (which is true for a few other frameworks on that list).

</comment></comment><comment><USER37> [https://github.com/necolas/react-native- web](https://github.com/necolas/react-native-web)

</comment><comment><USER38> My take on this is that React Native works fine for content-dominant (media, text) apps but maybe not for UI interaction-dominant (arcade games, heavy animations, gestures) ones. You share a very similar API (React) and possibly the business logic between web and mobile. Your project could get bogged down by many little details and idiosyncrasies of React Native so a clear scope and discipline is important.

One example is a Bluetooth-enabled iOS/Android app that I made (but did not publish to app stores). I was able to use a RN library for Bluetooth communication and interact with another device (a bathroom scale) in JavaScript. It was one of those "Wow, this is cool!" and "Man, this is pain!" moments. Note that I did not use create-react-native-app/Expo for this.

Another app, also iOS and Android, simply renders the content of my wife's Etsy store, including the pictures (published to both Apple and Google Play stores). It was done using create-react-native-app/Expo. I didn't like the dependence on the Expo site for building app packages. It's free and there for now but I'll have to "eject" the app in the future if the something were to happen to the site. I used an open-source RN components library which does a good job selecting default typefaces and sizes. There were still fiddly bits I had to poke at to make it look decent, but it was alright for something that I whipped up as quickly as I could. The documentation for the component library was not keeping up with the continuous changes React / React Native / the library itself so that was a pain.

Note that it can get a bit confusing keeping track of what you can and cannot do with create-react-native-app/Expo. You might have to scope the app appropriately until you feel ready to "eject" it from Expo and access the more lower-level RN APIs.

On the web side, I find that I can grok the React API more easily than most other SPA libs. So there's natural affinity for me to keep the API complexity down in the projects that I choose to do by preferring the React-* APIs in general.

I agree with @jqbx_jason's comment and RN was the only sensible (sane?) choice in my case for the 1-man projects. Some background: I have professional experience in Java, C#, C, JavaScript/ES6/TypeScript and few others, but no experience doing fully-native iOS and Android apps.

FWIW, Pinterest seems to be liking RN for their mobile apps: [https://medium.com/@Pinterest_Engineering/supporting- react-n...](https://medium.com/@Pinterest_Engineering/supporting-react-native- at-pinterest-f8c2233f90e6)

</comment><comment><USER39> We (STOMT) use Cordova/Phonegap and AngularJS for our desktop/mobile apps. Ionic is considered to be faster but it's difficult to implement custom UI. Ionic might be interesting for casual apps, for us it would mean to do a complete rewrite.

</comment><comment><USER40> If web app is not necessary you also have flutter.

<comment><USER41> you can also do web app in DART (the language on which flutter is created) you can do mobile, web and server cli apps in DART

[https://www.dartlang.org](https://www.dartlang.org)

</comment></comment><comment><USER42> Tweak the question, instead of "is there a framework that makes this difficult task simple" ask "is this a difficult task that can be simplified without significant investment or overhead?".

Personally I don't think RN, Ionic, Electron, or any other tools completely solve all cross-platform development issues. Like all things its a tradeoff and personally I am not convinced that what we have out there is sufficient for most applications - particularly for small teams. Small apps maybe, but the second you have to go off the beaten path you will be losing weeks not hours of development time.

<comment><USER43> Yeah but the alternative is to write native applications for every platform, which would easily cost you months, not weeks of development time.

</comment></comment><comment><USER44> I made a React web app and then had an iOS "container" built with some minimal native iOS functionality to make everything feel more native. Here's an overview of how the iOS app was made: [https://www.vsanthanam.com/writing/2018/5/9/web-app- containe...](https://www.vsanthanam.com/writing/2018/5/9/web-app-containers- in-ios)

It works great for my simple web app. Obviously, your mileage may vary.

</comment><comment><USER45> Decided to give a go at React XP. Based on their claims, they're good because:

\- React Native Web and React Native (iOS/Android) are handled in one go

\- Windows Support

\- Stripped down so nothing from within will work on iOS but not Android, for example, as is the case with React Native...

\- Lots of components from Material UI (just launched v.1) can work right on top without too much of a hitch

Caveat: we're just getting started, so I don't want to oversell this. But faced with a similar problem, this route seemed optimal at this time.

</comment><comment><USER46> Is .Net Core something you can use for both mobile and browser? I'm curious how much traction that's getting for cross-platform stuff.

</comment><comment><USER47> Ionic uses Cordova, which you can use directly without having to use the rest of Ionic. You're then free to write the app in React or whatever web framework you prefer.

The only downside is if you do want a native look and feel, you'll need to find a UI library to provide that, but that's no different than if you were writing a PWA.

</comment><comment><USER48> React and React Native.

At Idea To Startup ([https://ideatostartup.org/](https://ideatostartup.org/)), we have developed a ui framework "One-Ui" which helps us write code that works on all platforms (Web, Android and iOS).

It has helped us immensely in reducing the time to develop apps.

</comment><comment><USER49> React Native. Trying out [http://expo.io/](http://expo.io/)

<comment><USER50> How do you like using Expo? Any serious drawbacks?

</comment></comment><comment><USER51> At my company, we're building our mobile applications using React + Cordova. I loved the idea of React Native, but after some reading I wasn't convinced given how difficult it seemed to be to get the app built for the App Store and Play Store.

</comment><comment><USER52> I use Ionic + PouchDB/CouchDB.

One code base plus auto-syncing of user data.

Works pretty great.

Ionic is pretty close to a native feeling. I think most people wouldn't be able to tell the difference.

</comment><comment><USER53> You can share JzvaScript code without having to use a framework. Both iOS and Android let you run JavaScript within a native app.

</comment><comment><USER54> A bit off topic, but if you are using ionic, how are you testing?

</comment><comment><USER55> I were looking at Vue NativeScript. Anybody on why should I not?

<comment><USER56> Also curious if someone has anything to say about Vue/Nativescript. That would be my choice as well. I'm constantly wondering why React Native gets all the attention when Nativescript seems to have so much going for it.

<comment><USER15> Imo it's hard to justify betting a product on significantly smaller communities like nativescript/weex. Also when other companies have successfully used rn in prod like fb, insta, airbnb, the stress testing has already been done for you whereas I know of exactly 0 large scale deployments on those frameworks (even flutter had the Hamilton app)

</comment></comment></comment><comment><USER57> Hello all! My name is Michael Arnold and I've recently launched a new product App Pile ( www.apppile.com ) , which is currently under a private beta release. App Pile converts Axure designs into native Android & React Native projects complete with source code. Not just source code, but readable, editable, expected code. As mentioned, it is a beta release which means the native Android offering has a stable build while the React offering is nearly complete and should be done in the next week or so. (But is still included with every download) Axure is a design program similar to Invision/Sketch/Marvel and recently created a plug in which lets you import Sketch projects, so defacto App Pile works for Sketch as well. Please check out my latest post which explains the product in a little more detail. [https://www.linkedin.com/pulse/app-pile-take-away-work- from-...](https://www.linkedin.com/pulse/app-pile-take-away-work-from- existing-software-companies-arnold/)

If you have any questions or would like a free trial code, please email me directly at email@example.com

Happy Coding!

<comment><USER58> This should probably be a Show HN:

[https://news.ycombinator.com/show](https://news.ycombinator.com/show)

</comment></comment><comment><USER59> DronaHQ has a container product that runs on all mobile and desktop platforms as well as a web app. [http://www.dronahq.com/platform/uec/](http://www.dronahq.com/platform/uec/)

Edit: [Disclaimer] I work with them. To clarify, the container is already built, you can build hybrid or native apps on top of that.

<comment><USER60> Please add a disclaimer if you have some kind of relationship. DronaHQ is obviously an enterprise solution: price info only on request and it seems the goal is to build the app for you.</comment></comment>


Ask HN: What AWS cloud management service do you recommend for small companies? - <AUTHOR> We're looking into the option of moving to AWS, and would like recommendations for an affordable, yet solid cloud management service for a smaller size company. They'll need to manage nginx, php, autoscaling (if needed), and RDS. Basically fix things when they break in the middle of the night, change autoscale rules if needed, etc, with 24/7 phone support to help out with server problems. We don't need app-level help--just infrastructure and upkeep of servers and processes.<p>Our estimated spend will be around $1k-1.5k/m on AWS. <comment><USER2> As a simple first step focused on reducing your AWS bill you should consider www.parkmycloud.com</comment>


Ask HN: How developing software has changed for you in the past years? - <AUTHOR> Hi, guys. What are the new technologies and concepts you've implemented in your workflow? Do you use containers, Git, HTTP2, SaaS, etc. ? I'm working on a presentation about the topic, and I would appreciate your help. <comment><USER2> I work in a heavily AWS-centric organization, so I've been using a "serverless" stack for a couple of web applications in the last few months. API Gateway/Lambda/DynamoDB for the back end, CloudFront/s3 for the front end and Cognito for auth. We integrate and deploy continuously using some internal tooling built around git, Jenkins and CloudFormation. The combination of high scalability and low overhead cost has been fantastic.

<comment><AUTHOR> Thumbs up. I also use some AWS services, and the results are awesome.</comment></comment>


Show HN: Anonymous chat for the workplace - <AUTHOR> Hi everyone,I recently launched specret, an anonymous chat app for groups (web only atm). Previously, I was working on a startup in the education sector which didn't get traction, but it had an anonymous chat feature which was popular. Specret builds on that idea to provide an online space for groups and teams to discuss things anonymously.
An email address is required to sign up, but all public activity takes place under a randomly generated username. I would appreciate any feedback: https://www.specret.com <comment><USER2> This is a pretty intriguing idea. I'd love to find out if this kind of thing could remain constructive for long without devolving into toxic workplace scheming and gossip.

<comment><AUTHOR> Thanks. The signal to noise ratio in our test groups is quite high. Initially, people joined a group using a unique URL shared by the group creator. Whilst that was completely anonymous, it would allow bad actors to keep registering new throw-away accounts as long as the URL remained the same.

I've since switched to one-time email invitations. The only way to join a group is to be invited by email, and each invitation can only be used to create one account.

Group creators can ban or suspend users who don't play by the rules, so ultimately, it's up to them just how toxic or gossipy a group becomes.

<comment><USER2> I see. It'd be interesting to see what kinds of behavior the anonymity would bring out in the long run even with the restrictions.

On a different note, have you given consideration to side-channel leaks? It seems possible to me that over time, one might notice trends and correlate a certain behavior with the presence of someone specific in the group, who is known to be in the group without their username being known.

Do you expect the usage model to involve "volatile" groups, as in, you create a group for every project or side project, or are groups long term?

Either way, pretty intriguing project, particularly as a social experiment. Best of luck.

</comment></comment></comment><comment><USER3> catchy name, and well done on getting .com, but if you search for "specret" in google, it autocorrects to "spectre" and shows results for the Bond movie.

<comment><AUTHOR> The site has not been indexed by Google yet. I think it will stop auto- correcting once it has</comment></comment>


Rentoid is like eBay but for renting.  - <AUTHOR> http://www.hatchthat.com/steve-sammartino-from-rentoid/

<comment><AUTHOR> What do you think of the concept?</comment>


Unconfirmed Reports Garmin Hit by Ransomware - <AUTHOR> https://www.reddit.com/r/kansascity/comments/hwg8vt/garmin_hacked/ <comment><AUTHOR> Took a snapshot of the page on archive in the event the poster deletes the post, since it sounds like its a leak from internal IT. The scope of this attack could be corp IT vs production systems. I would hope that the authentication domain is not shared between their corp desktops/laptops and their production web environments.

[https://archive.vn/3zWoE](https://archive.vn/3zWoE)

Related HN Post: [https://news.ycombinator.com/item?id=23926289](https://news.ycombinator.com/item?id=23926289)

</comment><comment><AUTHOR> Looks like it was confirmed here earlier I just missed the feed [https://news.ycombinator.com/item?id=23926289](https://news.ycombinator.com/item?id=23926289)

</comment><comment><USER2> We'll head over to REvil Sodinokibi Ransomware website then, You'll see for yourself guys!</comment>


Progressive Jpeg Demonstration - <AUTHOR> http://www.patrickmeenan.com/progressive/view.php?img=http%3A%2F%2Fi2.cdn.turner.com%2Fcnn%2Fdam%2Fassets%2F121205093053-leweb-cyborg-c1-main.jpg

<comment><USER2> Very neat. A way to choose the "download speed" for the animation would be a nice addition.

</comment><comment><USER3> Unfortunately, my electronic photo frame does not support progressive JPEG.

<comment><USER2> If you've got some kind of automation routine for putting images onto it you can losslessly convert them as part of that process.</comment></comment>


Ask HN: Where to start learning about neural networks? - <AUTHOR>

Hey HN,
I'm a high-level (language-wise) programmer, who is fascinated by the current developments in neural networks and deep learning. However, in a bid to understand more about this fascinating technology, I've realised that I have no idea about where to start leaning about neural nets.
I am certainly not hoping to (anytime soon) get to the point where I can build one myself, but would be hugely grateful if anybody with experience in the field could provide me with an overview or pointer of how to start getting into understanding deep learning, AI, and neural network.
Reading suggestions, article or even course links would be greatly helpful!
Cheers HN, and happy Sunday! ;) <comment><USER2> As a mostly self-taught programmer, I honestly didn't grok the maths until I started doing my Master's, which is why I highly recommend going back to school. Take a machine learning course at the best university you can afford.

Speaking of which, while programming is a nice skill to have, most of the toughest bits of modern AI approaches, including neural networks, is in the maths. For neural nets, you need to have a solid understanding of multivariate calculus, statistical methods, and probability theory. You should have at least an intuition of what the error function is, and how error backpropagation works.

In my course, we used the Bishop book (Pattern Recognition and Machine Learning, [https://books.google.com.au/books/about/Pattern_Recognition_...](https://books.google.com.au/books/about/Pattern_Recognition_And_Machine_Learning.html?id=kTNoQgAACAAJ&hl=en)). It's dense, and very math-heavy, but it's definitely worth slogging through.

</comment><comment><USER3> I'm an undergrad who's taken a single linear algebra course, gotten through the first round of multivar calculus and statistics. I found the link below to be a really good outline, and impetus for further googling. Basically, I'll read through it, and whenever I don't recognize a term, I'll spend an hour or two going through that term, and then return to this link for some contextualization of whatever the hell it is that I just read!

[http://www.iro.umontreal.ca/~pift6266/H10/notes/mlintro.html](http://www.iro.umontreal.ca/~pift6266/H10/notes/mlintro.html)

</comment><comment><USER4> I highly recommend Hugo Larochelle talks:

[https://m.youtube.com/playlist?list=PL6Xpj9I5qXYEcOhn7TqghAJ...](https://m.youtube.com/playlist?list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH)

</comment><comment><USER5> I started with Andrew Ng's Machine Learning course on Coursera [1]. He presents the entire subject, including NNs and prerequisite theory, in a non- intimidating, intuitive fashion. There are simple coding exercises, such as digit recognition using NNs.

Once you're familiar with the basics, you can go deeper into the subject with the books suggested here.

[1]: [https://www.coursera.org/learn/machine- learning](https://www.coursera.org/learn/machine-learning)

</comment><comment><USER6> Hi, check out Jeff Heaton's books [http://www.heatonresearch.com/](http://www.heatonresearch.com/)</comment>


Ask HN: What do you use to organize e-books and research papers? - <AUTHOR>

I'm using Dropbox to keep them organized, share interesting ones, and Mendeley Desktop for organizing papers. Anyone have any other suggestions? <comment><USER2> <http://www.mendeley.com/> \-- the best free tool

<comment><USER3> Is it better now? I have tested it before but it was too buggy for serious loading (PhD thesis), although I liked very much the interface and features.

<comment><USER4> The in-application browsing experience is pretty lame on OSX and Windows, but 'open externally' works great.

The iOS app is almost there. Once it has sync like the desktop (right now you have to individually download each!) and supports opening in GoodReader so there's good display and editing, it will be useful. But for now, if you want to do any practical device reading, you'll probably want to pull it down on the desktop and transfer into GoodReader via iTunes.

</comment></comment></comment><comment><USER5> Papers is quite nice (<http://mekentosj.com/papers/>). Caveats: Mac/iOS only, not free.

<comment><USER6> I've been using this for the past 4 years. They've got a nice iPad app that includes highlighting, but unfortunately their desktop app can't handle highlighting yet. :(

Their priorities are a bit backward. The desktop app has been surpassed by almost all other competitors mentioned here. Sad. Used to be great.

</comment></comment><comment><USER7> Calibre... for me solves all problems

<comment><USER8> I keep Calibre's library on Dropbox, and so also solve the problem of keeping my library in sync between different computers.

</comment></comment><comment><USER3> I have been through all the apps mentioned here and settled on Sente (www.thirdstreetsoftware.com). Very powerful, does all the biblio/citation thing if you need it, as well as the visualization part that Papers does. It is not as polished as specific tools (such as a Papers/Endnote combo), but I find it nice to store all my pdfs in one place, automatically adding meta data through Google Scholar, Pubmed or whatever, and commenting/highlighting in the same application. There are also some very good applescripts to export notes to Devonthink and implement a citation database à la Steven Johnson ([http://www.stevenberlinjohnson.com/movabletype/archives/0002...](http://www.stevenberlinjohnson.com/movabletype/archives/000230.html)). My main library also sits in Dropbox, and is always accessible even when I am not at a Mac.

</comment><comment><USER9> I started using BibDesk (<http://bibdesk.sourceforge.net/>) with Dropbox just last week and have been pretty happy with it so far. I don't have anything, yet, for books, but I suppose I could just write BibTex entries for the books and be done with it.

</comment><comment><USER10> I'm using Yep! for organizing my Documents via OpenMeta-Tags (they're synchable via Dropbox). Yep uses Spotlight for indexing Documents so you're able to find fast. The cool part is that you can have a second organizational structure on the data level. (You're able to put PDFs where you need them, eg. project folders, and still find them in Yep!) For bibliographys and stuff like that I use Sente. I search for all my PDFs with a certain tag in Yep and just add them one by one to sente. This works great for me. Btw: Sente is also able to create a synced copy, which is great if you have different macs (like I do) and working longer on a paper or article.

</comment><comment><USER11> I tend to keep my e-books and research papers in different piles in one sense. Calibre handles the e-books better than just about anything else out there. For research papers I use DEVONThink. I tend to be a bit of a research paper pack-rat and DT makes it easy for me to find what I want in my huge slushpile of PDFs. The current DT iOS app is a bit of a work in progress, but until it gets to the same level us usefulness that the desktop version of DT had I can easily dump papers for mobile reading via the Dropbox->GoodReader path.

</comment><comment><USER12> I use BibDesk to search for and organize research papers and Skim to read them (both Mac OS).

I like to write company-confidential notes on the papers, so I don't sync them anywhere external, so as to comply with security guidelines.

That ends up meaning that 'sharing' papers means just emailing the PDFs around.

</comment><comment><USER13> Mendeley to organize, Xournal to read + annotate, git to store, share, sync.

The git part somewhat laborious, but until SparkleShare gets released officially that's what I'll work with.

I should add that I arrived at Mendeley after Bibdesk, after Zotero.

</comment><comment><USER14> Yojimbo (<http://www.barebones.com/products/yojimbo/>) plays quite nicely for this sort of thing, and works with Dropbox too to keep your library synchronised across multiple machines.

</comment><comment><USER15> CiteULike (<http://www.citeulike.org>) for papers. I like the ability to upload PDFs so that I don't have to keep jumping around paywalls every time I want to refer to an article.

</comment><comment><USER16> ibooks app on the Ipad with Dropbox ... as long as its in pdf format you can just put it in dropbox and add it to ibooks from there. love it.

</comment><comment><USER17> Zotero

<comment><USER18> Mendeley integrates with zotero, fwiw.

</comment></comment><comment><USER19> bibtex + file system

</comment><comment><USER20> I'm using CloudApp for most of the sharing and then Dropbox for bigger files. I really want to recommend Papers. It's really nice and keep me away from the documents explosion.

</comment><comment><USER21> A folder called Bibliography with files named as follows: "first_authors_last_name' 'year_of_paper' 'title_of_paper.extension"</comment>


AirBnB (YC W09) Adds Groups, Locations All Around The World - <AUTHOR> http://www.techcrunch.com/2009/11/20/airbnb-groups/

<comment><USER2> I am currently sitting in an apartment I rented for a week from AirBnB. Overall my experience has been positive and I would rent again.

First apartment owner I attempted to contact never replied, so had to cancel. Next one worked out better, although I had to mail twice to get a reply. The listed price of $90 / night in Boston turned out not to be true, there were hidden fees in addition to this. AirBnB adds a fee which is not included in the listed price, and the apartment owner also had their own cleaning fee.

But these are small things considering we got a gorgeous apartment, more spacious and at a lower price than a sterile hotel room. This story is not yet over though, as we haven't yet checked out.

</comment><comment><USER3> They are spammers and they spam on craiglist all the time. I do not trust spammers.

</comment><comment><USER4> I just used em, and delivers as advertised. 2 nights in portland, 40 bucks a night, nice room, nice hosts, no hassle.

Beats the motel 6, that's for sure.</comment>


Librem5 Hardware Update - <AUTHOR> https://puri.sm/posts/librem5-2018-11-hardware-report/ <comment><USER2> It's hard to overstate how important Librem phone is. Currently, it's pretty much impossible to buy a high end phone that you can actually own. All Android based phones have their firmware locked and root access disabled. This effectively means that you do not own the device, and you don't get the final say as to what will be running on it. I'm aware that it's possible to crack the firmware, but I think that's completely beside the point.

We desperately need an open alternative that puts control back in the hands of the user. I think open computing is of fundamental importance. If we lose the ability to decide what code runs on our devices, we'll be moving a step closer towards a totalitarian dystopia where the governments and corporations get to decide what's good for us.

<comment><USER3> > crack the firmware

In most cases, you don't have to crack anything, you can officially unlock the bootloader and flash your own OS build.

Yes, you can't touch the early boot initialization, you're still required to use vendor blobs for using wireless/modem/camera/etc things, but you can control most of the software that matters.

<comment><USER4> Yea using adb/oemunlock. Sometimes you have to get a code (like with Sony, you input your IMEI number into their website and get one). I've had one Sony that was unlockable; a condition of the original cell provider.

Still, it's bizarre considering you can install Linux on any PC/laptop you buy.

The bigger issue of course, is that you can't just install Linux on a phone. They're all random pins soldered to random chips and all use patched to hell Kernels with binary blobs. Linux distros can release images that are designed on boot on x86/x86_64/PPC/Sparc and they'll booth up and install on most of those machines. That's impossible with nearly all Android/ARM devices.

PostmarketOS is trying to change that from the other direction, but Librem is a huge step in giving developers embedded hardware that doesn't require carefully modified and patched kernels/bootloaders.

<comment><USER2> Yeah, I think the fact that you have to request your IMEI number and then use additional tools to unlock the device you bought is absurd. Nowadays, a phone is no different from any other computer, and you should be able to buy one that lets you run whatever you want on it without jumping through any hoops.

<comment><USER5> Some of them make you wait weeks/months before you get their approval to unlock.

</comment></comment></comment></comment></comment><comment><USER6> I don't really have anything of value to add to the conversation, but in case the Librem5 team is here I just wanted to thank you for your work and applaud your openness to the current status of everything.

Another project which is taking on a similar challenge and is similarly open is the Dragonbox Pyra.

<comment><USER7> > and is similarly open is the Dragonbox Pyra

The Pyra is taking forever and it's pretty much a one-two men's team, which is why it takes so long I guess.

<comment><USER6> It is taking forever, yes. Unfortunate as the hardware will be out-of-date by the time it is actually fully released. Still, it'll be fast enough for its purposes and will really be a triumph for Michael Mrozek. It's amazing that he's been able to do all this.

<comment><USER7> The problem is that there are now alternatives out there like the GPD-Win 2 and GPD Pocket, which are way more "open" (and actually using the mainline kernel now) than the Pyra can ever hope to be (The Pyra will use to use a number of binary blobs to function. Such as the GPU support...). Of course, the GPD may be inferior in some aspects, but they release hardware very quickly and the market is pretty much captured by their efforts.

</comment></comment></comment></comment><comment><USER8> i wonder if smaller screen variants will ever be on the radar. i'm on a bootloader-unlocked, rooted, lineageos sony z5 compact (4.6" 720p display) that you'd have to pry from my cold dead hands. but i would love to buy a small hackable, privacy-first phone with open hardware instead.

i imagine pcb layout becomes a much harder and more expensive problem at small sizes, not to mention most people wouldn't touch "only" a 720p display in 2019, even at a 4.6" display size (unfort), even if you told them it adds 30% battery life.

<comment><USER9> ill be sticking with the xz1 compact 4life! (or at least until someone makes something the same size, waterproof, with a headphone jack, camera button, notch-less and a fingerprint scanner on the side. so not very likely the way things are going :)

<comment><USER10> I just sent mine in for (hopefully) warranty replacement, I've never had a phone I loved more.

Lots of power, easy to handle, and I don't think about battery life ever. If they don't replace it, I'm just going to buy another. I was very sad to see they increased the screen size and resolution on the new models.

</comment></comment></comment><comment><USER11> I'm quite impressed by their company manifesto:

[https://puri.sm/about/social-purpose/](https://puri.sm/about/social-purpose/)

More companies should follow this example.

<comment><USER12> Indeed. This is an encouraging idea. But in a broader sense -- applied to a whole sector of corporations, for example -- I'm curious how legally enforceable this kind of charter is, under the cited statute or under other laws governing incorporation.

Under what conditions can articles of incorporation be changed? Can't their investors force such a change? If so, it seems a large burden must be placed on choosing investors who are somehow legally bound under similar rules.

And what mechanism of enforcement exists? Presumably investor lawsuits are the main mechanism, which again puts a large burden on finding investors whose goals are not returns maximization. If this state statute specifies a distinct tax classification, perhaps there would then be state-level prosecutorial or administrative enforcement.

</comment></comment><comment><USER13> While the Librem5 is step into right direction, it is far away from open hardware and will likely need even software proprietary bits - so I would recommend to stay in realistic zone and help the project in any way you can.

<comment><USER11> From their manifesto:

> The Corporation will release all software written by The Corporation under a > free software license.

> The Corporation will release all hardware schematics authored by The > Corporation under a free hardware license.

If you are talking about the IP blocks that are bought/licensed from third parties, then you are right, but I suppose that these are replaceable by equivalent blocks in future versions, without the user noticing. In other words, users don't depend on these blocks, so for all the user knows, these blocks are commodities.

<comment><USER13> I know the manifesto, I am among original ones proposing it.

And for things that might happen in future, I would leave them for future. Building hw takes time and proper dedication - all what I am saying is to be realistic towards current situation. The blocks are no commodities but some essential parts in today's use of smartphones. And no, things don't move that fast that you will just replace it.

If done right, things could finally go into right direction or at least have some new light on it.

</comment></comment></comment><comment><USER14> Kudos. The most interesting thing in smartphones for my needs since the Nokia N900, not counting the SailfishOS efforts. I'll buy one if it works "a la Maemo" (Debian derivative).

<comment><USER15> Their OS, PureOS, is a Debian derivative.

</comment></comment><comment><USER16> > Almost right after that was a Chinese holiday, the Golden Week, which is in > practice a two week holiday.

This doesn't match with my experience. Golden Week is a one-week holiday that gets you less than 5 days of vacation, because -- although companies are legally required to give Monday through Friday off -- the norm is to work on weekends around the holiday to make up for the lost time.

Does anyone have an idea what sort of Golden Week implementation Purism ran into? Why is it so different?

<comment><USER17> I'd be interested in hearing anyone's experience with holidays and China B2B.

Is it just kind of known that things stop there for certain weeks? Or are these formally set out in schedules?

My only experience has been B2C, where the experience is generally {no response} -> {a week later: "Oh, everyone was on holiday"}

<comment><USER18> Well everyone there has the same holidays, and yes they mostly assume everyone they work with are well aware of it. So just ask them nicely every three months what are their next holidays

</comment></comment></comment><comment><USER19> For the last few months I have been super excited about the Librem 5. I check way too often for their updates.

Maybe I'm alone but I wish I had more visibility into their progress. Might not be helpful for them though.

<comment><USER20> I really want a Linux phone that has the same kind of specs and build quality as Samsung flagship phones.

<comment><USER19> I'm not so worried about that any more. But if the premium hardware is what you want I'd support postmarketOS.

</comment></comment></comment><comment><USER11> Does it have a hardware switch to turn off the mic and camera?

<comment><USER21> Yes. You can see the switch on the side render here: [https://puri.sm/posts/librem5-roadmap-to- imx8/](https://puri.sm/posts/librem5-roadmap-to-imx8/)

<comment><USER13> Those are just mockups and not the end product which might heavily change due to various things.

<comment><USER21> Of course. But you can see three switches on the side of dev boards which would seem to indicate that this part of the plan hasn't changed. (yet)

</comment></comment></comment></comment><comment><USER22> As an expat living in HK, I did not quite understand the explanations about delays at the beginning of the article.

The golden week is Japanese, not Chinese. Nothing closes in China at that time. And it's in may/april.

Mangkhut did not really hit China mainland, it was already mainly just a storm when it reached mainland, and it died in 1/2 days once leaving the sea. I guess most of the factories are near Shenzhen, they should not have really suffered from Manghkut.

Just wanted to rectify that...

<comment><USER23> [https://en.wikipedia.org/wiki/Golden_Week_(China)](https://en.wikipedia.org/wiki/Golden_Week_\(China\))

>The "National Day Golden Week" begins around 1 October.

>Three days of paid holiday are given, and the surrounding weekends are re- arranged so that workers in Chinese companies always have seven continuous days of holiday.

</comment></comment><comment><USER24> Any experiences with their laptops?

<comment><USER25> Typing to you from a Librem 13 that I've owned for ~3 weeks. So far, the hardware is stellar. I can't say the same for PureOS, I replaced that after ~36h (never made it to desktop). Battery life is consistently ~8-9h. The machine is more powerful than the desktop I replaced it with -- that box is basically NAS now.

Would I buy again? Yes, for the ethos. Would I recommend it to a casual user (the intended audience)? No. It's still very much a techie device. If I push the power button and don't see desktop within a minute, that's broken. You need to be comfy at the command line to maneouver -- which I notice has been almost entirely convenienced away in Fedora 29. If Librems shipped F29, I could at least recommend it for my partner who is the definition of a casual computer user.

</comment></comment><comment><USER26> >18650 battery

I am tired of subpar battery life being a de facto industry standard

<comment><USER27> I am almost certain that battery only applies to the dev board for testing and development. There is no way a 18650 is going to fit in the final Librem 5 product.

<comment><USER21> Sadly, I think you're right. Hopefully they manage to go with some sort of standardized (cheap and easy to replace) battery for the final product.

<comment><USER15> Sadly? I wouldn't really want a phone that had a battery physically larger than a AA battery.

</comment></comment></comment></comment><comment><USER28> Why is there a substantial heat sink on what's supposed to be packaged down to the size of a smartphone?

<comment><USER15> Because it's a platform under active development, and they're probably more concerned with functionality than some super sexy tiny cooling solution? At some point they'll most likely test the production cooling system, but for now it probably doesn't matter. You'd be surprised how many things (cooling, PCBs, etc) are much larger early on than their production counterparts...

<comment><USER17> Software perspective: Fatal error, I'll just make a change and recompile.

Hardware perspective: CPU cooked itself because frequency regulation was accidentally turned off, time to wait for new parts from China + assembly.

It always amuses me how laisez faire folks are about things like ESD. "It's never caused a problem before" isn't a reason to ignore best practices and not work defensively.

<comment><USER29> > "It's never caused a problem before" isn't a reason to ignore best practices > and not work defensively.

It is if working defensively is costlier than replacing the odd broken part.

</comment></comment></comment></comment><comment><USER30> Hate to be the party pooper here but does anyone believe this thing will ship in January?</comment>


The Kernel Programming Language - <AUTHOR> http://web.cs.wpi.edu/~jshutt/kernel.html <comment><USER2> I wonder if it's possible to infer the types of a Kernel program.

<comment><USER3> Certainly not with our existing type systems. It might be possible if somebody could come up with a new system with the _vau_ calculus at its core rather than lambda calculus (as Hindley-Milner etc. are).

I think it would be a dead-end with kernel-standard though. The presence of mutability and cyclic data structures seems like the problem would be as unsolvable as the halting problem. For any serious investigation of type inference, you would probably need to stick to an immutable Kernel subset. The Kernel Report does make mutability optional.

<comment><USER4> Hmm, I don't see why vau-calculus should change things. Fexpr are more or less like expression trees in C# no? (Which are statically typed, at least where they compose with the rest of the program). Granted, dynamic languages in general can be a challenge, but TypeScript is a good argument for it being feasible at least.

</comment></comment></comment><comment><USER5> The same idea - allowing a procedure to get either a reference to a value or syntactic description of the value coupled with the dynamic environment from the procedure call-site - is implemented in Io language.

Io is a purely OO language influenced by Smalltalk and Self the most; it has only objects and no classes, objects have named slots which reference other objects (some of which are "activatable" \- callable, IOW - and they're then called methods) and all computation happens by sending messages between objects. If a message name corresponds to the slot name which holds a method, that message send (by default) results in the method being called.

Messages are just objects, which carry both dynamic environments from the place they were sent and the arguments, which are passed as message objects themselves. The method may then choose to evaluate some of the messages passed as arguments or not; but it can also change the messages before evaluating them, as the Message objects are mutable and respond to many of the same messages that Lists respond to, including `setAt(idx, val)` for example.

(One tricky part of all of this is getting the relation between Message objects and message-sends in Io. In short, Messages are objects which have target, name, and a list of arguments. These objects can be both serialized into, and read from a string, in which case they look like this:

        target msgName(arg1, arg2, ...)

The place in program _text_ and the _lexical_ environment at that point is a _message-send_ , while Message is a runtime representation of that message- send and it references _dynamic_ environment at the point of call.

And BTW, in the syntax of message-send above, both `target` and `(arg1, ...)` are optional. In Io, code like this:

        1

is, in fact, a message send with `name` set to `"1"`; it's first sent to the current `this` object, and then bubbles up the inheritance chain to `Object`, which handles the message by returning a Number object with value of `1`.)

The effect is really interesting: the language is incredibly expressive, with metaprogramming support rivaling Lisp (Io is also homoiconic), but with a very different set of metaphors/concepts it's built on. It could be more approachable for normal devs (than Lisps), as its syntax is arguably closer to the mainstream, and the OO metaphor is widely known (although not really understood in a way Smalltalk, Self or Io understand it).

Anyway, being able to write functions which can decide whether they want, and how exactly, evaluate their arguments is a powerful technique. I think REBOL and Red are also able to do this, and I think TCL too. Factor would also count, probably. It's a shame it's not supported in more mainstream languages - may be hard to implement efficiently, or may not be that useful with non- homoiconic languages or something like that.

<comment><USER6> I'm a big fan of Io, but, sadly, it is no longer maintained. I've toyed around with writing a more minimalistic implementation suitable for lua-style embedding, but have never found the willpower to finish it.

<comment><USER5> That's true, although I'd say it's still _maintainable_ , and Steve Dekorte still accepts Pull Requests. I had a bit of an adventure with Io last year[1], which was part of a side-project I had in mind for a very long time, namely a MUD server in the style of LPMUDs. I learned a lot and even wrote some of the code for the server, then decided to port pyparsing (parser combinator library) to Io, and then - as usual - the life happened and I forgot about it. Still, that project was with me for the past 20 years, and I believe I will get back to it at some point[2]... all that just to say that I'm not going to become the main maintaner, but if there are just a few interested people, I'd be willing to help :)

[1] [https://klibert.pl/posts/adding_destructuring_bind_to_io.htm...](https://klibert.pl/posts/adding_destructuring_bind_to_io.html)

[2] Fortunately for me, Io has all I would need for this project, including async I/O and lightweight co-routines.

</comment></comment></comment><comment> fake-name > The _Kernel_ Programming Language

Because no one uses `kernel` for anything already.

I mean, holy fucking hell, if you're creating a programming language, choose a name that you can fucking search for.

<comment><USER7> > _Because no one uses `kernel` for anything already._

Because people will seriously be perplexed between an esoteric experimental programming language and operating system kernels, right?

Like that huge fiasco in the early 50s, when people confused OS kernels with corn...

<comment> fake-name People, no. Pretty much every search engine ever? Ohhhhh yeeeaaahhh.

Besides, the Linux kernel has a specific-enough dialect of C that I assumed this was about linux kernel programming based on the title.

<comment><USER8> > the Linux kernel has a specific-enough dialect of C that I assumed this was > about linux kernel programming based on the title

Yeap, same here. This is a really poor naming choice.</comment></comment></comment></comment>


Ask HN: Any react developers willing to do a code review for a simple project? - <AUTHOR> I hope you and your family is doing well during this challenging time.<p>I have a simple website written in React + Firebase. I am looking for any mentor who can do a code review. Especially have challenges with state management. It would be a great help. Thanks. <comment><USER2> maybe try [https://codereview.stackexchange.com/questions/tagged/react....](https://codereview.stackexchange.com/questions/tagged/react.js)</comment>


Progress on Prediction Markets - <AUTHOR> http://freakonomics.blogs.nytimes.com/2008/05/09/progress-on-prediction-markets/ <comment><USER2> Interesting that online media companies have been employing prediction markets for years, and some Internet startups have been formed around this concept. Of course, the ones I've seen are sensitive to existing regulations. Check out The Industry Standard and the Hollywood Stock Exchange for examples of prediction market implementations:

<http://www.hsx.com/> <http://www.thestandard.com/predictions></comment>


Show HN: I miss Google Inbox and built a replacement - <AUTHOR> https://www.darwinmail.app/index.php?ref=HN_inbox_replacement <comment><AUTHOR> Hello HN I'm Joey, the maker of DarwinMail [1].

DarwinMail enhances Gmail to get your Google Inbox features back.

Features - bundles, snoozing, reminders, dark mode, bulk actions, undo send, custom backgrounds, templates, & much more.

Darwin Mail will evolve to become great over time, thanks to its users, and thanks to you [2].

I would love to answer any questions you have!

PS: Would you like 20% off the yearly plan? [3]

[1] [https://www.darwinmail.app](https://www.darwinmail.app) [2] [https://www.darwinmail.app/roadmap.php](https://www.darwinmail.app/roadmap.php) [3] [https://www.darwinmail.app/mail/index.php?promotion=true](https://www.darwinmail.app/mail/index.php?promotion=true)

<comment><USER2> I use fastmail instead of gmail, but would love to be able to use inbox features. Maybe you can support other email providers as well?

<comment><AUTHOR> Hey there!

I am really sorry if you cannot use DarwinMail right now. I'm currently building out features that users have requested and keeping the bugs to a minimum.

Adding more clients is high on my todo list though as I don't want anyone to be left out :)

</comment></comment></comment><comment><USER3> Already submitted as Show HN 3 months ago:

[https://news.ycombinator.com/item?id=19705440](https://news.ycombinator.com/item?id=19705440) (218 points/222 comments)

<comment><AUTHOR> Hello, The post from 3 months ago was for the launch. For months and months before the launch I was working hard on DarwinMail.

I received so so much helpful feedback and support on launch day... I was simply blown away.

Since the launch, I have been improving DarwinMail and implementing new features that have been requested.

Early morning, after hours, weekends and during dinner time is when I work on DarwinMail and I love doing so. One of the main features requested since the launch was bundles and I only recently added that feature to DarwinMail.

Please, allow me to receive the same kind of valuable feedback I once received. It was wonderful to hear so many valuable thoughts and I would be over the moon if it happened again.

<comment><USER4> Your mistake was in using the same title and presenting this as a fresh Show HN. Three months is not long, especially when the original thread got major attention, as yours did. People routinely try to milk this cow too frequently, and users really don't like it.

If you read the Show HN guidelines you'll notice that they say: " _New features and upgrades ( "Foo 1.3.1 is out") generally aren't substantive enough to be Show HNs. A major overhaul is probably ok._" If there really has been a major overhaul, you should explain in detail what is new, and link to the previous discussion.

[https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

HN's FAQ also says that once a story has had significant attention, we mark reposts as dupes after about a year.

[https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)

<comment><AUTHOR> Hello Dang,

Thank you so much for taking the time to clarify this.

I would like to explain in detail what has been changes have been made in DarwinMail since the previous discussion [1]

Browser Support - For several desktop and mobile browsers, DarwinMail was not loading. This was because many of the code level functions being used were not compatible with all major browsers. This required a significant overhaul of the existing codebase, removing all of the logic that was not incompatible with some browsers and finding new ways to accomplish the same actions in our codebase.

Bundles - Bundles were the most requested feature since the beginning of DarwinMail. As such, I spend a substantial amount of time designing how bundles would work for DarwinMail. After several failed attempts I finally found a way to replicate the bundling behavior that was once in Google Inbox into DarwinMail. I have also added the system bundles Social, Updates, Forums, Promotions.

Website Redesign - Mobile apps were the second most requested addition to the DarwinMail toolset. However, this request was in no way taken lightly. DarwinMail had previously been designed for desktop. A redesign of the entire website was needed to allow the user to operate on mobile. Every view, modal, menu, email, heading and more had to be redesigned to fit on mobile as it was previously broken and largely incompatible on mobile.

Progressive Web App - Furthermore, DarwinMail was converted into a progressive web app. This required over 30 steps (many complex and time consuming) to be completed in order to satisfy the requirements specified here: [https://developers.google.com/web/progressive-web- apps/check...](https://developers.google.com/web/progressive-web- apps/checklist)

Speed Enhancements - DarwinMail was terribly slow and oftentimes inoperable when it was launched. As a result, many changes had to be made in order to create a smooth experience for users. JS & CSS files needed to be cached & minified. All external scripts needed to be stored locally & minified or used via a CDN. Many exhaustive blocks of the logic needed to be cut down to reduce page execution times. Page load speeds were increased by cutting down image sizes and resolutions.

Server Improvements & Security - Much work was needed to be done to our server in order to ensure the security of the website. There was a lot of user input sanitization carried out on all forms of user input. Countless mods were researched for our server and several were added to our server. The server was also upgraded. This required substantial work as much of DarwinMails underlying infrastructure broke after the upgrade.

Largescale Code Changes - A large amount of DarwinMails code was developed in a rush to create a product that users would like to use. As a result, a code cleanup & change overhaul was needed to move forward. Thousands of lines of code needed to be changed in order to facilitate this move forward.

Referral System - A referral system was developed so that users can earn a fee for any friends they referred. This referral system required countless paper prototypes and redesigns.

User Testing & Bug Fixing - There have been hundreds of bug fixes in the last three months. This is largely due to the generous feedback received from our users. Bug fixes for all manner of issues have been completed such as broken nav bars, emails not appearing properly, menus not working, signatures not loading, broken modals, etc.

Keyboard Shortcuts - DarwinMails keyboard shortcuts were mapped to work the same way Gmails keyboard shortcuts work. This required substantial investigation to ensure a 1:1 mapping.

Swipe Functionality - In order for users to achive increased levels of productivity while dealing with their emails, swipe functionality was added to DarwinMail. This allows users to swipe left or right to carry out actions such as pinning, starring and deleting their emails.

Bulk Actions - There is nothing worse than having to deal with a block of emails one by one, so one of the major features developed for DarwinMail was bulk actions. This allows a user to apply an action such as archiving, deleting, starring or pinning on a large group of emails in one click.

I strongly believe DarwinMail has been vastly changed since the initial launch [1]. I have made many changes, serious bug fixes, website upgrades, huge code changes, redesigns and implemented numerous features.

The above is the result of many late nights, early hours before work and weekend coding sessions. In fact, my girlfriend almost broke up with me I spent so much time coding DarwinMail.

I hope the above are detail enough to warrant this new post.

Please let me know if you have any questions as it will be my pleasure to answer them.

[1] [https://news.ycombinator.com/item?id=19705440](https://news.ycombinator.com/item?id=19705440)

</comment></comment></comment></comment><comment><USER5> I used Inbox very heavily when it came out and loved it, but then I moved away from GMail in my attempt to de-google as much as possible. I now use the Spark[1] mail client. Its good, not amazing, but good.

This looks nice, but of course being tied to gmail means I can't use it.

[1] [https://sparkmailapp.com/](https://sparkmailapp.com/)

</comment><comment><USER6> Kudos to OP for replying to every comment with the type of unbridled innocent optimism that is devoid from most marketing materials. I'm not sure I can use this until it gains a companion mobile app; but I'm glad someone is working in the space and that they happen to be very, very kind.

<comment><AUTHOR> Awhhh you are so kind!!

It truly warms my heart to hear such positive feedback, and personal feedback even!

I really appreciate it. And I am smiling from ear to ear.

The mobile apps are perhaps the most requested add on! I'm currently building out our features as requested by users and ironing out the bugs.

I hope to convert the web app into mobile apps / create native apps very very soon.

Thanks again :)

</comment></comment><comment><USER7> Unfortunately, does not work with third party cookies disabled.

<comment><AUTHOR> Hello and thank you for your feedback.

I am really terribly sorry for any trouble this has caused.

DarwinMail currently uses a cookie for your email address once you have authenticated with it.

I am however in the process of removing this cookie and using local storage instead :)

If you have any issues enabling third party cookies, I have created a guide for every major browser in the FAQ section of our homepage :)

<comment><USER8> I've been using the web for probably 10 years without 3rd party cookies enabled and I'm not about to start now.

It's good that you're getting rid of that dependency. It's usually only few crummy web shops and flight/hotel booking that have issues working without a secondary insecure browser.

</comment></comment></comment><comment><USER9> [https://simpl.fyi/](https://simpl.fyi/) that's enough for me

</comment><comment><USER10> Love Darwin Mail!!!

<comment><AUTHOR> Thank you so so much, Daniel.

Your kind words mean the world to me. It's such an amazing feeling to receive positive feedback on something you built from the ground up.

I will continue to make improvements to DarwinMail each and every day.</comment></comment>


DP-3T/Documents: Decentralized Privacy-Preserving Proximity Tracing - <AUTHOR> https://github.com/DP-3T/documents <comment><USER2> There's also this architecture proposal by the maintainer of iPXE: [https://github.com/ipxe/cx](https://github.com/ipxe/cx)

</comment><comment><USER3> Here's a comparison of the Apple-Google solution vs. the PEPP-PT project using this DP-3T approach: [https://medium.com/@legfranck/the-good-and-the-bad-of- apple-...](https://medium.com/@legfranck/the-good-and-the-bad-of-apple- googles-privacy-preserving-contact-tracing-744806450be9)

<comment><USER4> I really hope Google and Apple will implement the proposed protocol from DP-3T and give audited and open source apps more control over how the contact tracing is done.

<comment><USER3> I agree. Ideally, the code will be embedded in the Android source code, which is open source. But more likely it will be an update of the Google Play Services, closed-source... But the Cloud code should definitely be open- source. We can count on Google for that.

</comment></comment></comment><comment><USER5> Where does this differ from the Apple/google approach? I was reading their doc and it felt like I was re-reading a simplified version of the Apple documentation, with the addition of a traceable-to-the-person healthcare provider authorization code.

<comment><USER6> This document predates the Apple and google one.

<comment><USER5> Ah, fair enough then :D

</comment></comment></comment><comment><USER7> a critical review of this approach: [https://eprint.iacr.org/2020/399.pdf](https://eprint.iacr.org/2020/399.pdf)

<comment><USER4> Some of the attacks seem to be high cost, low payoff.

Have you read the newer version?

There is a new proposal that would protect against most of these attacks.

<comment><USER3> DP-3T admits now that the best solution is the Apple-Google one. They greatly contributed to the design of the A-G solution so kudos to them. After reviewing this critical review of DP-3T, the only attack I see that applies to the Google-Apple solution is the replay attack. It can be fixed easily by the solution proposed by Prof. Serge Vaudenay of EPFL in Section 4.4 of [https://eprint.iacr.org/2020/399.pdf](https://eprint.iacr.org/2020/399.pdf). In a nutshell, send a tag along the ephemeral ID. This tag would be a message authentication code (MAC) computed with the ephemeral ID and a coarse timestamp of when it was sent using the sender's key, SKt. When Apple-Google sends out the SKt keys of the infected people to everybody, recipients will go through the ephemeral IDs they saw to look for matches. When there's a match, the tag will also be checked, i.e. does the tag I compute based on the timestamp when I received the ephemeral ID match the tag I received. If yes, then it was sent by this infected person. Otherwise, it's a replay attack and should be discarded.</comment></comment></comment>


In praise of ranked-choice voting - <AUTHOR> https://www.economist.com/united-states/2018/06/14/in-praise-of-ranked-choice-voting <comment><USER2> "Ranked Choice Voting" is not a single voting system. There are many ways to implement such a voting system where voters rank their candidates in order of preference. Some of these systems, like Instant Runoff Voting (IRV, basically what San Francisco uses) have serious issues. Extremely susceptible to strategic voting, IRV also has the problem where ranking a candidate higher can hurt that candidate, and ranking the candidate lower can help them.

I feel great regret that IRV is the system that seems to get all the press, because it's very flawed compared to systems like most of the condorcet methods, and it's more complicated than the better-behaved Range Voting system (whereby each voter gives each candidate a score, say, between 1 and 10). Voting reform is important but when we have the political will for it, we really need to make sure we do things right.

<comment><USER3> Amen.</comment></comment>


Jane Street Guide to Probability and Financial Markets [pdf] - <AUTHOR> https://www.janestreet.com/static/pdfs/trading-interview.pdf <comment><USER2> Their answer to "Q: What's the probability that when we roll 2 d6s and add up the results, we get 7?" could be shorter. It is 1/6 because after the first die produces a number from 1 to 6, there is exactly a 1/6 chance that the second die will produce a number giving a sum of 7. The probability of getting a sum of 6 from two dice is 5/6*1/6 = 5/32 using similar logic.</comment>


Directed Edge + Shopify = Easy - <AUTHOR> http://blog.directededge.com/2010/01/06/directed-edge-shopify-easy/

<comment><USER2> Will be interesting to see a follow-up post on how this impacts your sales/adoption... hopefully you can post a graph with a nice hockey stick in it :-)

</comment><comment><USER3> Directed Edge definitely falls into the "I wish I'd thought of that" category.</comment>