Are Hot U.S. Startups The New Bling For Rich Russians? - <AUTHOR> http://www.techcrunch.com/2009/12/20/are-hot-u-s-startups-the-new-bling-for-rich-russians/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29&utm_content=Google+Reader

<comment><USER2> That comment was silly and this article is sillier. Neither are grounded in sound reasoning, but both meet universal acclaim at Hacker News. _There goes the neighborhood._

So is there evidence Russians are investing in US technology start-ups as status symbols?

      No.

Firstly, the "Russians" behind these investments are really just one fund called Digital Sky Technologies.

Secondly, although this fund is located in Russia and is composed in part of Russian money, the fund also includes investments by Goldman Sachs and Tiger Global.

Thirdly, neither the Facebook nor Zynga investments are clearly recklessly lavish. Techcrunch observed that "no one else wanted in at Facebook at that $10 billion valuation." That is the very definition of being a high bidder and, of course, being the highest bidder is required to win. Tiger Global, Institutional Venture Partners and Andreessen Horowitz each invested in Zynga at the same valuation as "the Russians."

So have "the Russians" involved Goldman Sachs, Tiger Global, Institutional Venture Partners and Andereessen Horowitz in the private equity equivalent of a coke and hooker binge?

I don't think so. Maybe DST is just another reasonably managed venture fund and Techcrunch and a random Hacker News commenter are off the mark.

</comment><comment><USER3> I don't mean to sidestep what is an interesting discussion on foreign investments here, but I was a little surprised how prominently HN was featured in this article. I've always seen the relationship between YC and TechCrunch as tolerant at best. But here Arrington not only directly refers to "Hacker News", but also fully quotes abalashov's comment. Are these two startup- centric organizations completely intertwined now, or should we expect a new rush of TC noobs? (I mean no disrespect by saying that either).

<comment><USER4> Equally interesting that abalashov calls TC on using the completely unsubstantiated conjectures of a lone commenter on an internet news board as the basis on which to write an article.

That is the difference between HN and TC. On edit:HN, commenters generally delineate their comments between that which is based on empirical evidence, and that which is their own conjecture. This intellectual honesty that many, but not all, HN users engage in makes HN 'feel' more reliable than TC. The rub is that when HN is used as a reliable source, that same intellectual honesty feels obliged to point out the fact that the source is not reliable. Even the user who made the comment!

I think PG is to be congratulated on creating such a forum. And HN users should be congratulated on pointing out flaws in debate points, even when the debater agrees with your position.

<comment><USER5> _Equally interesting that abalashov calls TC on using the completely unsubstantiated conjectures of a lone commenter on an internet news board as the basis on which to write an article._

abalshov's comment did no such thing. He only wanted some level of "privacy" that he expected to get from posting it on Hacker News instead of a high profile website like TC. That's why he jokingly expressed concerns about being found assassinated.</comment></comment></comment>


The Phone That's Failing Apple: iPhone XR - <AUTHOR> https://www.wsj.com/articles/the-phone-thats-failing-apple-iphone-xr-11546779603 <comment><USER4> I cannot help but think that an iPhone XR mini would have been a great seller if it hit the $450 range. I just don't understand Apple these days, its like they have reverted to the early 90's where they kept jacking the price until even the loyal customers had to exit the ship. I had so believed they would repeat the iPod strategy and start at the top end and slowly squeeze the market by introducing models that filled in the lower price bands.

<comment><USER5> I don't understand why people are so confused on this.

Apple ships models that fill the lower price brands. It is the iPhone 7 and iPhone 8 which are still supported and being sold.

<comment><USER6> Consider the iPod: the differentiation was about things people would care about, like size, capacity, portability, style, etc. You weren't made to feel cheap just because you entered at the lower price points. You _wanted_ an iPod Mini, and it made sense that it cost less than the Classic: you were still getting "the best" version of the thing you desired.

Same story with the Mac: buying the iBook didn't make you feel like you were cheaping out, you were making a conscious choice for what you _wanted_ , not buying "last year's PowerBook".

With the phones it's very different. Buying an old phone doesn't make you feel good, it just makes you think "I _know_ this isn't the best, but it's all I could afford", and that's very un-Apple feeling -- especially when you still have to pay quite a lot.

Apple has apparently boxed itself into a corner, though: this is its second attempt to segment the line (the 5c being the first) and both have failed because they didn't feel like _different_ things, they just felt like _cheaper_ ones: the 5c was just a plastic 5S, and the XR is basically an XS with cheaper camera and screen.

So how else can they differentiate? Making a small phone won't really fly - while I'd _love_ an SE-sized XS, the Chinese market they need to win back wants its phones big.

That only leaves the margin to cut, and that's a shibboleth. You can see why they'd much rather focus on services to escape this fix.

<comment><USER7> Yes! You hit the nail on the head!

The iPhone needs to be split between iPhone Mini, iPhone and iPhone Pro, instead of current model of "last year", "this year medium" and "this year large".

As much as I wanted to love the iPhone SE, it always felt like last year's model. It wasn't a differentiated product that had a proper update cycle. A lot of people in the community were hoping for a proper update to the SE.

I also wanted to love the 5C because I actually preferred the design over the metal iPhone, but they hindered it with last year's specs. I was always hoping they would break out a proper model line from the 5C, but it died with the 6.

<comment><USER8> How often do people find in practice they have to think about specs at all? I'm typing this on an SE. It is, of course, literally last year's phone (two years) but both when I bought it and now, there's nothing except the camera that doesn't feel well above adequate (and the camera, while missing some neat low light features, is adequate) and there's a few things that feel optimal about it that simply aren't available in current models (form factor, headphone jack, and price).

I never think about specs/performance... much in the same way that I haven't thought of specs for the mid 2012 MBP I bought years ago. What are people doing with their phones that drives a sense that last year's specs aren't good enough?

<comment><USER9> Your question reminds me of a humorous quote - "I use Gentoo because I'm a speed freak - I can't stand the thought that some of my packages might not be running as fast as they could be.".

PS: The above quote is just one of the gems from [https://funroll- loops.teurasporsaat.org/](https://funroll-loops.teurasporsaat.org/) \- a humorous portal to a lost world from the 90s - 2000s (ie the gentoo subculture).

<comment><USER10> Fun page, I remember those times. Some of the quotes aren't so ridiculous, like:

>"I notice that my disk does a whole lot of thrashing when I boot up. I have a lot of stuff that gets loaded into memory every time I boot, like X11, ion2, Firefox, Eterm, Thunderbird, etc. It seems to me that putting all of the files necessary to those apps in a contiguous section on the disk and loading that into memory in one shot would be a whole lot faster. Is there a way to do this? Is it stupid?"

That's a good idea! It's kind of what Windows Prefetch feature does.

<comment> yjftsjthsd-h (And in case anybody's interested, the utility e4rat (ext4 read ahead... tool?) does exactly this)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Apple's problem is that their rate of innovation has slowed down. iPhone generates over a 100 Billion dollars in revenue. Per year. If any company has the resources to innovate it is Apple.

Apple, here are some free ideas. Some of these ideas go beyond the phone and into cell networks. If Google can do that ( [https://fi.google.com](https://fi.google.com) ) why can't Apple?

\- Improve cellular reception. We are now heavily reliant on our cell phones, yet half the time our cell phones don't work because we are inside a building or not close to a tower and so on. This needs to be fixed ASAP. Apple has the resources to do something about this. Here are some ideas: [https://www.wired.com/2014/02/steve-perlman- pcell/](https://www.wired.com/2014/02/steve-perlman-pcell/) and [https://www.artemis.com](https://www.artemis.com) Quote: "pCell delivers 5G performance to standard LTE devices"

\- Improve cell plans. Why are we paying for voice, text and data separately? The only thing we should be paying for is data. Voice and text should go over data. Apple needs to disrupt.

\- Improve user experience. Here are some really cool ideas from Microsoft: [https://www.theverge.com/2016/5/5/11595564/microsoft-3d-touc...](https://www.theverge.com/2016/5/5/11595564/microsoft-3d-touch- kinect-gestures-windows-phones)

\- Improve TV. There is a TV app on my iOS, but it doesn't seem to do anything interesting. This needs to be more like tv.youtube.com

\- Fix design. Fire Jony Ive's a$$ and hire some real designers. Apple used to be insanely great at design. Now they are a nobody. Take a look at HomePod. It is an amorphous blob. Every single Bose speaker looks better than HomePod.

\- Get rid of flat design, it is an unusable mess (see [http://uxcritique.tumblr.com/](http://uxcritique.tumblr.com/) ). You don't need to bring back leather and stitches, but you absolutely need to bring physicality back into UI design in order to improve usability.

<comment><USER12> How about some more sensors. No phone can tell me the temperature, without checking weather online. What if I want to know the room temperature. Could put humidity, atmospheric pressure sensors in there too, IR cameras, all kinds of cool stuff. Think of the software applications, right know my "smart" phone has no way of knowing if I'm outside or inside.

Then, voice mail. Why doesn't this still not work locally? There is no reason the phone shouldn't be able of answering and recording messages by itself.

<comment><USER13> > How about some more sensors. No phone can tell me the temperature

Electronics get hot when operating, and even more so when they are sitting in the pocket. Typical temp sensors are attached to 30cm long cables.

Nevertheless, I'm sure phones can do that already if you install a weather station in your house.

<comment><USER14> Someone figured out how to measure ambient temperature based on _battery temperature_ a long time ago, with high reliability!

<comment><USER15> How does it compensate for being in your pocket?

</comment></comment></comment></comment></comment><comment><USER16> Why is Apple diluting their brand? What happened to the simple product line? iPhone X this and iPhone X that is simply bad marketing. Are there product driven people in Apple anymore?

<comment><USER17> I wonder if the same thing is happening to Apple as happened to Disney - <USER2> visionary founder died, and the company slowly lost its way and became a vehicle for corporate profiteering while resting on the laurels of the visionary's pre-existing ideas.

<comment><USER18> I don't know about Apple, but you are wrong about Disney.

They may have been meandering for a while but over the last decade (and change), current leadership has made three multi-billion dollar visionary acquisitions that turned the company around and brought it back to its roots as a story teller and creator/curator of American pop culture. Financial results followed the vision not the other way around ([https://www.boxofficemojo.com/studio/](https://www.boxofficemojo.com/studio/)).

<comment><USER19> Walt Disney died in 1966. I'm assuming the parent poster meant the tougher times Disney faced between then and the start of the Disney Renaissance in the late 80s.

<comment><USER18> Parent said: "company slowly lost its way".

They didn't. They've been down, they've been up (so did Apple btw), down and up again, but as of 2019 Disney is as strong as ever (though we are in the "endgame" of this cycle).

The narrative of vision lost with founder's death, just doesn't work for Disney's history.

<comment><USER20> Recently I gave up and decided not to watch anything coming from a Disney - <USER3> pixar, no starwars movies, nothing. There's simply no point to bother, Disney brand is virtually a guarantee mark of a soulless, meaningless, corporate product with only point of generating cash.

Yes, Disney is still strong, but I believe I'm not the only person that got tired of it.

</comment></comment></comment></comment></comment></comment><comment><USER21> I bought the XS recently, but what I really wanted was the SE form factor with the XS internals (sans Face ID). Indeed, ignoring the SE market is Apple's biggest flaw.

<comment><USER22> Do you want no Face ID or are you just happy to forgo it?

<comment><USER23> My problem with Face ID is how close I have to be to it to work — when sitting in its cradle on the dashboard, I can't face-unlock.

<comment><USER24> Mine is sitting in bed, when the phone isn't able to isolate my face from the wall close behind me.

Also, recognizing me without glasses (again bed). I've got an alternate face configured, but bed also means low light, and current FaceID doesn't like thatat all.

<comment><USER25> > bed also means low light, and current FaceID doesn't like thatat all

The Face ID sensor is basically a tiny Kinect (infrared dot grid), so low light _shouldn 't_ be a problem. I have the most trouble with it in the morning when I first wake up, usually squinting at the light.

</comment></comment></comment></comment></comment><comment><USER26> Or maybe the Asian market is not riding the display 's notch hype train? They might view the notch + the high price as opposing factors (I once heard a guy say "why would you pay so much for a phone with a screen that's cut on several places?"). Food for thought.

I bought the X because I wanted an OLED screen iPhone. And I was digging the less bezels. The notch however is irritating me to this day, 14 months in. And the non-rectangular screen (with unconventional aspect ratio) has been an annoyance when watching videos or when playing games.

It's even more absurd seeing how many Android OEMs followed suit with the notch. Seriously though: 3-4mm on the top and 2mm on the bottom is alright. There were phones with slightly larger top/bottom bezels than these and they still managed to even have dual front-facing speakers as well.

We need marketing people who have common sense, not those who try and imitate their way to success.

<comment><USER27> I agree. The notch simply does not look premium at all. It's the kind of design decision you would see in lower-end phones as a compromise.

The fact that so many Android OEMs followed suit surprised me. The usual chinese iPhone clones going along with it? Sure! But so many 'reputable' companies went for it, it's just incomprehensible.

Anecdotally I just can't imagine someone preferring a notch to no notch (as long as the bezels aren't massive on the alternative). What kind of data were the Android OEMs looking at when they made that decision? Or did they not look at any data at all and simply go with "we better follow Apple on this, just in case".

<comment><USER28> Anecdotally I prefer the notch to a bezel that would take up the same amount of space.

Vast majority of the time, I don't notice the notch. I like the way the 'done' button floats in the upper real estate when modifying apps (wiggle mode).

I would prefer a phone that's a pure wall-of-glass and manages somehow to also have FaceID, and I'm pretty sure Apple would as well but can't manufacture it.

<comment><USER29> Xiaomi's new phone is something like that: [https://www.youtube.com/watch?v=7HCcP0YexTU&feature=youtu.be...](https://www.youtube.com/watch?v=7HCcP0YexTU&feature=youtu.be&t=247)

<comment><USER28> Neat, would you mind sharing the model name?

I lack the patience (and at the moment, bandwidth) for most video.

<comment><USER30> Xiaomi Mi Mix 3

It has a slide-out front camera. So when you are not using the selfie camera, there is no notch and no large bezel. (It does look like the bottom bezel is a bit larger than the top and side bezels, though)

<comment><USER28> Thanks!

The screen looks gorgeous, I personally will never again own a phone with moving parts of any sort so that's a deal-breaker for me. I'm glad there's still experimentation happening in the space, too many Androids just jump off the same bridge as Apple.

<comment><USER27> Then you might be interested in the Vivo Nex Dual Display. It has a smaller screen at the back which means that there is not need for a front camera. It comes with neat little features such as the people whose picture is being taken being able to see themselves (and pose) while someone is taking their picture:

[https://www.indiatoday.in/technology/features/story/vivo- nex...](https://www.indiatoday.in/technology/features/story/vivo-nex-dual- display-review-innovative-good-looks-and-not-so- complicated-1426203-2019-01-08)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> The only thing you can trust is that any analysis on this topic is horseshit for at least the next 3 months.

Apple headlines just attract too much attention for god journalism, unless you are versed enough on the topic to be able to spot the relevant facts through the nonsense.

</comment><comment><USER32> Personally, these last two iPhone generations were a bit overwhelming, confusing and strange. I did upgrade to the X but I honestly say, I didn't even look at this years' offering with any interest. I like the X. I'm happy with it but here's just simply not enough interesting things going on to make the new ones worth checking out. Maybe it's just these two generations -- but this constant push to raise the prices on the higher end to astronomical levels is leaving a pretty sour taste in my mouth...

The Android market on the other hand is something I couldn't resist checking out, it's like the wild wild west out there: all these various companies are constantly in the news with loads and loads of weird and quirky ideas. Now, granted, I did end up switching to iOS because I found the Android offerings inferior, I still can't help but sometimes think about trying out the newest and most interesting on that end. "The grass is always greener on the other side", as they say.

It's also the case that the killer apps are simply not there. Unlike the 2018 iPhones - I really did look at the new iPad Pro and thought to myself that I'd love one since I've been using the first gen 13" Pro ever since it came out and the redesign is cool. On second and third thoughts, though I had to admit to myself that even with the 120hz panel, I wouldn't really gain much in practical terms. And the entry price, which in my country is almost $500 more than the first generation's, really doesn't justify something that's that much of a hard sell..

Now, granted, this is all just my personal opinion and might even change this September if Apple has some surprise queued up for us, who knows?

For now, though, I can't help but feel like that $1500-$2000 for a new tablet and smartphone every year or two is better served as part of my savings account.

<comment><USER33> The price increase and subsequent quality increase of the X made the purchase make sense given that it would be a longer-lasting phone.. on the 3-4 year timeframe rather than a 1-2 year timeframe. If they didn't refresh the X (kept the name) and just released the larger and cheaper versions, it would have made sense. Given the diminishing returns and higher prices, they should put more time in to make sure they have breakthrough releases. Even Jobs did this with the tick-tock of the 4/4S. The naming scheme is all messed up

<comment><USER32> You're probably right!

I agree with the long term argument, I still love my X and it was my reasoning behind paying the price. I do appreciate the fact that Apple still pays attention to things that are important to users like me, like the whole privacy aspect, keeping as much data on-device as possible. It's great and I try to keep that in perspective. It's hard to deny that for the last few years, they've been making gaffe after gaffe after gaffe. Delayed launches, increased prices, good products being discontinued instead of updated, announced products not making an appearance. It would've been unacceptable before Cook, now it seems like it's just part of how they do business nowadays.

</comment></comment></comment><comment><USER34> Only Apple can name their phone "excess" and price it at $1k+ and still nobody catches on. For those able to count, that's _five times_ what a decent Android Pie handset costs (Nokia 6.1, $200) for nowhere near 5x difference in anything. In fact the Nokia has a phone jack and standard USB-C power. I've been iPhone user since iPhone 1, and I currently have iPhone 8, but even I am contemplating a switch.

<comment><USER35> This! I've been an iPhone user since the first version too and am contemplating a switch simply because the price to be in the ecosystem is more than I'm willing to pay. I'm on an iPhone 7 still and when this gives up, I'm going to jump ship

<comment><USER34> Price _per se_ would not be a concern if competition wasn't there. I just bought an iPad Pro this year. Nothing Android based even comes close. But unfortunately for Apple (and fortunately for us) there is stiff competition in the smartphone space. And Apple will either have to innovate and/or cut prices. Incremental upgrades at triple digit prices aren't going to work.

<comment><USER36> As a recent XS buyer (upgrade from iPhone 7) my strategy is just going to be waiting 2 or more upgrade cycles before buying again. I still value the ecosystem and trust Apple with my data more than anyone else, especially in the case of iMessage.

I don't think I'll miss anything serious from skipping upgrade cycles. I'm not much of a camera user and Face ID is meh to me so From iPhone 6 to XS I've barely seen any improvements I care about other than water resistance which was a 6 -> 7 upgrade.

</comment></comment></comment></comment><comment><USER37> I recently got a Umidigi A3 Pro [1] as my main phone. It's an iPhone X clone for $85.

Is it as good? No. But it's nearly as good, and has the flexibility of Android (tethering when the carrier doesn't allow it, side loading 'dodgy' apps, multi-sim so I can always get coverage even indoors, hackable headphone volume, call recording without hassle).

Overall, I'd value the iPhone and fake iPhone the same for my uses. And that's a problem for Apple when the real one is subpar in many respects and costs 15x as much.

[1]: [https://s.click.aliexpress.com/e/c6vyrTdJ](https://s.click.aliexpress.com/e/c6vyrTdJ)

<comment><USER38> Honestly I'm shocked that my phone could disallow me tethering just because some third-party operator told him so, without any technical reasons. I paid my money to Apple, they got their salary from my money, yet they don't respect my freedom. The same with recording the calls. It's an extremely basic feature which is present in almost any Android phone AFAIK. That's what I don't like about iPhones, they have no respect for their owner. It's like a car with built-in limiter to 140 KM/h just because there are no roads where I can drive faster. It's my business, my liability.

<comment><USER39> just a quick note regarding speed limiter on cars (which most cars have), this is typically a safety feature to prevent you from exceeding the limit of the factory tires (imagine your tires blowing out at 160mph). Many performance cars can be reprogrammed to remove the speed limit (just do it once you've installed higher performance tires!)

[https://www.tirerack.com/tires/tiretech/techpage.jsp?techid=...](https://www.tirerack.com/tires/tiretech/techpage.jsp?techid=35)

</comment></comment></comment><comment><USER40> My wife and I bought an XS (for her) and XR (for me). We both had Nexus 6p and they were at end of life and wanted to get her a nicer phone for Christmas.

Well, after playing with both the XR takes better photos, generally. In addition, the XR gets probably 30% more life on a single charge. Nothing else on the XS is really much better (outside of a couple nice to haves). So now she has the XR and I have the XS.

ID recommend and XR over the XS for everyone.

<comment><USER41> Would have bought XR if it was smaller. Currently using 7 and even XR is just too large to be called a phone anymore. XS is a monstrosity from my point of view.

<comment><USER42> Indeed. I upgraded from a 6S, and was going to order a XR, when I finally, in the last minute, actually measured the dimentsions out in comparison to my current phone. Then I basically said WTF and waited for some deal on the XS and bought that. Not really happy, though, as all friends who did the same aren't: it is stilltoo big and too expensive for what it does - and we are in Europe, so the prices are even more ridiculous...

</comment></comment></comment><comment><USER43> I don't think the Chinese market slowing down is news for anyone who was paying attention last year.

>The global smartphone market has suffered a drop of 6 percent in overall sale numbers, according to a report on the third quarter of 2018 from the International Data Corporation (IDC).

Similar to the drop in smartphone sales in the first quarter of the year, the IDC points at a slowdown in the Chinese market as being one of the primary factors for the global slump.

[https://www.digitaltrends.com/mobile/samsung-slumps-in- smart...](https://www.digitaltrends.com/mobile/samsung-slumps-in-smartphone- sales-numbers/)

This has already impacted Samsung's smartphone sales much more strongly last quarter.

>Operating profit in Samsung's smartphone division dropped 33pc from the same quarter last year to 2.2 tn won.

[https://www.telegraph.co.uk/technology/2018/10/31/samsung- re...](https://www.telegraph.co.uk/technology/2018/10/31/samsung-reports- record-profit-despite-smartphone-sales-slump/)

<comment><USER44> The XR this year in China is also having exactly the same problem the 6s had when it came out. The 6 (with it's big screen) and X were so attractive that many people upgraded a year early. That means there's a smaller potential market for the XR, just as there was for the 6s. This is disproportionately true in China where distinctive looks are more important than in other markets. Add that in to the economic picture and it's a bit of a perfect storm for Apple. The XR has done fine in other markets.

</comment></comment><comment><USER30> Can someone explain why Apple needs to make the iPhone more expensive when the Dollar rises compared to the Yuan? The iPhone is produced in China, most of the components are produced in Asia, etc. Their fixed costs per phone should drop when the dollar is strong. Sure, their margins might take a hit, but raising prices isn't going to help them sell phones...

Similarly, why doesn't the phone price drop in the US?

The only explanation I have would be that contracts with suppliers are all in USD, which would mean that the suppliers are the ones profiting from the strong dollar. Is that's what is happening?

<comment><USER45> Labour might be priced in CNY, but most of the expensive bits in the BOM are from non-Chinese firms like Qualcomm, Samsung, and others and would be in USD denominated contracts most likely.

<comment><USER46> Apple almost certainly doesn't hire the Chinese laborers directly. They do so indirectly through the likes of Foxconn.

And their Foxconn contracts are almost certainly dollar denominated. If anyone benefits from the strengthening dollar, it's Foxconn, who likely gets the same dollars per iPhone, but those dollars get them more Yuan than they did before. They still pay their employees the same number of Yuan, which means they have more left over for themselves.

As a result, Apple's iPhone costs remain the same in dollars, so they need to sell it at the same dollar price to maintain their margins, but that means the iPhone is more expensive for people in China buying in Yuan, or people in India buying in Rupees, or people in Europe buying in Euros, therefore reducing sales.

</comment></comment></comment><comment><USER47> That video at the top of the page is absolutely god awful. I acknowledge that this is a low-quality comment but that cannot go unmentioned. I would believe that the first ten seconds are satirical.

<comment><USER48> My God, you kept listening for TEN seconds?!? :)

</comment></comment><comment><USER49> Complete article: [https://outline.com/KuHx2U](https://outline.com/KuHx2U)

</comment><comment><USER50> [https://outline.com/KuHx2U](https://outline.com/KuHx2U)

</comment><comment><USER51> I'm only a sample of 1, but I loved my original iPhone X - had to replace it due to taking on a new job and they haven't approved that device yet, so I'm back to an iPhone 8 unfortunately.

To me although the screen size was nice the X is just a bit big, and my old 6 Plus was relatively huge when it came to fitting inside my pocket.

I'd much rather an iPhone X no larger than my current iPhone 8 (all screen though), with all the bells and whistles that the X comes with such as face ID. I'd still pay good money for it if it was approved by corporate security.

So Apple if you are listening, just make a smaller X about the same width/height of my current 8 and I'd be a happy camper!

<comment><USER52> I'm in the smaller boat too.

I'd love rsim support as well, as long as we're wishing...

</comment></comment><comment><USER53> I must confess I don't know the difference between the iPhone X, XR, XS, XS Max. It all seems very confused and stinks of marketing getting their claws into it. It was simple when they were numbered sequentially. Now I wonder if there will ever be an iPhone 11 as that suggests there can't be a premium on the iPhone X* as people will poo-poo that.

<comment><USER28> Three of these are easy to understand, especially if you know anything at all about how Apple has been naming iPhones since the beginning of the product line.

The fourth is the XR. Which is, as TFA indicates, a head-scratcher of a product.

<comment><USER54> This is purely speculation but I wonder if the XR only exists because of fear that they wouldn't be able to scale up the OLED supply chain enough to satiate total demand for the new model iPhone (and incidentally make a lower cost phone too). Otherwise I too agree, why offer it?

</comment></comment></comment><comment><USER55> The XR and XS offering confused me for a long time. Even right now I still don't fully understand the difference.

It is surprising that XR didn't do as well as XS relatively speaking. Then again I feel a lot of people who are extremely loyal to Apple wouldn't hesitate to get the most expensive offering anyways.

</comment><comment><USER56> Yeah, let's see how this goes with the quarterly results.

Historically 90% of pundit/press claims have been proven to be utter BS. If I had a penny for each "Apple is doomed" and "iPhone model XXX not selling" I would have, well, 10s of dollars...

<comment><USER56> ...and TFA doesn't seem to fare better either:

[https://appleinsider.com/articles/19/01/08/the-wsj- calling-t...](https://appleinsider.com/articles/19/01/08/the-wsj-calling-the- iphone-xr-a-failure-that-cant-sell-is-ludicrously-mistaken)

</comment></comment><comment><USER57> Consumers should demand cheaper smartphones with adequate performance -- just like cars, you have toyota corollas and honda civics for the average joe and then you have lexus and cadillacs. Similarly, a cheap, reliable phone for masses and the rich folks can go for their iPhones and Samsung Galaxies.

It seems when it comes to smartphones, consumers are also to blame for unnecessarily spending more then their actual affordability and this is causing lack of cheap+reliable options for the consumer. Almost all smartphone manufacturers are focusing on producing high-end, expensive devices for the wanna be socialites (both men and women).

<comment><USER58> I would partially agree with you except they made the SE and people didn't vote with their dollars. It was only 10% of iPhone sales. I agree that it would be nice to have more lower and mid range options but most people seem to want the new shiny.

<comment><USER15> Where did you get 10% from?

According to TechCrunch... In the UK it was 10% of total smartphone sales, 25% of Apple's. In the USA it was 5% of total smartphone sales and 16% of Apple's.

[https://techcrunch.com/2016/08/10/the-iphone-se-is- selling-j...](https://techcrunch.com/2016/08/10/the-iphone-se-is-selling-just- as-apple-planned-in-the-u-s-and-europe/)

</comment></comment></comment><comment><USER59> Maybe charging $1200 for a phone that barely has improvements over the 6s, yet contains several major regressions, was a bad strategy.

</comment><comment><USER60> My partner has an XR and loves it. Granted she upgraded from a 5, so anything would've been an upgrade, but she likes the button-less X design and excellent camera but had no interest in the super high-end XS.

</comment><comment><USER61> The iPhone XR is failing because of Apple's arrogance. They shoved in a 720p display into a smartphone in 2018. They even dismissed concerns about it[1]. The other reason is there are too many models in their lineup in a desperate attempt to capture market share - something Steve jobs was against.

The desirability is not there as it used to be, since they're now almost pushed into a price war with other makers in the segments who were already well established before Apple.

Finally, there are simply too many issues surrounding iOS. Either the wifi stops working, or the phone is made to perform too slow in the pretext of battery throttling or something else is compromised. This is unacceptable from a company that reached $1 Tr. I am not kidding you when I tell you guys I know sweatshops that can do better quality code than Apple's iOS. Get your shit together, Apple!

[1] [https://www.trustedreviews.com/news/iphone-xr-screen- issues-...](https://www.trustedreviews.com/news/iphone-xr-screen- issues-3609709)

</comment><comment><USER62> The Wife has a iPhone each year and for her needs wanted a bigger screen than the standard 8 should would of happily had a iPhone 8 plus as her new phone but when the XR came along it worked out as more screen than the 8 plus. But the difference between the XR and X's models was the extra memory and Apple service plan (roughly). The notch she has never mentioned and I have noticed all new adverts with a phone screen in them have a notch in them, I just don't think the regular user notices them that much.

While she noticed a slight speed difference from the 8. I think it was the improved battery life she liked more and hearing the XR seems to be better than the XS further justify's the choice.

</comment><comment><USER63> It's too big to use with one hand.

</comment><comment><USER64> I would argue that the change that happened was the realistic rise in price based on:

1) In 2017, the iPhone 8 was the 'standard', and the iPhone X was the 'premium above', adding new features for those willing to pay the extra 2) In 2018, the iPhone XS is effectively the standard, because the XR has the impression of being a hobbled version of the XS

Since noone would rather buy the 'hobbled' one, the base price jumps to $1000

</comment><comment><USER65> Upgrade to XR recently from 6 and I truly love it.

Opted for it instead of XS since I read that it has the longest battery life compared to the other X* offerings.

</comment><comment><USER66> Remember Gateway computer stores in the 90s?

they behaved as if people were replacing their computers every year.

We are simply seeing that pattern again. there is simply no need to upgrade my iphone8, it works well, it does all that I need. I hope to have it for several years.

</comment><comment><USER67> I still don't understand why people think of these new phones as upgrades.

</comment><comment><USER68> Seems like Apple has forgotten who their customers are... instead they are going for people who worry about specs and technology etc.... this is not kind of apple i have viewed in the past.

</comment><comment><USER69> Does everyone here who's read this have a subscription? Or is there one without a paywall?

<comment><USER70> Put outline.com prefix in front of the article's URL.

</comment></comment><comment><USER71> I still don't understand why apple won't support FM Radio on their phones? Are they so scared of Apple Music subscriptions ?

Or is there any specific reason ?

</comment><comment><USER72> Everyone I know who owns an iPhone XR only got it because they're in some upgrade plan that gives them a new phone every year or two. Nobody actually wants it. There's die-hards who needs the XS because it's the latest and greatest, while those who want something a little cheaper are buying an 8 Plus or original X. I really feel like the XR is a repeat of the original iPhone 7 in that it's a phone with no target audience.

<comment><USER73> > Everyone I know

In the grand scheme of things, and in the overall market, everyone you know still comes out to a rounding error. Don't get too caught up in anecdata.

> I really feel like the XR is a repeat of the original iPhone 7 in that it's > a phone with no target audience

You're right, there. If people want a high-end iPhone, they'd get the XS. If they want a cheaper phone in the X form factor, they'd get an X. If they don't want the X form factor yet, they'd get an 8. The XR is just… there.

And yet, it's a great phone by itself. Same processor as the XS, meaning a great performance leap over the X, not to mention a vastly improved camera. But it's hard to think of it as premium when it's lacking the OLED screen and Force Touch. It feels so incomplete, like an XS wannabe than its own thing.

<comment><USER74> I always thought force touch was kind of a dumb feature so I'm happy to do without it. And the XR screen looks great IMO. I'll happily take the extra battery life over a barely perceptibly better screen.

The main thing I'd change about the XR is I'd make it a bit smaller. Other than that it's a great phone.

<comment><USER73> Re: Force Touch. It is a bit of a dumb feature, but it's been a feature for all the new iPhones (bar the SE) for a few generations; plus, when you get used to it, it's bizarre when it's gone. That it's missing feels sloppy and creates fragmentation in the product lineup that didn't need to be there.

</comment></comment></comment></comment><comment><USER75> Bought and returned iPhone XS...

\- It lacks a home button

\- It lacks Touch ID which unlocks your phone instantly before meeting your face (need this when sitting idle in traffic). Face ID takes longer.. that's bad UX and possibly dangerous UX which probably has caused some dummies (many out there) to have accidents.

\- It's too big ... i can not text with one hand as Ive done with my 8 and all models before.

<comment><USER30> > need this when sitting idle in traffic

> has caused some dummies to have accidents

I love the lack of self-awareness...

<comment><USER75> I'm aware I'm the dummy at times when stuck in traffic.

Though how many millions of dummies are there unfortunately?</comment></comment></comment>


Statically Recompiling NES Games into Native Executables with LLVM and Go - <AUTHOR> http://andrewkelley.me/post/jamulator.html <comment><USER2> This is amazing. Also, this is the Dark Magic of programming that I don't think I'll 100% grok in 20 years, but its good to try!

edit: now that I think of it, I really need to keep expanding my knowledge. I'm going to go through this post in my terminal and try to at least make the stuff work, so I can start understanding this process. I've been trying to learn Go and C better anyway. Thanks for providing a ground to learn more.

<comment><USER3> I've looked at this sort of stuff as utter voodoo for a long time. Then I ran into this book[1], and everything just kind of 'clicked' into place in my head. I can't recommend this book often enough.

[1]: [http://www.nand2tetris.org/book.php](http://www.nand2tetris.org/book.php)

In short: It gives you a hands-on approach in designing and building your own computer and programming language, to end up writing and running your own games on the system.

        * It starts with simple boolean algebra to explain and create logic gates (NAND, AND, OR, XOR, etc).
        * Use these to build an ALU, memory banks and eventually a full CPU.
        * Design an assembly language and assembler for this system.
        * Use the assembler to create a higher level OOP language, compiler and code base.
        * Use this language to write a rudimentary operating system.
        * Write a game to run on the OS.

All using very clear and simple English and a very comprehensive emulation system (written in Java) by the authors.

Edit: For some reason, this site has started showing malware warnings in chrome and firefox since today. Even though Google's advisory[1] makes no mention of any actual malware being detected. I've visited this site safely for a long time. Still, if you don't trust it, then wait until Google clears up the issue. I've already contacted one of the authors about it.

[1]: [http://safebrowsing.clients.google.com/safebrowsing/diagnost...](http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=http%3A%2F%2Fwww.nand2tetris.org%2Fbook.php&client=chromium&hl=en- GB)

<comment><USER4> Might be a good candidate to port to asm.js or even just javascript, there are platforms without Java where this could be a valuable teaching tool.

<comment><USER5> Or, better yet, just port the Java runtime to Javascript...

<comment><USER6> [http://int3.github.io/doppio/about.html](http://int3.github.io/doppio/about.html)

[https://github.com/int3/doppio](https://github.com/int3/doppio)

</comment></comment></comment></comment></comment><comment><USER7> Just a quick note about the disassembly challenge he faced (indirect references), having gone through this before: you can get amazingly good results by cheating a bit. That is to say, rather than assuming you actually have to properly execute through the code path, you can get very close by roughly tracking register assignments when making your initial pass through a block of code. (Even better, if you can track potential ranges of values with later calls into a given block. Some of this depends on how you've implemented your disassembler, though.)

I ended up doing this with a SuperH disassembler (with SH2, due to its two- byte opcode layout, indirect addressing is the order of the day), and by doing basic register assignment tracking and adding a few crude heuristics, I was able to get very usable results. No, the end result won't be "pretty"; you'll be moderately embarrassed to show it off., but it will work. :)

(Heuristics: one structure that I had to manually handle were compiler- generated jump tables; thankfully, for my project, I'd had a bit of help from the compiler that was used, and there were distinct signatures I could key off of.)

If you're even remotely interested in the disassembly aspect of this, I'd recommend learning a bit about a piece of software called IDA Pro: [https://www.hex-rays.com/products/ida&#x2F](https://www.hex- rays.com/products/ida&#x2F); As horrible as the UI of it is, there is simply nothing better on the market for reverse engineering analysis.

<comment><USER8> Second this. There are a _lot_ of "signatures" in most asm. Programmers for 6502 and derivatives might be a nasty bunch of sadists that love to do weird stuff to save cycles, but even there there are lots and lots of common patterns that often "happened" just because people learned from the same sources, or because it made sense, or because conventions appeared.

I never had a NES, but I had a C64, and the 6502 code wrote there seemed nasty to translate on the surface, with lots and lots of self-modification, for example. But in the end most of the self modification was specific looping patterns because the 6502 can only index 256 values, and so many loops involved writing addresses into the looping code, iterate 256 times, increase the most significant byte directly in the code and see if you'd reached the end, and jump back to iterate 256 times.

Most of this "nasty" stuff is relatively well known by now and much of it is relatively regular and easy to detect.

</comment></comment><comment><USER9> This is one of the best technical articles I've seen in a long long time congratulations. I won't go and pretend I understand what is really going on but the writing style is excellent, to the point and the general flow and formatting are a pleasure.

Props dude.

<comment><USER10> I agree. Really well laid out, easy to understand for lay person without using too much technical jargon. I enjoyed the long code pastes; rather than a github repo link.

</comment></comment><comment><USER11> Somewhat off-topic, but to defend gcc against clang, here is a modern version of gcc with the correct warning option:

        $ gcc-4.8 -std=gnu99 -Wall -o test test.c
        test.c: In function 'main':
        test.c:6:5: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
             if (foo & 0x80 == 0x80) {
             ^

gcc 4.9 will have colored diagnostics, too.

Cool project, though.

<comment><USER12> This would be a great way, on a compiler or project that doesn't have this warning enabled, to conceal a deliberate bug and have it appear to be accidental.

<comment><USER13> Hey, check out the Underhanded C Contest.

[http://underhanded.xcott.com](http://underhanded.xcott.com)

</comment></comment></comment><comment><USER14> Modern PS2 emulators - which is to say, pcsx2 - uses dynamic recompilation to execute games at useful speed. Static recompilation might not be a useful technique, but did you consider a dynamic version? What caveats are there?

<comment><USER15> About halfway through the project I realized that static recompilation is pointless and that dynamic is the way to go. I felt like it was worthwhile to at least get to the "able to play super mario 1" checkpoint before quitting. I did not do any investigation into dynamic recompilation other than pondering about it and concluding that it is more practical than static.

<comment><USER16> Why is static pointless and why is dynamic better? If emulating a newer game console, couldn't you get better performance by running a statically recompiled game, since it doesn't have to do the extra work at runtime? Or better yet, couldn't you cross-recompile a game to run it on a platform that couldn't normally handle emulation of the target platform?

<comment><USER8> Dynamic lets you do lots of nasty tricks, and also lets you detect and work around various nasty tricks at runtime (worst case by falling back to emulation). Consider that old games often would use self-modifying code, for example. Reliably statically detecting self-modifying code can be extremely hard even when it's not intentionally obfuscated. But at runtime it is "easy": Write protect all the code pages, and trap page-faults, and either modify the offending code, or fall back to emulation.

In general, I think dynamic approaches are ideal when you're dealing with a "hostile" environment where the software you're translating was written with no expectation that it would be translated, and possibly (like with old games) in a situation where the programmer may have tried to really maximally exploit the hardware, because it means failure to statically determine that something weird is going on can often be counteracted much simpler by detecting attempts at violating your assumptions.

You can do hybrid approaches, and statically make a "best effort" and include similar methods to trap stuff that breaks your assumptions and fall back to JIT or emulation, but if you do that then there's a tradeoff between how much dynamic stuff you need to be able to do before it's easier to just do everything dynamically from the start.

The performance thing is not so easy to ascertain. JIT'ing code takes a bit of time, but not much compared to the expected overall time the program will be run afterwards. Static compilation can spend more time doing optimisations, but JIT's at least in theory have more information to work with (can detect the specific processor version, and use specialised instructions or alter instruction selection, for example, or could at least in theory even do tricks like re-arranging data to get better cache behavior (I have no idea if any existing JITs actually _do_ that) based on profiling access patterns for the current run.

<comment><USER16> Thanks for the thorough response. I really appreciate it.

</comment></comment></comment></comment></comment><comment><USER17> This is one excellent read! Thanks to the author for writing this down. Not that i'm not interested in the NSA, but this is a welcome diversion. And something I wanted to play with myself for a long time.

<comment><USER15> Thank you. I do not write often, so this was a challenge for me. Constructive criticism welcome.

<comment><USER18> Well you certainly rose to the occasion. I look forward to leisurely reading this in detail.

Before I looked at the article I immediately wondered how you were going to handle self-modifying code (running on the internal RAM of course). I guess you didn't encounter that situation?

<comment><USER15> That situation is covered in this section: [http://andrewkelley.me/post/jamulator.html#dirty-assembly- tr...](http://andrewkelley.me/post/jamulator.html#dirty-assembly-tricks)

Basically I embed an interpreter runtime and use it only when necessary, such as in the case when the program jumps to RAM.

Good point though. I should specifically mention self-modifying code.

Note that with NES games, self modifying code is uncommon, because programs are 32 KB ROM, and you only have 2KB RAM. So you'd have to first copy your subroutine from ROM to RAM, and then jump to it. And then you have that much less RAM to work with.

However, some of the emulator test ROMs[1] people have made use this technique to test every instruction.

[1]: [http://wiki.nesdev.com/w/index.php/Emulator_tests](http://wiki.nesdev.com/w/index.php/Emulator_tests)

</comment></comment></comment></comment><comment><USER19> This is interesting. If this project can output LLVM byte code, then you could also codegen to javascript with emscripten and make a web based version of a NES game.

<comment><USER15> That thought occurred to me as well, although I did not actually try it.

<comment><USER2> Seems like a good followup post. I'd read that.

I mean essentially it would make NES games running natively in the browser with no emulator right?

<comment><USER15> It's not quite as sunshine and rainbows as that. For one, I had to embed an interpreter runtime in the generated code to handle some dirty assembly tricks that programmers can do. Further, the Picture Processing Unit and Audio Processing Unit must be emulated. Even worse, there are some things that fool the disassembler that many games do. And finally, this project never even attempted to support mappers, which means that there are only about 8 or 9 notable games that this could even potentially support.

As is, it supports Super Mario Bros. 1 only.

<comment><USER20> There was a NES emulator for the Game Boy Advance that performed with a surprising level of accuracy at full frame rate. I guess the CPU emulator was a simple state machine, but the interesting thing in this context is how it did the graphics and sound. Having a pretty advanced "PPU" of its own, with the same basic types of features (sprites, tile indexing background layers), it translated the PPU register writes (with appropriate scaling, I guess) to native register writes. I'm not sure how things like collision interrupts were handled, but presumably the GBA has similar functionality. For a javascript emulator or static recompilation, similar methods could be used to set up a bunch of shaders dealing with the basic functionality of the PPU (sprites, tile layers etc). Certainly less accurate and probably missing a bunch of corner cases, but it would definitely be the fastest approach to dealing with graphics emulation.

</comment></comment></comment></comment></comment><comment><USER21> ... while it's not really useful for the NES, which is so old that emulating it does not strain even the crudest modern processor, I'd be excited to see this technique applied to newer consoles for lightweight mobile processors.

<comment><USER22> I think it might actually work better for more modern hardware. Less handcrafted ASM tricks, much more regular (compiler generated) machine code. And of course no self-modifying code that would be extremely difficult to recompile correctly.

Modern hardware (GPU, sound cards,...) is also very similar to what you find on a PC so it would be more straightforward to port all this code. No messing around with the framebuffer mid-scanline to create a cool effect, no quirky special purpose hardware for very specific tasks.

<comment><USER23> The other interesting thing about older hardware is that each cart could embed special hardware that the NES could take advantage of. To play those games: that extra hardware has to be emulated as well.

So far as I know: this is unheard of with current gen consoles.

The most recent example I can think of is for a handheld console. The Pokemon Walker that was bundled with the newer Pokemon games for the Nintendo DS; which I believe has the IR hardware embedded in the cart itself.

So in addition to worrying about rather interesting use of the stock hardware, you also have to consider interesting use of _secondary_ hardware.

\---

The latest batch of consoles [Xbox One, PS4] look to be x86 PCs with high- bandwidth memory; if that's the case, I'm hoping PC ports are more common, and perhaps we'll even see a virtualization based approach to running next gen games on standard PC hardware.

<comment><USER24> I don't know how common add-ons were in the NES era, but they were very common for the SNES (which was very similar to the NES power wise).

Games stopped embedding hardware when they went to discs. There is no way to put a parallel processor into a DVD.

<comment><USER23> Well, modern consoles _could_ still be extensible; but their hardware is already so general purpose that there's not much point.

Best you could do w/ current gen technolgy is bundle a dongle w/ the game, where the user plugs in some kind of co-processor through USB.

So far I haven't really seen anything like that -- the only USB dongles I've seen bundled w/ games are for games like RockBand and they're just RF receivers.

Aside from bandwidth concerns, and the poor sales of previous attempts (for e.g the SEGA's whole 32x/CD addon), there's nothing preventing a disc-based from having an external co-processor.

</comment></comment></comment></comment></comment><comment><USER25> This is one of the best articles I've seen linked here in a long time. oP covers so much stuff but simplifies exactly where needed so everything stays understandable and there are no gaps (the "how to paint an owl" syndrome).

Thank you so much for writing and posting this. You made my day.

</comment><comment><USER26> I seem to remember someone doing this for the original xbox and getting up to the halo "start game" screen. That was probably easier due to it being roughly the same architecture. This is something else quite different and really neat.

</comment><comment><USER27> I won't even pretend that I understand half of this but from a quick browse this looks pretty interesting.

It seems very well written, too.

Filed away into my magic "ZOMG INTERESTING PROJECT IDEA" folder :D

<comment><USER28> Oh, man! I know that folder! I don't have one, but 20. I've switched from bookmarks to actually writing it down on a piece of physical paper. And not just the url. I write down a small explanation for my future self. I haven't been bored in months :D

</comment></comment><comment><USER29> Very interesting article indeed. Some time ago I made something similar for GameBoy games and ran into the same set of challenges (and ended up using similar techniques). The ROM is decompiled and translated into C code, which is then compiled and linked with runtime libraries. Jump tables and indirect jumps often need some manual fixing. I went up to the point where I can convert some simple games (without memory mappers) into binaries running on iOS and X. I did not have the time to document the tools but if anyone is interested to continue that work just let me know.

I guess one of the advantages of static recompilation is that you can port old games to new platforms if you hold the copyright of the game itself, but without running into issues with the manufacturer of the console (Nintendo)--but I might be wrong. You could also conceivably improve the game more easily during conversion (e.g., incorporate higher-resolution graphics). Finally, you could potentially have the resulting code distributed via app stores that do not allow general-purpose emulators.

</comment><comment><USER30> This article is a joy. What a wonderfully written and through explanation of the space. I live for this stuff.

</comment><comment><USER31> There is some research on this [http://www.pagetable.com/docs/libcpu/26C3-libcpu.pdf](http://www.pagetable.com/docs/libcpu/26C3-libcpu.pdf)

It's a very interesting topic. It may be our best chance at preserving software.

<comment><AUTHOR> It's really unfortunate that libcpu didn't take off. Last I checked, they got nowhere with no contributors, and now their site 503s. It was an interesting project.

<comment><USER31> I think it's more than that. It is not yet clear that this approach can work in the general case without emulation: the halting problem may be in the way.

<comment><USER15> Correct. If you think about it, the program could prompt the user for the address to jump to, and then the program could go there. In fact, that's exactly what some games (accidentally) do: [http://tasvideos.org/2341M.html](http://tasvideos.org/2341M.html)

It is impossible to solve this statically. This is why dynamic recompilation is more practical.

<comment><USER5> Thanks for that link; That hack (and the accompanying video) has just become perhaps my favorite thing, ever. Also, it led me to this similarly incredible hack as well:

[http://www.youtube.com/watch?v=D3EvpRHL_vk](http://www.youtube.com/watch?v=D3EvpRHL_vk)

</comment></comment></comment></comment></comment><comment><USER32> Please forgive me for the bikeshedding, but I have a quick question as a C novice: Is the equality check in the following necessary?

        if (foo & 0x80 == 0x80) {

I thought if you're checking a bit simply anding would be enough (since everything else would be zeros). In other words, could we just use

        if (foo & 0x80) {

If so, then it seems like this would be the preferred form to avoid the precedence issue presented in the article.

<comment><USER33> I am seeing that as basically defensive coding. Similar to how you may do this:

      switch (mode) {
          case FOO: ... break;
          case BAR: ... break;
      }

Do you need the very last break? Technically no, but including it so that you don't forget it when you need it later can be a good idea.

(Also, I think explicitly using comparison operators in conditionals _might_ be the idiomatic thing to do in Go. Someone correct me here if I'm wrong about that.)

<comment><USER32> The example was using C, not Go.

<comment><USER33> Aye, though the same code later appears in Go.

</comment></comment></comment></comment><comment><USER34> I agree; this is quite amazing work! I've been meaning to do something like this; perhaps generate a native executable or something similar.

</comment><comment><USER35> Interesting stuff, and I like the writing style.

</comment><comment><USER36> I had a similar idea to this that I never really put in practice which was doing some sort of static recompilation but to higher level code in order to make open source versions of some NES games that could be used by other people to do the same. Accuracy would not be a concern as big as a pure emulation project.

I never got past the reading phase.

</comment><comment><USER37> I've been meaning to port some classic games over and utilize better input methods for a while. It would be fun to be able to load old GB games on my Android phone and tap the menus instead of navigating them with the DPad. Thanks for this, I was looking for something to do with my Friday night!

</comment><comment><USER38> This was fantastic, thank you.

Static recompilation seemed like an obvious solution to emulating games in theory, but it was fascinating to see just what it would take. Also loved to read about the clever tricks from 30 years ago and how we can or can't deal with them.

</comment><comment><USER39> Someone should recompile ps2 games to x86.

</comment><comment> 0xe2-0x9a-0x9b The plans in the Conclusion section look interesting.

</comment><comment><USER40> What is amazing here is not the techy stuff, but productivity and clear understanding of concepts. Of course, such shape (of mind) comes from years of daily practice. That's why I know I will never write anything good - I didn't spend enough time practicing. Practice leads to perfection (not reading HN).

And look, the guy is not using any IDE or proprietary tools - just a terminal window and command line (what a horror!) tools. Looks like they are good enough..)

All that 9-to-5 Java coders should at least commit suicide.) More seriously - this is very clear illustration for startup founders of what a huge gap lies between mediocre and a top performer.

Convincing a top performer(s) to work for you is the real secret of a successful startup. Even pg (god forbid!) could be not so successful without rtm.))

<comment><USER41> It depends on what you are used to. I started programming in the 1980s and the first editor I used was pretty much like EDLIN ([http://en.wikipedia.org/wiki/Edlin)---think](http://en.wikipedia.org/wiki/Edlin\)---think) of an unholy cross between the Unix commands cat and vi (line based and modal).

And, except for code completion, there isn't anything an IDE can do that can't be done via the command line (just not as conveniently). Then again, I don't program in Java.

<comment><USER40> vi is a small miracle of software engineering.</comment></comment></comment>


TPM Chipsets Generate Insecure RSA Keys — Multiple Vendors Affected - <AUTHOR> https://www.bleepingcomputer.com/news/security/tpm-chipsets-generate-insecure-rsa-keys-multiple-vendors-affected/ <comment><USER2> Related subsmission I posted four days ago (very little actual information in the discussion but the linked article does contain some update/patch information from Fujitsu, HP, Microsoft, Lenovo): [https://news.ycombinator.com/item?id=15456760](https://news.ycombinator.com/item?id=15456760)</comment>


Pure: a modern functional programming language based on term rewriting - <AUTHOR> https://agraef.github.io/pure-lang/ <comment><USER2> This is pretty neat! [https://github.com/agraef/pure- lang/wiki/Rewriting#construct...](https://github.com/agraef/pure- lang/wiki/Rewriting#constructor-equations):

> As a bonus, you also get "constructors with equations" for free. E.g., > suppose that we want lists to automagically stay sorted and eliminate > duplicates. In Pure we can do this by simply adding the following equations > for the : constructor:

      > x:y:xs = y:x:xs if x>y; x:y:xs = x:xs if x==y;
      > [13,7,9,7,1]+[1,9,7,5];
      [1,5,7,9,13]

(The point about this global override is addressed later. The rewriting can be lexically scoped.)

<comment><USER3> Isn't this basically bubble sort?

<comment><USER4> If you build such a list by consing new elements to the front, then it's insertion sort. If you build the list from a balanced binary tree it's merge sort.

\---

One important difference between this and quotient-inductive types is that there are examples of "types with equations" which cannot be expressed as a rewriting system, e.g., free groups.

It's a still a cool feature to have this built into the language.

<comment><USER5> > If you build the list from a balanced binary tree it's merge sort.

But in the example, the list is built by adding two lists. This means that in the example, it uses insertion sort which like bubble sort is O(n^2).

<comment><USER4> You're right and looking at the example again I was completely wrong (shouldn't post without coffee). You can implement merging by writing append (+) in the correct way. As written, the code will always insert a new element every time there is a cons (:).

One way of getting better performance "by default" is to construct lists with constructors for empty list, singletons and append and then adding equations to ensure that the resulting binary tree is balanced.

</comment></comment></comment></comment></comment><comment><USER6> I don't think I've come across term-rewriting before. There's an example in their wiki page for inserting into a BST:

      > nonfix nil;
      > insert nil y         = bin y nil nil;
      > insert (bin x L R) y = bin x (insert L y) R if y<x;
      >                      = bin x L (insert R y) otherwise;
      > foldl insert nil [7,3,9,18];
      bin 7 (bin 3 nil nil) (bin 9 nil (bin 18 nil nil))

Lines beginning with > are what you type; the extra line is the evaluated response.

So the language is dynamically typed and it seems you don't need to declare constructor symbols that take arguments. A constructor seems to be something that is irreduceable according to the rules already defined, whereas a function is something with reduction rules available.

I'm not sure I agree with the rationale for the dynamic typing. The designer says it means the language supports an arbitrary degree of polymorphism, but obviously it means it accepts invalid programs with undefined behavior. I think by adopting a Typescript style system you'd get huge advantages ("Typescript-style" meaning structural, adhoc and evolving towards correctness, rather than meeting the wrong design constraints upfront). But I'm still not at all sure my intuitions for this language are useful.

Anyway that's my review in five minutes. I hope someone writes something relevant here.

<comment><USER7> > but obviously it means it accepts invalid programs with undefined behavior.

Congratulations! This is the most entitled sentence in all of computing. The prize ceremony will be held at your house, tomorrow. I'll be casting a statue of gold for you, but first I have to rebuild all the software between me and the CNC machine in Coq or Typescript.

<comment><USER8> On a barely related note: When did Typescript's type system become some shining example of type systems? It's super basic and you can do almost nothing with it. It's not as basic as Go's type system, but it's really very sparse.

<comment><USER9> Not saying it's particularly amazing, but its ad-hoc structural product types are really nice. I would really enjoy if a language had TS-style ad-hoc structural products and Ocaml-style ad-hoc structural sums. This would allow for very lightweight type-level documentation.

<comment><USER10> >Ocaml-style ad-hoc structural sums

Ocaml also has ad-hoc products (objects and tuples).

<comment><USER9> Basically every language has ad-hoc products in the form of tuples. They aren't structurally typed in ocaml, which is the interesting part. Typescript has labeled products that have similar subtyping rules to ocaml's anonymous sum subtyping rules. Eg {x:a, y:b} < {x:a}.

<comment><USER10> Objects in OCaml are labeled products. < x:a; y:b > <: <x:a>

<comment><USER9> Ah, I did not know that. I've only used the {x : a} record syntax in ocaml.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> What's up with Clean these days?

[https://en.wikipedia.org/wiki/Clean_(programming_language)](https://en.wikipedia.org/wiki/Clean_\(programming_language\))

<comment><USER7> I haven't heard mum about it since 2006. Wikipedia says the last stable release was in 2011. I guess the market for proprietary Miranda derivatives fell apart after _Real World Haskell_ was published?

<comment><USER12> I wish Clean caught on more. I find unique types a little easier to think about. A version of Clean could/can(?) compile Haskell too.

If I recall correctly, Clean is BSD licensed. By 'proprietary' do you mean their main source of funding was building proprietary solutions over what they release open source ? They did seem they were more of a 'windows first' group, but I may be wrong about that.

</comment></comment></comment><comment><USER13> Is there an example of a problem where Pure would be a good choice of language in solving that problem?

<comment><AUTHOR> From the FAQ:

Why Pure?

Thanks to LLVM, Pure offers state-of-the-art JIT compiler technology in an interactive environment, and makes it easy to interface to C in a direct fashion. Recent releases also provide the ability to directly import LLVM bitcode modules into Pure scripts and to inline code written in various languages (currently C/C++, Fortran and Faust). Scripts can also be compiled to standalone native executables (they are also executed during compilation, which makes it possible to employ partial evaluation techniques).

Pure has an efficient MATLAB-like, GSL-compatible matrix type which makes it easy to interface to languages and libraries for doing numeric computations and digital signal processing. In particular, Pure interfaces to (GNU) Fortran, Octave and Grame's Faust, and you can directly invoke GSL routines on Pure matrices. In a way, this is like having Haskell, Octave, DSP programming and the term rewriting capabilities of a computer algebra system under one hood.

It goes without saying that Pure can be used used for mathematical applications, but there's also a growing collection of extension modules for GUI, graphics, multimedia, database and web programming which makes Pure useful as a kind of algebraic/functional scripting language for a variety of purposes.

<comment><USER8> I don't think this really does a great job of selling Pure as a solution to a problem. It's sort of saying "Well, you can kind of use Pure for anything, even GUIs!".

I'm sure there's something Pure was designed to solve which could be brought forward as something it solves beautifully. It's not really obvious what that is from this text, though.

</comment></comment></comment><comment><USER14> Compare to: Maude

[https://en.wikipedia.org/wiki/Maude_system](https://en.wikipedia.org/wiki/Maude_system)

<comment><USER15> Maude is a truly fascinating language. Its base computation model (no true operation order and pure term rewritting) is extremely innovative, and I've never seen another language like it.

While not a production ready language, I'm really surprised it or something like it doesn't get more attention.

</comment></comment><comment><USER5> Isn't just about any functional language based on term rewriting? E.g. beta reductions, combinators, etc.

<comment><USER16> Yes. The website beats around the bush before stating that actually most functional programming languages are just like this (possibly more interesting too, shh).

</comment></comment><comment><USER17> From 8 years ago:

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

</comment><comment><USER18> I wish it were modern enough to have a proper mobile site...</comment>


10 Books Every Aspiring Entrepreneur Should Read - <AUTHOR> http://blog.timel.es/10-books-every-aspiring-entrepreneur-should-read/

<comment><USER2> I don't get the wide dark static banner at the top.

<comment><AUTHOR> You mean the menu bar? You think it is best if it not stays on top?

<comment><USER3> It's large, intrusive, looming, oppressive, and contains nothing except a link to home and a login.

Also, if I press <space>, <page-down>, or click in the scrollbar, then whatever was just off the bottom of the window is now under the dark bar, making it inconvenient to navigate, forcing me to scroll a line at a time. Thus it breaks my most convenient reading methods.

So it's not just a question of staying on top, it's a question of reducing screen real estate, impoverishing the user experience, and generally getting in the way.

Does that help?

<comment><AUTHOR> True, thanks for the feedback, you are absolutely right...made a change to this so it works better now :-)

<comment><USER2> Appreciate :)

</comment></comment></comment></comment></comment><comment><USER4> You gave me some insipiration for my holiday booklist! Thanks!</comment>


Wikileaks reveals CIA's BothanSpy: exfiltrating SSH keys and passwds (Linux/Win) - <AUTHOR> https://wikileaks.org/vault7/#BothanSpy <comment><USER2> Gyrfalcon has a very primitive attack methods: LD_PRELOAD (omg!) and ptrace (see linux/Documentation/security/Yama.txt).

If this is a CIA level, then it's very sad.</comment>


What I Learned from One Year of Relentless HARO Pitching - <AUTHOR> https://stories.jotform.com/what-i-learned-from-one-year-of-relentless-haro-pitching-6da1921a1ce4 <comment><AUTHOR> I am curious to see any success story on HARO as well. I tried it on and off for ONE YEAR like the author but I was being very picky. I got just a few responses and none turned into anything material enough to justify for time waste.</comment>


We should have an email for each website - simple-login https://simplelogin.io/blog/an-email-for-each-website/ <comment><AUTHOR> I have done this for a couple decades and it works great. I have been able to confront businesses that have either sold or leaked or otherwise mishandled my information. They never admit to selling my info (this may change with recent laws), but it sends a message that their behavior will be seen. It is also a great way to nullify the source of spam that makes it past the regex filters. (S25R methodolgy)

<comment> simple-login True. As soon as we start receiving spams on an email address, we would know immediately which website has sold our email address.</comment></comment>


Deconstructing motor skills - <AUTHOR> http://news.harvard.edu/gazette/story/2013/09/deconstructing-motor-skills/

<comment><USER2> >researchers lesioned the basal ganglia of the birds — the region of the brain

a Vulcan reading this would make a mental note "still not ready, check back again in a couple of hundreds years".</comment>


Writing a Game Boy Advance Game - <AUTHOR> https://www.reinterpretcast.com/writing-a-game-boy-advance-game <comment><USER2> I wrote 2 games for the Gameboy/Gameboy Advance back in the day (Hot Wheels Stunt Track Driver and Matchbox Emergency Patrol) and it was an awesome experience. There's nothing like being able to hold the entire machine in your head and have every line of code executing being written by you.

If you're interested in development I suggest using the No Cash GB/GBA emulator; it's spot on and only had one glitch that Nintendo found in testing due to something about switching off the screen at the wrong time. I did almost all of my professional development in it and only had to burn to a Bung cartridge (used to be available from HK for cheap) for final testing infrequently. Much cheaper and probably better than the official dev kits available (but I wouldn't know, I never used one).

<comment><USER3> Both games were very cool from my memory of them!

What led you to using No$, and not having an official dev kit? I have no idea what the relationship would have been like with Nintendo...but did they wonder how you'd written the game if they'd never issued an official dev kit?

<comment><USER2> I used no$ because it was simply the best emulator available back then (circa 1999), plus the company didn't feel a need to actually buy a dev kit since I was fully capable of building my own, and actually preferred to use, using open source tools (assembler, linker, make, etc) and no$gba.

We were publishing through Mattel for those games as a 3rd party developer, so they handled all the dealings with Nintendo and I assume they had an in house dev kit or two, or at least it was just a 2 gorrila relationship.

</comment></comment></comment><comment><USER4> I have long thought that the GBA would be an excellent teaching platform for low-level programming if only Nintendo would allow it.

It has the feature that 100% of it's functionality is controlled through memory-mapped structs. You can define the whole hardware API in a single c header of struct/address pairs. To do anything, you write to those addresses and stuff happens. No magic, black-box libraries required (I guess there is the BIOS...)

It's also incredibly underpowered. You get a low number of clock cycles per frame to do everything. The lack of power, lack of cache and simple instruction set makes it an actually really good target for self-modifying code.

And, not least of all: it's literally a device built for having fun!

<comment><USER5> >if only Nintendo would allow it

You could easily teach a course on it. Have the students purchase a GBA flash linker and GBA and then teach the course. The students can flash their GBA games into the flash linkers, and you make the term project a completed game.

<comment><USER6> I went to a university where my direction was programming/game development. We had a course in, I can't remember for sure, C perhaps, and it included making a game for the GBA. It was some time ago but I remember it was quite interesting.

</comment></comment></comment><comment><USER7> I'd love to see more new games on old platforms like this. I even think people would pay a small amount if someone could get with EmulationStation or something like that and setup and install the emulators along with games. I also really wish that getting rights to distribute abandonware were reasonably possible.

I have a retropie set up for my son. Even though he's been exposed to all sorts of fancy stuff you can get on an Android, as well as Don't Starve Together, and Minecraft and a few other games on the Steam platform, he still really loves playing some of the older console games; especially stuff from the Megaman and Sonic franchises. I've also recently found Zelda for snes, which I never played as a kid. If anyone has any other old games to recommend for children on the SNES, NES, GBA, Genesis, etc. please reply.

<comment><USER8> The SNES, for instance, is commonly held to be the 2D (J)RPG console par excellence. Chrono Trigger, Secret of Mana, Earthbound, Super Mario RPG and the Final Fantasy games should take 100s of hours of your time.

Still for the SNES, I recommend Yoshi's Island, one of the best 2D platformers I've ever played. And of course, don't skip classics like The Legend of Zelda: A Link to the Past and Super Metroid.

Sorry, I _love_ the SNES.

<comment><USER9> I would argue that Super Mario RPG is one of the best JRPGs (and games in general) ever made.

<comment><USER8> I personally like the Mario & Luigi series (spiritual sequels to Super Mario RPG) even better.

</comment></comment></comment></comment><comment><USER10> He lists resources at the end. TONC is really invaluable: [http://www.coranac.com/tonc/text/](http://www.coranac.com/tonc/text/)

It's an interesting thing to try out. Especially to see what memory pre- allocation and limited resources can do to your way of modern thinking. It's also a nice exercise in C. You can do it via emulator, but linkers are rather cheap for GBA. There's something insanely satisfying seeing your crap run on mystical hardware of ye old(er) days.

</comment><comment><USER11> In 2006 I was off work for 6 weeks recovering from an injury. Just before my surgery I learned about the Atari 2600 homebrew scene - and was fascinated by the tricks you had to do to get something game-looking on the screen (I mean, the scanlines on the TV directly map to code cycles: so if you use too many instructions while the beam is in the visible section of the television, the whole game goes skewed!)

My recovery time was completely lost in following the AtariAge forums and tutorials, and I ended up with this "game": [https://github.com/mrspeaker/plops](https://github.com/mrspeaker/plops) \- you can test it out by grabbing the .bin file and dropping in the online emulator.

Not the most polished game ever, but was such a learning experience!

<comment><USER12> That's pretty cool, and I especially like the name!

</comment></comment><comment><USER13> Doing homebrew programming on older game consoles is lots of fun. It's quite a twist to start thinking of rendering in terms of the hardware's object APIs instead of a simple framebuffer. Even "API" is a bit of stretch: you're really just poking your data to the right spot in memory and the hardware takes care of the rest. And if you've got the right hardware, you can even run your games on the console itself!

</comment><comment><USER14> Last year I got back into GBA dev except this time I had a degree in computer science so I knew a bit more this time. It was fascinating to play around at such a low level. Directly referencing registers and setting bytes of memory to get them on the screen. I used a old gba link cable soldered to a parralel port to send my demos to the GBA. It was a fun learning tool. I didn't make a game though. Maybe one day :)

<comment><USER14> I also gave a talk at my uni to young kids learning to program about homebrewing on the gba. Which they surprisingly found quite cool for a game console they had never even heard of :3

</comment></comment><comment><USER3> It would be interesting for the author to get a flashcart, load his rom on it, and add some video of it playing on physical GBA hardware. Then you can really find out if any quirks of the system would prevent it from running, or add any slowdown.

<comment><USER15> One of the easiest ways to get code running on the GBA is via the multiboot protocol over the link port. This was the primary way I ran code on the GBA circa 2003ish using a link cable spliced into a parallel port plug.

Unfortunately, parallel ports are exceedingly uncommon these days. However, it looks like this can be done easyly enough using something like a Teensy [0] or Arduino [1].

[0] [https://github.com/tangrs/usb-gba- multiboot](https://github.com/tangrs/usb-gba-multiboot)

[1] [http://web.archive.org/web/20100815071014/http://blog.evildr...](http://web.archive.org/web/20100815071014/http://blog.evildro.me.uk/?p=21)

<comment><USER3> Oh, interesting! For those of you not versed in the intricacies of playground GBA link cable gaming, this protocol was used to link multiple GBAs, where one would have a cartridge and the others would not, and they would receive the game over the link cable. These single-cart multiplayer experiences were almost always very rudimentary, because as Torgo says, you're loading the entire payload in memory.

</comment></comment></comment><comment><USER16> GBA is probably the last device made that acts like an old classic console like the NES. It hardware-accelerates tiles and sprites, which are loaded from memory-mapped locations that you set (typically) with structs made in C. You can tweak x-y orientation through bitmaps, etc and scroll the tilemap around the screen by setting the values in memory-mapped registers.

Since there's only a fixed number of sprites the hardware acceleration can reference from memory to display on screen, it was really an eye-opener to debug commercial games and see how they worked around these limitations. In Wario Land, the Wario character onscreen had tons of animations, which would seem to break this limitation. By debugging the game, I was able to find the way they did it was by setting aside just a few sprite slots for Wario, loading all his animations into a different segment of RAM, then DMA'ing the frames into his sprite slot on a timer to do the animation.

Also, even though it's an LCD screen, the hardware simulated a CRT vertical and horizontal blank. I guess this was because this is the paradigm that console game-programmers were used to, as you'd do your game logic there between animation frames.

<comment> TD-Linux >Also, even though it's an LCD screen, the hardware simulated a CRT vertical and horizontal blank.

It's not a simulation, the LCD is actually serially refreshed in the same scan order as a CRT.

</comment></comment><comment><USER17> I'd recommend anyone that is interested look at [http://gbadev.org](http://gbadev.org) too.

</comment><comment><USER18> This is great. I think things such as this would be great for kids to get started with programming.

</comment><comment><USER19> This was actually how I started out programming at the age of 11-12 (or, the step up from QBASIC).

</comment><comment><USER20> wow</comment>


Ask HN: Scriptable command line browser? - <AUTHOR>

Basically what I'm looking to do is use Selenium IDE (http://seleniumhq.org/) on Firefox to generate some regression tests but then I want to replay them without having to fire up X11 and Firefox.
I found ELinks (http://elinks.or.cz) which is a text based browser with Lua support but it seems like it would be a good amount of work to write a Selenium binding.
Anyone know anything better? <comment><USER2> Lynx can record a session and play it back, which makes it easy to create tests. The sessions are easily edited too. It's available in the repositories of most Linux distributions, or here:

<http://www.lynxbrowser.com/>

</comment><comment><USER3> Something I've looked at: <http://htmlunit.sourceforge.net/>

Also, I'm not sure how they do it, but Jaxer (<http://www.jaxer.org/>) has a headless firefox instance they use. Maybe do it in a similar manner?

<comment><USER4> I can't find anything about a headless firefox on the jaxer site. I thought it was server-side javascript?

<comment><USER3> Jaxer is server side javascript, with access to a DOM. When I looked at it (more than a year ago now), they accomplished that via a headless firefox 3. I'd guess they still do that, since it worked for them.

<comment><USER4> Yeah, I just assumed it was a javascript interpreter with a DOM. (Obviously you don't need a whole browser for that.)

I wonder what the performance implications are. Firefox seems way too... single-threaded?

</comment></comment></comment></comment><comment><USER5> A tool such as Tourbus might work. It's a Ruby app meant to stress test Web sites. It uses Webrat and (I think) Mechanize underneath, and does not open any browsers.

If the site in question has scripting you're out of luck, but otherwise it should be quite useful.

In fact, I found yourself using both Tourbus and Selenium on a project, and decided I didn't want to have duplicate tests, so I wrote some helper code to allow Tourbus to execute my Selenium scripts. So far, so good. I can record the actions in the Selenium 'IDE' plugin, and use them in Tourbus.

<http://github.com/dbrady/tourbus>

</comment><comment><USER6> If all you want is server side automation, then you can try Xvfb, which is a virtual X server capable of running X applications.

On a related subject I used Watin (.net) for browser automation and learned, that it was modeled after Watir, which is the same in ruby. See <http://watir.com>.

</comment><comment><USER7> If into Ruby, I saw a presentation on how to do what your looking for, check out: [http://jjinux.blogspot.com/2009/10/ruby-introduction-to- beha...](http://jjinux.blogspot.com/2009/10/ruby-introduction-to-behavioral- driven.html) \- Should be a good starting point...

</comment><comment><USER8> Please take a look at Chickenfoot

<http://groups.csail.mit.edu/uid/chickenfoot/index.php>

maybe it does what you want? I was very impressed with a video I had seen about it a couple of years ago.

</comment><comment><USER9> I think Twill might suit you. Have a look at the example. <http://twill.idyll.org/examples.html>

</comment><comment><USER10> Maybe give vimperator a try. It is a plugin for firefox that gives it a vim feeling. I think you can write scripts for it too.

</comment><comment><USER11> Wait, so Selenium RC not hitting the spot for you?

<comment><AUTHOR> Selenium RC starts Firefox instances though which means I'll have to be running a X11 server on our CI box. I actually gave this a whirl with Xvfb but it still uses tons of memory.

<comment><USER12> It seems to me you really ought to be regression testing against the actual browsers your users will be using, unless you do absolutely no Javascript, in which case why run browsers at all? What situation are you in where you have somehow slipped between the cracks of this logic? (The answer may help guide other people's advice.)

"It takes a lot of memory" has a simple solution, after all: More memory. Recovering the cost of even $200 of RAM only requires finding one bug before a customer did!

</comment></comment></comment><comment><USER13> Have you considered using script(1) ?

</comment><comment><USER14> uzbl is interesting, but I don't think it's exactly what you're looking for</comment>


Memorado Hackweek: 4 apps for refugees in 4 days - <AUTHOR> https://medium.com/@Memorado/day-3-4-memorado-hackweek15-41474f5af452 <comment><USER2> Refugees are an example of a community with no cellular service who need to share information ad-hoc. Think: Finding missing relatives in camp situations, reporting the viability of migration routes, weather or road conditions, the location of immigration checkpoints, etc. This is a perfect application of ad- hoc wireless / mesh networking, see [https://bugzilla.mozilla.org/show_bug.cgi?id=945047](https://bugzilla.mozilla.org/show_bug.cgi?id=945047) and [https://bug945047.bugzilla.mozilla.org/attachment.cgi?id=840...](https://bug945047.bugzilla.mozilla.org/attachment.cgi?id=8407268)</comment>


How Amazon Kills Books and Makes Us Stupid - <AUTHOR> http://www.alternet.org/books/147590/how_amazon_kills_books_and_makes_us_stupid/?page=1

<comment><USER2> 6 pages. The main argument: Without altruistic publishers and book store personell/owners, people won't buy smart books and stick to the mindless drivel of bestsellers. Because mere customers couldn't recommend those pinnacles of literary achievement, there's no other way to drive sales (book critics?) and the Amazon book recommendations just are a vicious circle towards the biggest sellers.

I've heard similar arguments before, which is why Germany still has fixed prices on books. Without declaring them damaged, any book that is in print will got at the listed price, no discounts possible. The reasoning behind this: By keeping the bestsellers more expensive, publishers can fund the literary masterminds.

All such thinking is astonishingly patronizing and reeks of a general "we know best" mentality. Books beyond bestsellers can go "viral", but apparently all those books will just be dumb, pulpy entertainment.</comment>


Why Senders Matter: A Look at my Last Year in 63,961 Emails - <AUTHOR> http://www.klaviyo.com/blog/2013/03/20/why-senders-matter-a-look-at-my-last-year-in-63961-emails/

<comment><USER2> _...smart ways to separate notifications from emails requiring response, better tools for consuming email can significantly reduce the time burden required for email._

Indeed. This is the entire concept behind Inky's Smart Views. (<http://inky.com>) Still beta; we're focused on stability and bug fixing.

<comment><USER3> I'm setting up Inky now and excited to try it.

On the note of smart views, any idea how representative my data is of the typical email user?

Separately, I'm curious to know how far smart views go with aggregation - i.e. if I get 10 facebook friend request emails, are they combined? Or is this an irrelevant question in the smart view paradigm?

<comment><USER2> We don't know if your inbox is representative; we don't actually see users' emails so we don't have stats on what kinds of mail people have.

The smart views continue to evolve; we've been iterating them to find the right model -- it turns out to be pretty subtle from a UX standpoint. That's another reason we're not formally launched yet.</comment></comment></comment>


Show HN: Yarc – bidirectional notes in markdown, accessible over API - <AUTHOR> https://github.com/xeust/yarc <comment><USER2> Yarc lists Roam as an inspiration, so I would like to mention an open-source alternative called Athens [1]. It's being actively developed and I imagine will soon eat Roam's lunch, given their unfortunate pricing model.

[1] [https://github.com/athensresearch/athens](https://github.com/athensresearch/athens)

</comment><comment><USER3> Well presented - it was easy to understand.

How would you say Deta is compared to Zeit or the other micro-cloud offerings out there? I've never used it.

<comment><AUTHOR> Deta provides you with integrated backend services, like a database (already) or files (soon).

Disclaimer: Deta is the main project I'm working on now; yarc is my most recent side project.

<comment><USER3> Great work on the Deta website! Small typo in 'Add a database to you project today', but I loved the illustrations and the copy - quick and easy to understand with good differentiation.

I'll definitely be giving it a try in my next project.

<comment><AUTHOR> My colleague did the site, but thanks for the kind words (also for flagging the typo)!

Awesome, please let us know if you have any feedback / questions.

</comment></comment></comment></comment><comment><USER4> All of these tools are inferior to other note tools because they can't work offline.

I'm using apple notes.

Bear is also nice if you need markdown.

<comment><USER5> I have a 10 line shell script as a Daemon syncing my notes to a git repo.

I can use any editor anywhere - well except on my iPhone. There I just use apple notes for note taking, and sync anything important in some other device. I thought this was going to be a problem, but Most of the notes i take with the iPhone are throwaways (buy some groceries).

On the iPhone I can browse my notes through the github webcinterface, which supports search. Works better than I expected.Having had to migrate all my notes from Evernote to Apple notes to One note this last migration was the last. All my notes are in markdown, I own everything, Never going to use a note taking technology that's not based on widely supported open technologies (got, markdown, etc).</comment></comment>


Typescript-library-starter - <AUTHOR> https://github.com/alexjoverm/typescript-library-starter <comment><AUTHOR> Starter kit with zero-config for building a library in typescript, featuring Webpack 2, Jest, TSLint, Semantic Release, and more!</comment>