Microsoft FAT patent loss endangers its Android revenue - <AUTHOR> http://www.zdnet.com/microsoft-fat-patent-loss-endangers-its-android-revenue-7000024103/

<comment><USER2> My speculation from previous report (note: All involved contracts are still secret.)

Microsoft's earnings from Android trolling are not a matter of public record. Each agreement M'soft has made is secret.

In fact, there is no strong, solid evidence that M'soft is making any money at all off Android. When Barnes and Noble's Nook refused to pay the danegeld, M'soft sued and then settled to avoid discovery. Nook actually got paid by M'soft in the settlement, though M'soft ended up with considerable control of the unprofitable Nook in exchange.

Speculation is that HTC agreed to make and market Windows Phone phones instead of paying royalties. If that kind of agreement was common, it's no wonder that all the non-Nokia Windows Phone phones were garbage: They were produced under duress.

Also, my Android 4 devices no longer support any kind of FAT filesystems the way my Android 2 phones did. I think Google already started making FAT optional just so as to avoid paying for patents like this one.

<comment><USER3> 'danegeld' \- what a wonderful word. I didn't realized the vikings invented trolling.

<comment><USER4> Given the history of man is several hundreds of thousands of years old, I doubt the invented it.

However, it seems they might have innovated and popularized it.

It's not unlike the mafia "protection" model, though, is it not? Take a look at the Crassus model of firefighting [1] which predate the Danes' innovation, for example.

[1] [http://en.wikipedia.org/wiki/History_of_firefighting#Rome](http://en.wikipedia.org/wiki/History_of_firefighting#Rome)

</comment></comment></comment><comment><USER5> Wait, seriously? That's it? _that 's_ the patent MS uses to force cellphone manufacturers to pay them for Android? The Dos 8.3 / long filenames thing? That's insane. It's the obvious solution and not terribly hard to implement in the first place. The pseudocode for this would be like 5 lines.

<comment><USER6> What is even more strange, is that modern Android phones (at least the Nexus line) don't support mounting the internal memory as a fat-32 device -- they use MTP or PTP for file transfers. So as far as I can tell, there is no reason for them to use fat-32 internally anymore. Or am I missing something?

<comment><USER7> Of course, they still need to implement FAT-32 if they ever want to mount SD cards that are interoperable with other phones, cameras, etc.

<comment><USER8> Which is one reason why the entire Nexus series, Moto G/X, HTC One, etc don't support SD cards. That and Google wanting everyone to use the cloud.

<comment><USER5> What happens if you plug in an SD reader or a FAT-formatted USB stick into the USB port via OTG? That would still require support for FAT in the OS.

<comment><USER9> It would, but on a default, non-CM Android-build it would also require you to run StickMount or OTGHelper to mount it somewhere where the apps and OS will be able to use it.

And for that you may or may not need root. And if you're already there, why not just use a custom kernel (with FAT support) while you're at it?

<comment><USER10> Pretty big leap from root to a custom kernel. But on my Nexus 7 with root and stickmount, the stock kernel does support mounting FAT drives. So support is baked in there.

<comment><USER11> I guess it comes down to, when you have to jump through enough steps, some of them unauthorised and requiring the user to install additional software, in court you can make a reasonable argument that you are not selling the device with that functionality enabled, therefore you aren't liable for patent infringement.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Each glaring victory in these patent battles are only eclipsed by the crushing defeats of losing a patent lawsuit.

New Egg losing one case and potentially having to pay out millions is devastating.

What do you do as a startup if one of these companies targets you? What do you do as a company that's been around for a while? Amazon pays out. You would have to as well. What if you can't pay? America will lose its foothold as the place for software companies to be grown and nurtured if parasitic behavior isn't removed from the tool belt of its own corporatations.

<comment><USER13> Let's wait for the appeal before we declare any crushing defeats, but you aren't wrong that software patents are killing innovation.

I think if you're a startup and you don't plan to do VC funding, don't incorporate in the US. I guess the US courts could enforce an injunction against your company if you sell to their citizens, though.

<comment><USER14> If you do business inside the US then incorporating outside of it will not protect you.

Ultimately, the only way to avoid these lawsuits in the US is to not do business in the US.

<comment><USER13> Would the US actually be able to enforce a court decision beyond injunction against a foreign business located abroad?

<comment><USER14> Doubtful, unless there is some sort of agreement with the host country. But that wouldn't necessarily stop the troll because if that company ever wanted to expand into the US, which is still a big market, then they'll have to deal with the troll sooner or later.

<comment><USER13> I would abandon the US market until I had the funding to fight trolls or they get responsible legislation going. Once foreign corp. X have got the funding I don't know what would stop a mysterious new US corp. Z from buying access to the X userbase and APIs with the express purpose of doing the exact same thing as X but domestically. And then, once the patent business has been cleared up, merge them. It might have to be as convoluted as X -> unsullied foreign corp. Y -> Z to launder the relationship but I bet it's possible.

</comment></comment></comment></comment></comment></comment><comment><USER15> What's more hilarious is that Microsoft make more money from that patent than their entire revenue from Windows Phone:

[http://www.forbes.com/sites/timworstall/2013/12/06/german- pa...](http://www.forbes.com/sites/timworstall/2013/12/06/german-patent- ruling-threatens-microsofts-windows-phone-earnings-from-android/)

<comment><USER16> "we're all pretty sure that the Android royalties are larger in that division than the Windows Phone revenues." -Forbes

Please don't incorrectly paraphrase a speculative comment.

</comment></comment><comment><USER17> While this is an important patent I believe MS went after Android manufacturers for around a dozen patents[0] so I'm not convinced this ruling alone is going to have a large impact on the royalty agreements.

[0] [http://www.networkworld.com/news/2011/070611-microsoft- andro...](http://www.networkworld.com/news/2011/070611-microsoft-android.html)

</comment><comment><USER18> Does this mean MS must pay back royalties? To whom?

<comment><USER7> Not automatically, no. And I'd bet that the contracts (i.e. 'licenses') that they've agreed to thus far have a clause that prevents the licensee from seeking a refund should the patents ever be found invalid.

<comment><USER14> Not only that, I'm willing to bet they would have to continue paying the royalties unless they can get out of the license contract by some legal means.

</comment></comment></comment><comment><USER19> This headline almost makes it seem like this is a bad thing. How about: "FAT patent invalidation _saves_ Android OEM's from Microsoft's illegitimate rent- seeking?"

<comment><USER13> "FAT patent invalidation reduces Android OEM costs by $3.4 billion globally"

</comment></comment><comment><USER20> More and more, Microsoft are starting to look like "80's IBM" ..

</comment><comment><USER21> Here's the patent for anyone interested:

[http://www.google.com/patents?id=cLAkAAAAEBAJ&dq=5,579,517](http://www.google.com/patents?id=cLAkAAAAEBAJ&dq=5,579,517)

</comment><comment><USER22> So, do they have to refund the billions they gotten illicitly from trolling?</comment>


Improving Running Components at Twitter - <AUTHOR> http://blog.evanweaver.com/articles/2009/03/13/qcon-presentation/

<comment><USER2> So why are so few, to no, startups using LDAP? I would think LDAP would be a perfect short and long-term solution for twitter. They could put all of their users in LDAP, and then all of the people they are following into a group (each user gets a group). Now, when you want to know who someone is following, that is one query (no joins like in a DB!), and then if you want to know who is following them, again, it is one query.

LDAP (like Sun's LDAP which is free) scales beautifully (it was designed for this, just ask the telcos), and you can easily put all of this info in memory. Sun's 6.3 version handles large groups like this very well. (I do not work for Sun.) And if you want open source, they could use OpenDS or Fedora DS (but I don't know how well Fedora would do with huge groups).

Looking at those slides makes my head spin in terms of what they have tired to engineer with memcache, etc. It just seems like they are trying to fit square pegs into round holes.

(This is the same comment I left on Evan's blog.)

<comment><USER3> At the size they're doing things, the algorithims, data structures, and application specific optimizations (assumptions you can make about the data) are where the big challenge is. It would be relatively simple to export/offer the data as an ldap service, but the wire protocol is arguably an uninteresting technical anecdote.

To see this in action, slap together a sun or oracle ldap server and fill it with 2-4x physical ram worth of data and benchmark non-trivial queries against it. I believe you'd see better results than a naive sql implementation but it would be quite undesirable compared to their real world transaction rates.

<comment><USER2> The whole point is that you have more RAM than data, not less. If you are trying to do queries in LDAP and all of the data (entry db and index dbs) do not fit in RAM, then forget about it. This is why you would design the system to take growth into account. Modern LDAP servers -- in conjunction with LDAP proxy servers -- are designed to do this very thing. Verison has their 75 million wireless subscriber "database" in LDAP, not a RDBMS, and the entire dataset is in memory (spread across dozens of servers).

</comment></comment></comment><comment><USER4> Implementing a scalable Twitter is the "Hello World" application of Redis: <http://code.google.com/p/redis/wiki/TwitterAlikeExample>

(here "Hello World" does not mean the simplest, but the one that is non obvious and exploits many important features to understand the system).</comment>


A useful Caps Lock key - <AUTHOR> http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ <comment><USER2> I remapped my Caps Lock key to switch into a "Greek" mode for typing, since I frequently need to type Greek letters interspersed with English. (Anybody in STEM classes should know how awkward it is to do this normally.) If you have a Mac, you can do this with Ukelele, a free key remapping tool. You can even set up and add "dead key" modes (e.g. the way opt+E allows you to add a diacritic to the next letter typed). There are some really advanced configurations possible. Ukelele even still works on Mavericks.

[http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=...](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ukelele)

<comment><USER3> Not awkward, just with a little steep learning curve. The only way to type math notation (which isn't the same character set as Greek. Compare \varepsilon with \epsilon, for example: [http://www.w3.org/2003/entities/2007doc/#epsilon](http://www.w3.org/2003/entities/2007doc/#epsilon)) is LaTeX. And for that, the only keys you really need are the dollar sign and backwards-slash.

<comment><USER4> > The only way to type math notation is LaTeX.

No it isn't. Perhaps by far the best and most practical way, but not the _only way ever_ to type math notation.

<comment><USER3> Try to write anything math heavy that is longer than a couple of pages in any other tool.

I'd be finishing typing a small monograph by then. LaTeX is far from perfect, but there isn't a better solution yet.

</comment></comment></comment></comment><comment><USER5> I think macs make working with keyboard shortcuts very difficult for various reasons. \- Command and Control are confusingly named. \- They use most of the function keys for windows related things - bring all windows to front etc. \- There is no key for right click like those offered by Windows keyboards to bring up context menus. \- You can Command-Tab to an application but not to the individual windows of that application. You must use Command-Tilde for that. \- Apps offered for mac don't have a consistent behavior for the close button. Some apps will close the window, but stay in the dock. Others will quit. \- On Windows, if the first letter in the menu bar items is underlined, you can be sure you can just do Alt + that letter to open up that menu item. You could even move windows using one of the menu item options and arrow keys.

My biggest issue on switching from Windows to Mac was losing all those keyboard shortcuts. On Windows I could do a whole lot more without ever touching the mouse.

I know you can remap your keys etc. but then you usually end up acting all awkward anytime you have to use someone else's computer. So I want the defaults to be good instead and I think Windows got theirs better than Mac.

Don't hate on me for this. I know both operating systems have their pros and cons.

<comment><USER6> Windows is just as inconsistent with closing, with the added bonus of also being inconsistent with minimizing behaviour too. How do you get an app to go to the systray? Close it? Minimise it? Who knows.

While I do agree Windows has a better keyboard story, most of what you describe are just differences, not worse.

<comment><USER7> Alt-space gives the window menu.

Close: alt-space, c

Minimise: alt-space, n

Maximise: alt-space, x

etc.

Works in every version of windows since 95ish, as well as every popular Linux DE I've ever tried (inc. gnome, xfce, kde, cinnamon).

</comment></comment></comment><comment><USER8> I've got it mapped to Control like a standard hacker,

but this reminds me that some years ago I had it mapped so that if I hit SHIFT-CAPSLOCK (which is a rather unusual thing to do, think about it), it would type... a tilde. I have no idea why I thought I wanted that.

<comment><USER9> Are you sure it was a tilde? My terminal emulator puts in tildes for various special characters (such as when I press the delete key).

</comment></comment><comment><USER10> Compose key! [https://en.wikipedia.org/wiki/Compose_key](https://en.wikipedia.org/wiki/Compose_key)

languages, like ruby, haskell, and go, let you use unicode characaters in the language. You can map those characters to key combinations with the compose key.

It comes with a giant list of key combos for accented characters too. So it's worth enabling, then defining your own combos for symbols you'd like to add to your vernacular.

<comment><USER11> The first ruby code I find with unicode characters outside the comments gets the author a smack around the head :)

Yes it is all very nice that you can do this, but if you publish some code which some poor shmuck wants to modify on his non-uber-unicoded-dev-setup you just made his life a lot worse.

<comment><USER12> Who is using an editor that doesn't support Unicode?

<comment><USER13> That was what I thought until my patch broke the build for a windows based dev. Granted this was C++, Ruby should fair better by having a single popular runtime.

</comment></comment></comment></comment><comment><USER14> I use caps-lock instead of shift. For example, I do "CAP-LOCK, LETTER, CAPS- LOCK" to type a capital letter. It's less efficient, yes, but it works just fine for me. Explaining this to anyone gets "you're kidding" views, but I assure you, the caps lock key is already quite useful to me.

<comment><USER15> It's actually unclear whether it's less efficient or not. Sean Wrona, one of the fastest typists in various competitions, generally uses it in place of shift.

He posts about it here: [http://forum.colemak.com/viewtopic.php?pid=8851#p8851](http://forum.colemak.com/viewtopic.php?pid=8851#p8851)

<comment><USER16> The first thing to come to mind when I read the parent was Sean Wrona too...

I use StickyKeys which lets me hit Shift and then a letter, which I think is even faster since you don't have to "un-shift" like you would with CapsLock.

</comment></comment></comment><comment><USER17> Isn't hyper its own key, not a combination of the other modifiers?

[http://upload.wikimedia.org/wikipedia/commons/4/47/Space- cad...](http://upload.wikimedia.org/wikipedia/commons/4/47/Space-cadet.jpg)

Emacs seems to think so:

      ELISP> (kbd "S-s-C-M-x")
      [176160792]
      ELISP> (kbd "s-C-M-x")
      [142606360]
      ELISP> (kbd "H-x")
      [16777336]

<comment><USER15> Yup, it's its own key. People tend to refer to this combination of modifiers on OS X as "Hyper" because of this post by Steve Losh:

[http://stevelosh.com/blog/2012/10/a-modern-space- cadet/#hype...](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#hyper)

<comment><USER17> That's annoying. How do Mac users use capitalized Greek letters as part of key combinations!?

<comment><USER18> It's a horrible burden, but we've learned to make do.

</comment></comment></comment></comment><comment><USER19> In linux, if you want to make Capslock as both ESC and Ctrl,

        $ setxkboption -option -option 'ctrl:nocaps'
        $ xcape

[https://github.com/alols/xcape](https://github.com/alols/xcape)

What is good for?

      - Happy with vim
      - Happy with emacs like - readline - keybinding. C-a, C-e, C-u, C-k, C-d, C-h, C-w, C-p, C-n, C-y ...
      - Ctrl key is most used in any gui application.

You can abandon both bottomleft Ctrl and topleft Esc.

<comment><USER20> How does that work? Pressing it alone is escape, pressing it in combination with another key is Ctrl?

<comment><USER19> Yes

</comment></comment></comment><comment><USER21> I just remap caps lock to act as a random modifier each time it's pressed. It seems absurd to set it up any other way.

</comment><comment><USER22> Caps is a fantastic key to use for things like backspace, but if you want even more functionality, try using it with Colemak as a modifier that puts all the other common keys right on your home row: [http://forum.colemak.com/viewtopic.php?id=1467](http://forum.colemak.com/viewtopic.php?id=1467)

<comment><USER23> Slap that on a Truly Ergonomic keyboard ([https://www.trulyergonomic.com](https://www.trulyergonomic.com)) and you're living my life. Do it all at once and type 4 wpm for a month.

(I have the older "international" version with a number of blank keys. I remapped the left space bar to command and the lower left dead key to hyper. Tapping either shift of course generates a paren.)

</comment></comment><comment><USER24> If you're on Windows, a no-hassle way to do this is with AutoHotkey.

[http://www.autohotkey.com/](http://www.autohotkey.com/)

[http://www.autohotkey.com/docs/misc/Remap.htm](http://www.autohotkey.com/docs/misc/Remap.htm)

</comment><comment><USER25> It may be useful to remap right shift to shift/delete in similar manner. Also look how awkwardly placed ctrl is. You can remap enter to act as ctrl if it is pressed with something (and plain old enter otherwise). I did this in my keyboard layout: [https://kozikow.wordpress.com/2013/11/15/the-only- alternativ...](https://kozikow.wordpress.com/2013/11/15/the-only-alternative- keyboard-layout-youll-ever-need-as-a-programmer/) .

</comment><comment><USER26> This is a great trick, and absolutely worth doing. I have mine mapped to Hyper as well, which is tied to Slate bindings for resizing and managing windows.

[https://github.com/jigish/slate](https://github.com/jigish/slate)

<comment><USER27> Care to post your slate configuration file? I've just started using it and am seeking inspiration.

<comment><USER28> [https://github.com/lunixbochs/reslate](https://github.com/lunixbochs/reslate)

Was built by a co-worker of mine (ontop of slate). Pretty great set of defaults.

<comment><USER29> +1 for reslate :)

I use it combined with a hyper key mapping (similar to OP) and enjoy it very much.

my config file: [https://github.com/n0nick/dotfiles/blob/master/slate/slate.j...](https://github.com/n0nick/dotfiles/blob/master/slate/slate.js)

</comment></comment></comment></comment><comment><USER30> I just disable its functionality and use it as an extra key for things such as push to talk. Getting in the hang of using as a replacement for delete/escape etc causes muscle memory problems when typing on someone else's keyboard, if you're only ever using your own then it's beneficial, kinda like switching from qwerty

</comment><comment><USER31> I learned to type in a keyboarding class in high school in the nineties. I was taught to use the caps lock automatically for instances where there are 3 or more capital letters. I cannot give that up as infrequently as it happens. That is much more inconvenient to me than making that key do something else.

</comment><comment><USER32> There's history to support the Ctrl key being to the left of caps-lock.

[http://www.redgrittybrick.org/terminals/keyboards.html](http://www.redgrittybrick.org/terminals/keyboards.html)

I guess without another key to the left a lot of people remap caps-lock to ctrl. I never got used to that for some reason. In general terms I tend to avoid remapping in order to maintain a consistent UI. the only exception to this that makes sense to me is that all of my Macs have always had their keyboards remapped to match a PC. As closely as reasonable and possible. For example, ctrl-c and ctrl-v do exactly the same thing whether I am running a Windows, Linux (GUI) or MacOS machine.

</comment><comment><USER33> Reminds me of the Caps Lock Function key on the Acorn Electron computers. Most keywords in the version of BASIC that came with the computer had a corresponding key, so if you were writing a program, you'd simply hit CapsLckFn-P for PRINT or CapsLckFn-E for ELSE etc.

It worked surprisingly well for coding.

If you look carefully, you can see the keywords printed on the front of the keys.

[http://ewyse.files.wordpress.com/2011/03/acornelectron_top.j...](http://ewyse.files.wordpress.com/2011/03/acornelectron_top.jpeg)

<comment><USER34> Cool keyboard. It's also interesting since you assumed, and all of us would have, P would be PRINT, but it's actually PLOT. PRINT is on the /.

<comment><USER35> In a lot of old BASICs you can type "?" instead of "PRINT" [1]. I bet that's why they put PRINT on that key. Just an observation.

[1] for example: [http://www.antonis.de/qbebooks/gwbasman/print.html](http://www.antonis.de/qbebooks/gwbasman/print.html)

</comment></comment></comment><comment><USER15> I ended up doing something very similar after reading Steve Losh's article. I kept Control where it was, using Caps Lock as Escape/Hyper . The best part by far is using Caps Lock + hjkl for navigation. At work, I leave my arrow keys & numpad covered up with a mouse platform so I can keep the mouse closer.

A side effect of this was feeling completely lost when using Windows in Boot Camp. I found that there's a great piece of software on Windows called "AutoHotKey" that lets me do the same hjkl navigation.

<comment><USER36> caps lock + hjkl requires your left pinky every time you want to move the cursor. This may very well induce RSI because "using the arrow keys" is something that we tend to do all the time.

I'm using the key physically at the left of the space bar (I don't like talking about the 'name' of the key because it's very keyboard-dependent) as the modifier which allows me to move the cursor. And I move the cursor using modifier+ijkl (for ijkl reproduces the inverted T arrow cluster, not unlike how gamers like to use WASD or ESDF). I do hit the modifier using my left thumb, which is a finger much stronger than the pinky (and, arguably, such a setup is less RSI inducing).

Regarding covering the arrow keys and numpad with a mouse platform: many people opt for for a "TKL" (no numpad) or even 60% keyboard (no numpad, no arrow cluster) and typically those 60% keyboards have the benefit of coming with quality switches (also arguably less RSI inducing).

If you want to see what others are doing, two great sites are geekhack.org and deskthority.net.

FWIW I use a 60% keyboard which has CTRL at the correct place (i.e. where CAPS-LOCK is on keyboards which have a caps-lock): an HHKB Pro 2 (using the amazing Topre switches)... Which doesn't even have a CAPS-LOCK key.

Note that lately there seem to be a regain in interest in alternate setups and alternate mappings: for example the "SpaceFN" layout uses the space bar as an additional modifier (when it is held down) and ijkl to move the cursor around (once again: ijkl and not vim's hjkl and a strong finger, the thumb, to press the modifier).

Regarding remapping and "feeling completely lost" on other OSes: if you want to not have to remap your keyboard on Windows / OS X / Linux etc. you may want to buy a keyboard which has a programmable controller: your setup then works the way you want on any computer.

<comment><USER15> Thanks for the info. I actually went through a whole mechanical keyboard phase myself and went through several keyboards without numpads. I spent months using these keyboards, but in the end I found I was fastest and most comfortable typing on an Apple wired keyboard (heresy, I know). I much prefer the footprint of the Apple wireless keyboard, but I find that even though it seems like it'd be identical to the wired version, the keys aren't nearly as solid.

I am kind of curious about Topre switches, I haven't tried them yet. Only various Cherry switches.

I think the pinky RSI issue isn't so bad for me because most of the time I'm in a text editor with vi keybindings, so I wouldn't be using the arrow keys anyway. It's just nice in other apps to have that ability. In the situations where I do use my pinky, it's typically when I'm not typing very much, so I actually just move my left hand so my pinky rests over the Caps Lock key and doesn't need to move laterally. It's some movement, but still less than reaching over to the arrow keys.

</comment></comment></comment><comment><USER37> Us Emacs users unfortunately have to remap it to control to retain sanity on standard keyboards :P

<comment><USER18> I do that by default now, too -- OS X has a few basic Emacs control keys that work in all text fields/boxes, like ^P/^N, ^A/^E, ^D, etc., and even though I rarely use Emacs itself those have become muscle memory.

(I use KeyRemap4MacBook for a couple things, including mapping Caps Lock to pressing both shift keys simultaneously, so I still have it if I need it.)

</comment></comment><comment><USER38> I cut my teeth on Sun keyboards and emacs, so I always remap caps lock to control.

</comment><comment><USER39> As a Spanish speaker who's used to using English keys for programming, I found it useful to use the Caps Lock key to change keyboard layouts.

<comment><USER40> I prefer Scroll Lock for cycling keyboard layouts

</comment></comment><comment><USER41> On fr_FR mapped keyboards (AZERTY) the upper left key is a utterly useless ². I've remapped it to a backtick ` which is otherwise complicated to obtain (needs a 3 key combo). If anyone interested: [http://planetozh.com/projects/azertyck/](http://planetozh.com/projects/azertyck/)

</comment><comment><USER42> Remapping my capslock key to escape was the only way that I could finally switch to Vim. Highly Recommended.

<comment><USER43>
        inoremap jj <Esc>

Best .vimrc setting ever.

<comment><USER44> Have you compared it to CapsLock as ESC? I understand Escape is in a ridiculous position on most keyboards, but I think CapsLock makes a great mode switcher, and have been using it for a few months now. (Downside being that it can't be done in vimrc, at least not in terminal vim which I use.)

The jj and jk hacks always seemed ridiculous, but maybe I'll give them a try. I think I would prefer jk for speed and fatigue reduction, or maybe even something on the left home row since I'm left-handed.

<comment><USER43> As you say, you can't just tweak the capslock assignment in vimrc or by issuing a command. The great thing about the jj/jk hack is that if you end up on some random system or borrowing someone else's shell for a second then all you have to do is type ":inoremap jj <Esc>" and you're back in the groove.

I was a little skeptical about it at first as it seemed like a weird hack, but it's actually quite practical. The fact that you don't have to leave the home row to swap between modes is a huge efficiency boost.

</comment></comment></comment></comment><comment><USER45> I have Caps Lock mapped to Backspace. Makes total sense after seeing how out of the way Backspace is.

</comment><comment><USER46> If you're looking for the rest of the private.xml file (HYPER + H/J/K/L) mappings...

[https://gist.github.com/skryl/8143550](https://gist.github.com/skryl/8143550)

</comment><comment><USER47> I have been using super-caps for some time to remap Caps to be Escape __or Control __if pressed together with something else.[https://github.com/cmatheson/super- caps](https://github.com/cmatheson/super-caps)

I must admit, on my computer I'm super productive. My left hand isn't moving at all and my left's pinkie feels relieved because it doesn't have to bend to Control key. On other computers I'm totally screwed. As OP mentioned before, I have ruined my muscle memory.

</comment><comment><USER48> Does nobody use the Caps Lock key as a caps lock? Pretty useful for that.

<comment><USER49> If someone's editor has got a convenient way to capitalize parts after they've been written, I'd be interested in knowing how it works. You can invert case with ~ in vi, but it's not so great for #defines and such (you capitalize every letter in these, and ~ works on a letter at a time).

<comment><USER50> Vim provides operators for changing case: gu for lower case, gU for upper case and g~ for swapping case.

For example, gUaw changes the current word to upper case. guu changes the whole current line to lower case.

In visual mode, you can use just u and U.

Bonus useless tip: g? encodes and decodes rot13.

<comment><USER49> Thanks, I guess that explains why gg is needed to go to top. In my editor it's just g. Maybe I'll come up with something clever.

</comment></comment></comment></comment><comment><USER51> Using xcape and xmodmap, I remapped caps lock to behave like control when held and escape when tapped. That allowed me to remap control to hyper. I've really liked this setup so far.

</comment><comment><USER52> I use the same trick to remap caps lock to "shift+cmd+alt+ctrl" or "hyper". My configuration is highly centered around using slate with the standard h,j,k,l and also u,o,n to manage my windows. On top of that I also use the left side of my keyboard for focus binds, for example hyper+q is Chrome and hyper+e is iTerm2.

Here is my slate configuration for anyone interested: [https://gist.github.com/k0nserv/8151008](https://gist.github.com/k0nserv/8151008)

</comment><comment><USER53> I've used Autohotkey (Windows) to remap my capslock to select the word my cursor is currently in. Essentially pressing ctrl+left, then ctrl+shift+right. I too have become so use to this that using other people's keyboards is frustrating. I've taken this a couple steps further, shift+capslock selects the current line and ctrl+capslock activates Sublime's multicursor feature.

<comment><USER54> This won't work in everything, will it? What about if your cursor is at the beginning of a word? Not to mention that different editors stop in different places with ctrl+arrows. Many editors have a key combo for select word already. In Visual Studio it's ctrl-w.

<comment><USER53> I've been using it for about 1.5 years, and it's been mostly consistent between applications; Notepad being the only one I've noticed with odd characters it includes in the ctrl+arrow movements. I really like the approach using Autohotkey because it becomes universal on my system, so capslock can select words in chrome, IM apps, etc. I don't have to worry that the app supports that feature.

</comment></comment></comment><comment><USER55> I map mine to control. I switched from using "Escape" to ctrl-c in vim, which plays nicely with this key mapping.

<comment><USER56> FYI you probably want to use ctrl-[, ctrl-c has some cases where the behavior isn't the same as ESC

</comment></comment><comment><USER57> [https://upload.wikimedia.org/wikipedia/commons/7/71/Das_Keyb...](https://upload.wikimedia.org/wikipedia/commons/7/71/Das_Keyboard_closeup.jpg) The possibilities are endless, of course :)

</comment><comment><USER58> Disabling CAPS is one of the first things I do when I refresh a system. I've always wanted to find a better alternative, but as of yet, it hasn't presented itself.

I've thought about mapping it to alt+tab since I use VNC quite a bit.

</comment><comment><USER59> I am very unoriginal, uncreative, and uninovative.

Aside from browser and maybe calculator. What else would be good to hot key like the op author describes? Thanks!

</comment><comment><USER60> Caps-Lock should of course be remapped to Control.

<comment><USER61> Caps lock is already control - CRUISE CONTROL FOR COOL.

</comment></comment><comment><USER62> While on the topic of useless keys, what do you think of the Menu key?

I use mine for a drop down terminal (Tilda, or Yakuake before).

</comment><comment><USER63> sad how linux fell behind on keyboard customizations.

used to be the only place where i could replace caps-esc and use altGr for accents.

now windows with autokey(?) allows me to use caps as esc if pressed once, or ctrl modifier if pressed with another key.

i cant find a way to do that in linux now.

<comment><USER64> Scroll up, see kozikow's post about xcape.

</comment></comment><comment><USER65> Kinesis user: caps lock mapped to shift (home row), left shift mapped to escape (vim).

</comment><comment><USER66> Great post but it's over a year old. Shouldn't it be labeled as such?

<comment><USER17> That makes sense for news or trip reports, but what has changed about keyboards in the last year? Nothing I can think of.

</comment></comment><comment><USER67> I can't stand the caps lock key at all. I pop them all off my keyboards.

</comment><comment><USER16> XML? For _key remapping_? Seriously...?

</comment><comment><USER68> Mine's mapped to escape because vim.

</comment><comment><USER69> i ran org-mode with vim so i set caps lock key to ctrl and right Cmd key to esc.

</comment><comment><USER70> "I've become quite used to it — to the point where using other people's keyboards is inconvenient. " I stopped reading right there.

<comment><USER71> Why? Even without interesting remappings, aren't you more used to your own keyboard than someone else's?</comment></comment>


Are web startups vaccinated from recession? - <AUTHOR> http://nickholmesacourt.blogspot.com/2008/09/are-aussie-web-startups-vaccinated-from.html

<comment><USER2> OK so the actual title of the entry is "Are Aussie web startups vaccinated from recession?"

The simple answer is no, at least no more than anyone else is. The problem with this article is that the content means little to the title. His basic claim is that "good" startups with "good" business models that sell to businesses have a better chance of succeeding. As far as I can tell, that has nothing unique to a recession.

<comment><AUTHOR> _"... OK so the actual title of the entry is "Are Aussie web startups vaccinated from recession?" .."_

Title changed because it was irrelevant.

 _"... His basic claim is that "good" startups with "good" business models that sell to businesses have a better chance of succeeding. As far as I can tell, that has nothing unique to a recession. ..."_

It is a bit of a motherhood statement. _"Good"_ is at best a relative description. Probably could be changed to the _"best"_. What is unique to recessions is margins & necessities. If you are a running a good Startup and rely on margins alone and those margins drop or change quickly, be it users, advertising, sales. You can be killed a lot quicker than when there is no recession. In that respect recessions sort out what the essentials from discretionary that users want.

Make things that (recession conscious) users want?

<comment><USER2> Right, that is a better way of putting it. I imagine that is what the article was driving at, but I feel like it was lost a bit.

Also, to note, I was not saying you should not have altered the title, but rather that it seemed he was stating something specific to Aussie startups.

<comment><AUTHOR> _"... I was not saying you should not have altered the title, but rather that it seemed he was stating something specific to Aussie startups ..."_

I didn't see that. One thing I'm conscious of when posting local news to an international forum is the content & title relevant? I have probably missed something here. Did you spot something uniquely Aus?</comment></comment></comment></comment>


Survey results: ISO C++ feature proposals - <AUTHOR> https://herbsutter.com/2019/07/25/survey-results-your-top-five-iso-c-feature-proposals/ <comment><USER2> I'm pleased that people seem to agree that compile-time reflection is a no brainer, even though it still won't be coming until C++23 at the earliest.

I'm sick of the dumb preprocessor hacks required for something as simple as iterating through enum values with their string representations.

<comment><USER3> I would love that feature, and the ability to have a function that takes name + value pairs from a struct. However I suppose once you go down that rabbit hole, you may as well have all the features of annotating members and accessing that data too

</comment></comment><comment><USER4> Herb's error handling proposal is great. It's very similar to Swift's error handling – exception-like syntax, but with deterministic behavior. Glad to see it at #3 (with the caveat that it was obviously Herb's survey).

[http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p070...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r0.pdf)

<comment><USER5> I unfortunately quite hate the direction of not being able to write conforming programs that handle out-of-memory in a way that's distinct from terminating. That's a _great_ default for a large majority of systems, but e.g. for a database server it sucks. When the system is configured appropriately (which is not the default, and has its own sets of problems, in particular with fork()), postgres e.g. handles the vast majority of out-of-memory cases gracefully, by just failing the query that encountered the exhaustion.

With this proposal, that's effectively impossible to do, without either being non-conforming ("with the additional restriction that any installed new_handler must terminate"), or not using any standard library code (which is proposed to not throw any exceptions: "For each standard function for which allocation is the only reportable error, make the function noex-cept").

It's practically impossible to use only explicitly checked allocations everywhere. One can do it for allocations that are more likely to fail (e.g. because they're large), but not for every small thing. In postgres, it's my experience that a very significant fraction of real-world allocation failures are on small allocations, not huge ones.

Now postgres is currently C (but that's imo more historical baggage than anything, and has pretty significant costs), but this would effectively prevent us from taking advantage of a lot of C++ if we ever decided to move.

FWIW, postgres OOM handling basically works by doing allocations via it's 'memory contexts', which check allocation failure (obviously only really possible if the OS signals them, requiring e.g. to explicitly change the overcommit settings on linux). Allocation failures are handled by switching to a memory context that sigsetjmp's to a higher level. That higher level then releases resources by bulk-releasing memory using the memory context mechanism, and handles other resources (locks, other resources) via the related resource owner mechanism. But that mechanism is - as far as I know - impossible to do in realistic confirming C++, because one cannot call all the relevant destructors.

<comment><USER6> I'm not a C++ programmer but I noticed this conflict. C++ is adding features like coroutines that perform hidden allocations, while at the same time shifting away from exceptions. You can't have it both ways.

You can have hidden allocations, you just need an exception mechanism. It sounds like Postgres does this with setjmp/longjmp. That's typical. I do that with my JSON C library--[https://github.com/wahern/json/blob/master/src/json.h#L72](https://github.com/wahern/json/blob/master/src/json.h#L72) And setjmp/longjmp is how Lua implements its exceptions.

Lua is interesting in that it's a dynamically-typed scripting language that permits recovery from memory allocation failures in a rigorous manner. It doesn't add much if any complexity to the Lua implementation--if anything the discipline arguably helps keep things simpler. But it does require the Lua VM authors to always be mindful about maintaining consistency of the VM state. In particular it means they have to make sure all dynamically allocated memory is properly anchored in the object graph. This type of discipline isn't something you can refactor for after the fact, but it's not as difficult as it seems if you start out this way (modulo the lack of compiler enforcement). The Lua C API is also carefully designed--most routines are implemented and documented to _not_ do any hidden allocations. And unlike any other scripting language with a C API I've used or examined, Lua provides a plethora of convenient abstractions for keeping foreign data pointers anchored in the object graph, as well as the mechanisms and semantics that permit both C and Lua code to catch and reliably recovery from exceptions, including allocation exceptions.

By contrast, while Go _conceptually_ could provide OOM recovery--it has an exception mechanism almost identical to Lua's, and likewise uses non-copying GC--but much of the implementation makes the assumption that allocation never fails. As a practical matter correct, reliable, and consistent recovery from OOM isn't possible for Go. As I said, it's not the type of thing you can add after the fact. So instead you see a recapitulation of decades of myths[1] and contrivances[2] focused on "managing" memory. I only pick on Go because massive concurrency, and in particular massively concurrent network sessions, is it's niche. Even at "web scale" where you have the same Go process running on dozens or hundreds of other machines, this neglect to tackle allocation failure has resulted in often times exceptionally poor quality of service for Go apps. Without proper allocation failure recovery, "managing" memory becomes a black art rather than a science, with predictable results in terms of consistency and stability.

It's a shame to see C++ gleefully going down this road, seemingly having finally drunk the Kool-Aid and adopted the myth that handling allocation failure to too difficult and too error prone; that it's not your problem and something else higher up the stack will solve the problem for you. :(

[1] E.g. big allocations are more likely to fail

[2] E.g. reserving large blocks to be released according to some imaginative heuristic intended to predict and forestall allocation failure

<comment><USER5> > It's a shame to see C++ gleefully going down this road, seemingly having > finally drunk the Kool-Aid and adopted the myth that handling allocation > failure to too difficult and too error prone; that it's not your problem and > something else higher up the stack will solve the problem for you. :(

I think the reasoning behind this part of the C++ proposal at hand is a bit more complicated than that. It's imo worth reading section 4.3 specifically about the memory allocation issue, and the motivation for the whole exception overhaul in in section 2 (although that's a bit longer).

The reasoning isn't itself that it's too difficult or such, it's that the overhead required by something like the current exception handling is high, and that it's quite desirable to makr a lot more of the standard library as not throwing exceptions - and the only cause a lot of them throw, is OOM.

[http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p070...](http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r0.pdf)

</comment></comment></comment></comment><comment><USER7> Using libraries is such a pain in C++ compared to other languages that people choose worse libraries just because they come header-only. I don't understand why that is not a higher priority. Cargo is lightyears ahead of any C++ system.

<comment><USER8> Honest question because I don't know how cargo works.

How would a package management system for C++ work?

Would there be a centralized repository containing shared objects, static objects, and header files of all the packages? Who would pay for the hosting? How would you track which libraries are compatible with which compilers/OSes/architectures?

Seems like at this point it would be a herculean effort to create cpppm because of how fragmented the compilers/support is across systems. And so it would be a broken piece of garbage so people wouldn't use it.

<comment><USER7> A central repository is helpful but not strictly necessary. I just want to have a config file where I specify what version of a library I want and where the build system can fetch it and have that work recursively for dependencies.

<comment><USER8> > the build system can fetch it and have that work recursively for > dependencies

Which build system? CMake? SCons? GNU Make? Unix Make? Autotools? Visual Studio Solution?

Cpp libraries are far from having a standardized build system. And without a standardized build system, you can't do what you describe.

I suppose you could say "CMake is the standard" and then only support CMake- compatible libraries, but again, that leaves hundreds of packages out of reach.

<comment><USER9> And why are these build systems necessary in the first place? They mostly exist to work around the lame library ecosystem, where you never know what's installed or where to find it. Solving the "library problem" would presumably render these tools and their horrible complexity obsolete.

If there were some type of system where library A says it depends on library B (via a URL or some other non-centralized thing), and the compiler knows how to resolve this, then you don't need 90% of the features these tools provide. You still need build parallelization and maybe detection for non-standard compiler features, but this is a much smaller and simpler problem.

<comment><USER8> > And why are these build systems necessary in the first place?

Because C/C++ compilers are fragmented. And because C/C++ is not very portable. If building for windows -> pass a bunch of -D flags to the compiler. If building for Linux, pass a different set of -D flags. Different compilers require different arguments.

> If there were some type of system where library A says it depends on library > B ... and the compiler knows how to resolve this

Here's the crux of the problem. There is no organization that owns or maintains C++, unlike Rust. With Rust, there is only one compiler - rustc. With C++ there are at least 5 major ones maintained by 5 different (competing) organizations.

There's no way to do package management in C++ without massive build system rewrites. Consider:

I write a new C++ package called CoolCrypto. It depends on libssl. I wrote my package in CMake, libssl uses autotools. Barf, the package manager only speaks CMake and gives up.

</comment></comment></comment></comment></comment></comment><comment><USER10> What monsters put compile-time programming over concurrency and pattern matching?

<comment><USER11> But what if you can do pattern-matching at compile-time?!

<comment><USER12> 'inspect constexpr' is part of the pattern matching paper, IIRC.

</comment></comment></comment><comment><USER13> "Type Safety" is only at position #12. I would have expected that nowadays C++ programmers would have been a little more aware of the perils of a not-strong- enough type system.

<comment><USER14> We're already getting concepts, not sure why it'd be voted again

</comment></comment><comment><USER15> There's a helpful disclaimer section that states "Bias: I posted the poll on my personal blog, which could bias results in favor of my proposals."

Another bias all voluntary surveys are prone to is prone to that's not listed is [https://www.quora.com/What-is-voluntary-response-sampling- Wh...](https://www.quora.com/What-is-voluntary-response-sampling-What-are- some-examples)

So basically, don't use this data to make decisions :)

</comment><comment><USER16> I'm saddened to see runtime reflection up there, but heartened to see metaclasses.

It's also a painful topic, considering how vastly outdated Qt's use of C++ is, and how many libraries are doing similar.

Poor 'Copper Spice'!

<comment><USER17> What's wrong with runtime reflection? Seems more flexible and generalizable than inventing hierarchies of metaclasses, some of which include reflection accessors.

</comment></comment><comment><USER18> Is there a petition for making C++ less _ugly?_ There should be.

It's a Frankenstein's monster made of parts from other Frankenstein's monsters. If Lovecraft were alive today this would be his prime eldritch deity. An abomination of impossible geometries you could not make sense of even if your eyes could see in 4D.

<comment><USER19> Backwards compatibility is one of the highest priorities for C++, which is a significant constraint in removing "ugly" constructs and syntax. It can also force the use of verbose or unusual syntax for new features, even if the new features are a net positive for readability.

<comment><USER20> At least trigraphs have been removed from C++17, so they do what they can to remove ugly constructs within reason for backwards compatibility.</comment></comment></comment>


A database of over 500 iPhones cops have tried to unlock - <AUTHOR> https://www.vice.com/en_us/article/4ag5yj/unlock-apple-iphone-database-for-police <comment><USER2> serious question: all of the reporting around the FBI and its intentions focuses on iPhones. There is not much reporting about android phones, though. Is this because they are generally not as airtight in design as iphones are? Is it because iPhones are more likely to be up-to-date in terms of patches and security updates, and hence android is easier to crack? Is it because Samsung, Google, etc, have been more willing to play ball, so the FBI has not had to wage a public battle?

the article mentions it but not much detail:

> Android devices, on the other hand, end up having large variations in the > security of devices from different manufacturers, which may have their own > vulnerabilities or may have difficulty distributing security and Android > operating system updates to phones quickly.

<comment><USER3> My understanding is iPhones enable full disk encryption when a pass-code is created, even if it's fairly weak (1112), you can't have a passcode or password and not have full disk encryption. Android Devices past 9 do not support full disk encryption and instead use file based encryption, and as far as I know just having a password doesn't necessarily mean FBE is turned on.

<comment><USER4> If you have a modern Google branded device (say, a Pixel) encryption is mandatory out of the box. Something older (and so insecure by default because it isn't receiving security updates) like the Nexus 10 tablet has an actual user interaction step to enable encryption.

</comment></comment></comment><comment><USER5> This is useful but it would also be helpful to have a similar database of the opposite cases too.

Having a list of the times when a warrant was served and a phone unlocked with details of which OS+version, which jurisdiction and which unlock method would balance out the research.

<comment><USER6> it would be incredibly difficult to get data on this. LE is on a budget, and they're not the NSA. In Switzerland for example LE (such as Europol) uses the lab facility from "Kudelski Security" to crack mobile devices and help with forensics. Outsourcing this to a consultancy allows them to hide things like invoices to offsec shops (FinFisher, HackingTeam et al). So this is like a poor-mans NSA where exploits get sold/brokered with these companies who then help compromise the device. Still the budget means that they're using tools which might do all sorts of things. e.g. if you sell off-sec tools you might offer a feature that allows LE to copy (read) things from the device memory/storage.

The problem is that these tools not only allow you to read but actually write to the device. ("if you're a dev working for HackingTeam why on earth would you limit the feature to reading when you can provide r/w access?")

The implication is that it's as easy to plant things on a device as it is to retrieve info. And if you know that the device has 99.9% child porn on it but end up not finding any why not plant something that gets you to court order you desperately need to convict the suspect?

What you're asking for is transparency in a world that is very much opposed to this because they consider themselves the good guys. And the response from them is always: _" how dare you?!"_

<comment><USER7> You build up a rather imposing strawman! Do you really think there are authorities planting evidence on phones?

<comment><USER6> if a device that is taken from me by whoever without my consent would automatically lead me to assume that it has been compromised. whether that's the case or not is beside the point. if you're only worried about surveillance-capitalism maybe it isn't in part of your threat model. for me it is. there are plenty of people in LE who overstep simply because they can.

> Do you really think there are authorities planting evidence on phones?

I don't think so I know it. please read the HackingTeam leaks and other OSINT sources. you'll find plenty of attempts in them making every effort to do so. You don't need a tinfoil hat, just travel to an area that is hostile to your passport.

<comment><USER8> > HackingTeam leaks and other OSINT sources

I would love to read more about this if you can point me in the direction of those leaks and sources.

<comment><USER9> [https://theintercept.com/2015/07/07/leaked-documents- confirm...](https://theintercept.com/2015/07/07/leaked-documents-confirm- hacking-team-sells-spyware-repressive-countries/)

[https://wikileaks.org/hackingteam/emails/](https://wikileaks.org/hackingteam/emails/)

</comment></comment></comment></comment></comment></comment><comment><USER10> All this talk of iPhones, but what about Android? Is it trivial (or possible) for a nation-state to access the data from an encrypted android device?

<comment><USER11> I think the "fragmentation" in Android land is actually helping security. It's not economical to maintain hundreds of exploits for different vendors, CPU architectures and OS and patch versions.

For iOS, you need 2-3 up to date exploits to cover 80% of all devices.

</comment></comment><comment><USER12> I use a long diceware password for my iPhone. It prevents police from bypassing the rate limiter and brute forcing your password quickly. There's supposed to be a machine that allows them to do that.

Unlocking my phone throughout the day is done with Touch ID. If I think I'm going to encounter the police or be away from my phone, I press the lock button five times which disables Touch ID. I've been doing this for two years and it works great.

<comment><USER13> I've often heard this said, but my iPhone 8 doesn't operate like this at all. Touch ID still works regardless of how many times I press the lock button. Is there a setting I'm missing? I've looked around and couldn't find anything.

<comment><USER14> It ought to, this is an iOS 11 feature which is what the iPhone 8 shipped with.

I don't see any option for it in the passcode settings either.

On my iPhone SE it takes me to a screen with power off, medical ID, and emergency SOS sliders. To get back to the home screen after that I need to enter my passcode.

[https://www.imore.com/how-quickly-disable-touch-id-when- you-...](https://www.imore.com/how-quickly-disable-touch-id-when-you-need- extra-security)

<comment><USER13> >volume and lock buttons simultaneously

Aha, that does it!</comment></comment></comment></comment>


Users flee WhatsApp to Telegram after Facebook buyout, take networks with them - <AUTHOR> http://www.forbes.com/sites/terokuittinen/2014/02/25/telegram-facebook-hate-and-blackberrys-new-prospects/

<comment><USER2> I've heard a rumor that telegram was developed by the creator of vkontakre, the russian facebook clone.

<comment><USER3> [http://techcrunch.com/2013/10/27/meet-telegram-a-secure- mess...](http://techcrunch.com/2013/10/27/meet-telegram-a-secure-messaging- app-from-the-founders-of-vk-russias-largest-social-network/)</comment></comment>


Ten Years After Decriminalization, Drug Abuse Down by Half in Portugal - <AUTHOR> http://www.forbes.com/sites/erikkain/2011/07/05/ten-years-after-decriminalization-drug-abuse-down-by-half-in-portugal/ <comment><USER2> Drug abuse might be down, but homocide and drug mortality rates went up. <http://elsa.berkeley.edu/econ/ugrad/theses/yablon_daniel.pdf>

</comment><comment><USER3> I wonder how much of that is due to the economy.</comment>


CLI RSS: RSS with Newsbeuter - <AUTHOR> http://blog.sanctum.geek.nz/rss-with-newsbeuter/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+arabesqueblog+%28Arabesque%29&utm_content=Google+Reader <comment><USER2> There have been tons of posts regarding alternative RSS readers on HN lately, but most of them do not quite get what made Google Reader special.

There have always been other RSS readers, but Google Reader synchronized your feeds between machines. One could read their feeds between work/home/mobile/tablet and have a consistent view on what is read/unread and organized exactly how you want it.

It is not the reader, it is the service behind the reader.

<comment><USER3> Hi, I'm the developer of newsbeuter. I absolutely agree with your last sentence in that's what many users expect from an RSS reader. That's why newsbeuter supports Google Reader and TinyTinyRSS as services, and soon will support Feedly as soon as I can get access to a test system for their Google- Reader-compatible API (aka "Normandy"); support for other services will follow.

</comment></comment><comment><USER4> For a long time, I was looking for a reader that allows to export not only the subscriptions, but the actual news archive. With newsbeuter I can easily access the sqlite database and export all the news.

</comment><comment><USER5> On the notion of CLI RSS readers, I'd recommend to have a look at canto.

</comment><comment><USER6> I tried newsbeuter once before. I prefer CLI programs for most things, but enough feeds I follow depend on pictures (ok, maybe just xkcd) that it wasn't worth it.

You can hook it up to urlview to open links or the original article (as long you're running it locally, not in a remote screen), however - that was a nice touch.</comment>


Steve Jobs speaks out about his health - <AUTHOR> http://www.apple.com/pr/library/2009/01/05sjletter.html

<comment><USER2> I really don't like the treatment of his health. It's just kind of low class that thousands of people are paying such close attention largely because they'd like to maintain the value of their stock or short at the right time.

I certainly agree that Apple without Jobs isn't as good. But this treatment is morbid.

The note at the end about saying more than he wanted is really sad.

<comment><USER3> The secrecy surrounding the health of superstar CEOs reminds me of the way the major sports leagues used to handle injuries. NFL teams, for example, used to be quite cagey about their players' health---a practice you could easily defend on the same grounds people use to defend CEOs like Jobs. The problem is that, propriety aside, injury information is _extremely_ valuable, especially to gamblers, and the result was that oddsmakers went to great lengths to acquire injury information surreptitiously (by bribing trainers, etc.). Eventually, the NFL (and other leagues) decided to stop denying reality and institute formal injury reports; now all teams are (relatively) forthcoming about players' injuries.

As with athletes, and like it or not, CEO health information is often quite valuable. Vilifying those who seek to ferret it out is just shooting the messenger.

<comment><USER4> Remember an athlete's injury is usually not life threatening. A broken leg is significantly different from pancreatic cancer.

<comment><USER5> Missing the point. It's all about value. A broken leg is is an impediment to an athlete. A pancreatic cancer, along with its treatment, is a hurdle for a CEO.

</comment></comment></comment></comment><comment><USER6> That sound you hear? The shuffling of papers and stomping of feet as editors order their writers to "dig up everything you can" on hormone imbalances.

<comment><USER7> In particular, are hormone imbalances frequently comorbid with, say, pancreatic cancer?

<comment><USER8> Jobs doesn't have typical pancreatic cancer, or he'd almost certainly be dead by now. He has a carcinoid, some of which do pump out hormones that can cause effects like weight loss (and nausea, diarrhea, etc.). These symptoms are treatable.

My father in law has a variety of this. He lost something like 70-80 pounds before they got it under control, but has been doing well for years now.

<comment><USER9> Also, he's a vegan which could complicate his nutritional problems.

<comment><USER10> Yes he mentioned it was a nutritional problem, with a simple solution - chances are for years he has been depriving himself unknowingly of something important.

<comment><USER11> Uh, no, chances are not that. Unless you are very stupid (and I don't think he is....) you can get what you need with just about any diet.

<comment><USER12> Replace that with "Unless you are reasonably smart (and I think he is) you don't get what you need with certain diets."

The issue with vegetarianism is that humans are not meant to eat just vegetables. Therefore, great care must be taken to get certain nutrients which are not found often in vegetables. Protein is the big one, but there are others.

However, with a properly crafted diet (an issue that most? vegetarians run into) you should be able to get everything. (possibly with the aid of supplements).

<comment><USER13> Yeah. Have you ever seen the food schedule for someone who beat cancer? Surf and Turf. Steak and Potatoes. Salmon and Chicken. 4 or 5 meals a day once your appetite comes back.

Cancer treatments typically deplete the body of protein and lean tissue, and most doctors agree that eating meat is just the fastest/easiest way to recover.

Its possible/probable a macrobiotic diet could contain enough protein and still be 100% vegan, but if there's another "imbalance" (say GMO Soy or Legumes which contain Estrogen) that could create issues he's had to deal with during his recovery.

<comment><USER10> When I was in the UK I tried out "quorn" - I think that was how you spelled it. Basically a fungal/mushroom grown substance that is high in protein. All the vegoes I knew loved it (actually it tasted good to me), that and lots of beans/legumes.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I am glad that Steve remains in pretty good health. Thank goodness. I'm a little disgusted at how all this concern about the quality of Apple gadgets and the price of Apple stock trumps simple human concern for a fellow human being.

<comment><USER15> I heard some of Job's speeches on philosophy and it really resonated with me. I think he's a really cool guy even if he's a bit arrogant. The real value is in who he is.

<comment><USER16> Wha..? Where would one go to read or hear these speeches?

<comment><USER15> Jobs gave an address to Stanford university's graduating class in 2005. Here's a link to youtube if you want to watch it:

www.youtube.com/watch?v=D1R-jKKp3NA

It was quite interesting and spoke deeply to me.

<comment> jim-greer He covered his health in that speech, but according to this CNN piece he was pretty misleading.

[http://money.cnn.com/2008/03/02/news/companies/elkind_jobs.f...](http://money.cnn.com/2008/03/02/news/companies/elkind_jobs.fortune/index4.htm) (Scroll about 1/4 of the way down)

If he's going to talk about his health, he should be more straightforward than this.

I think once you're the CEO of a Fortune 500 company, your responsibilities to your shareholders mean that you need to be more forthcoming about your health than he has been.

<comment><USER13> No, you need to be more forthcoming with your board of directors, some of which (Al Gore) are close personal friends and can keep their mouth shut to the press if it really is a "private matter".

The fact that Apple's board hadn't take any action was (to me) a clear indication that he was A-Ok. Steve might be exceptional, but the rest of the senior management has Sarbanes-Oxley to contend with -- meaning they could face jailtime for any intentional falsification or misleading statements given to the board of directors. And the board/stockholders have been extremely watchful ever since the backdating options/SEC Probe scandal a year or so back.

</comment></comment></comment></comment></comment></comment><comment><USER17> It is interesting to contrast the different approaches taken by Steve Jobs and Sergey Brin with regards to information about health issues. Sergey seemed to be trying to open/crowd source his (potential) problems where as Steve has taken the closed/inhouse source approach for as long as possible.

I can understand his position though and hope he makes a full recovery. But can't help thinking that if he released more details, an army of both qualified and unqualified Mac fans would have spent countless hours researching the problem and possibly come up with a solution sooner.

<comment><USER18> You know, I think I would place more faith in a team of highly-trained and paid doctors who are intimately familiar with his situation and medical record than I would in "the crowd". Especially considering the fact that doctors keep all the embarassing little details confidential (and let's face it, being in ill-health is embarassing to most, and especially someone who takes such pride in being "a force of nature" like Jobs does).

<comment><USER19> I think both approaches can have merits. Doctors are only human, and they are not always right.

<comment><USER12> Yes, but the human body is complicated. I would not trust a non-professional for any sort of nontrivial diagnosis. Enough people don't understand the fundamentals of medicine (look at the success of airborne and homeopathy) that crowd-sourcing is of dubious quality.

You can get second opinions, but generally it's smart to stick to doctors for them.

<comment><USER17> Of course you wouldn't follow a non-profession's diagnosis withour further support or verification. But I do think that crowd sourcing would probably be able to find and identify the correct solution faster a few experts. As long as the process allows the views of those with higher levels of knowledge to predominate then it would work. In this case I believe there would be many professionals who would devote some time to look into the matter.

Apart from you privacy the worst you are risking would be to waste some of your expert doctors time in considering some additional possibilities.

</comment></comment></comment></comment></comment><comment><USER20> Gizmodo was part of the problem Steve referred to, and they're still at it trying to cover their mistake. Their "updated" article still says that Steve is not doing the keynote because of his health, yet nowhere in the letter does Steve even imply that.

[http://gizmodo.com/5120687/steve-jobs-health-declining- rapid...](http://gizmodo.com/5120687/steve-jobs-health-declining-rapidly- reason-for-macworld-cancellation)

<comment><USER21> "A few weeks ago, I decided that getting to the root cause of this and reversing it needed to become my #1 priority"

I'd say he is in fact implying that his decision was related to learning about his health problem.

</comment></comment><comment><USER22> I hope everyone is happy now and can get over it. It's sad he had to come to this.

Why is it your business to know about every detail of his personal life? And don't give me this 'I'm a stockholder, I deserve to know' BS. Apple isn't going to magically fail overnight.

3%+ shift in Apple stock since this press release hit. 100% decline in Steve's dignity.

My thoughts and wishes are with Steve and his family.

<comment><USER9> If Steve Jobs died tomorrow, Apple's stock would fall a gigantic amount and anyone who owns it would be totally screwed, at least in the short term. It is in Steve's best interest to at least give people a small idea of what is going on with him, so they can gauge risk. I personally think that's a sacrifice a person has to make to be a CEO.

<comment><USER23> _It is in Steve's best interest_

Really? Why?

<comment><USER24> The justification is contained at the end of the sentence you're quoting.

<comment><USER23> I disagree:

 _to at least give people a small idea of what is going on with him, so they can gauge risk_

That's not in his best interest. It is in the stockholder's best interest, the company's best interest and (perhaps) that market's best interest.

I fail to see how it is in Jobs's best interest.

<comment><USER24> It in Job's interest to serve his shareholder's interest.

</comment></comment></comment></comment></comment></comment><comment><USER25> I'm glad that Steve gets "sophisticated" blood tests, I wouldn't want him having those simple ones.

<comment><USER26> I think the word "sophisticated" there is to mean something like "we're pretty sure we figured it out this time".

<comment><USER25> which is, of course, not at all the meaning of sophisticated? Which was my point.

Anyway, I just thought it was a funny word to use there, and people have been modding this comment probably more than any other comment I've made. Inverse importance/modding relationship for the win!

</comment></comment></comment><comment><USER27> wow. i think that's the first time jobs has ever tipped his hand in reaction to stories in the media.

i don't know if it's just because it's so out of character for him or what, but i don't like it.

<comment> a-priori I think it's sad he feels compelled to reveal this personal information.

<comment><USER27> a great deal of apple's strength is that they don't follow trends. if they listened to what the industry thinks, they would license osx for plain-vanilla pcs, compete against ugly low-cost hardware from their competitors, etc etc etc, until they were indistinguishable from dell or hp, and therefore completely uninteresting.

apple's refusal to follow trends comes right from the top. yes, it can be construed as arrogant that jobs hasn't commented on his health before now. but that's his way. this methodology has downsides, but it keeps the company from slogging it out in the sewers with all the other commodity manufacturers.

this announcement is a reaction to outside pressure, which is the opposite of what makes apple great.

<comment><USER28> "a great deal of apple's strength is that they don't follow trends. if they listened to what the industry thinks, they would license osx for plain-vanilla pcs, compete against ugly low-cost hardware from their competitors, etc etc etc, until they were indistinguishable from dell or hp, and therefore completely uninteresting."

They did exactly this a year before Jobs came back. In spite of Jobs's claims to the otherwise, the experiment did not last long enough to indicate whether it would have been viable in the long term. What is clear is that the clone makers where releasing computers more expandable and powerful than what Apple actually had on the market.

<comment><USER29> But Apple isn't just about powerful computers. It's about the Apple way. And for better or for worse, that means focusing on the complete package of the computer.

"Completely uninteresting" in exchange for "expandable and powerful" is not a good one for Apple to make.

</comment></comment></comment></comment></comment><comment><USER30> Please get well or just die soon please so we can stop reading about it. Thank you, have a nice day.

</comment><comment><USER31> OK, so he has now upped the ante. Either he's being completely truthful -- and AAPL stockholders have less to worry about -- or he's lying outright. If he's lying, people will go to jail. If Steve dies, the SEC will find others complicit in this lie and they'll do serious time.

<comment><USER29> Do you _really_ think Steve Jobs would lie about his health like this? What reason does he have? Why would he invent something like hormone deficiency? Why would he lie about being at risk of his life?

<comment><USER32> People lie^H^H^H spin all the time, Jobs included, for all sorts of reasons. They also carefully choose words and what to reveal to make statements that are unfalsifiable/defensible, but still give the wrong impression to most readers.

I believe what Jobs has written here is substantially true -- the identifiable incentives for him and the company are to reveal the smallest amount of true information possible to assuage fan and investor fears. But there always remains a nonzero chance he's using his famous 'Reality Distortion Field'. So sabat's point in the grandparent post is fair.

<http://en.wikipedia.org/wiki/Reality_distortion_field>

</comment></comment></comment><comment><USER33> A guaranteed rise in stock price!</comment>


If You Were the Next Steve Jobs - <AUTHOR> http://blogs.hbr.org/haque/2012/09/if_you_were_the_next_steve_job.html

<comment><USER2> Customer: This small coffee is too big. I just can't slug that much head fuel right now, man. Do something for me!

Barista: OK, let me fix that for you.

(Barista pours out half of the coffee and hands the cup back)

Customer: Dude, you have blown my mind. This event will change the ways in businesses will operate in the 21st century. Steve Jobs gets it and you fucking get it, man! You get it!

Barista: Yes, Steve Jobs, that's me, thanks. You need anything else?

Customer: I'm going to be right over there watching you and blogging the shit out of this monemental moment.

Barista: Yeah, yeah, I know you're here like 8 hours every day doing that. OK, anything else I can get you?

Customer: What is your SECRET?!!! Jobs. Steve Barista Jobs. That's you ... I am learning from you.

Barista: I'm thinking of calling the cops actually.

</comment><comment><USER3> "Profit is a solved problem: we know, to a pretty good approximation, how to make companies profitable."

This whole article was somewhat laughable, but this phrase in particular stood out to me.

<comment> k-mcgrady I think, until recently, that statement proved correct. You created a product or service, sold it for more than it cost to make/run, and voilá - profit. Companies didn't have millions of free 'customers' while they worked out a way to make money.

And even when I look at the big web companies that spent years 'figuring out a business plan' it always ends the same way. They put advertising on the product (although it's a new type of advertising never seen before) and the battle is over. Most of the time, if you have an idea and can't figure out how it will make money, it's not worth pursuing as a business (unless you love the idea and you can afford the huge risk).

</comment></comment><comment><USER4> _> Consider: Starbucks will make your coffee to their specifications (extra- hot triple venti soy latte with caramel!). That's just the same car, with a different color scheme. What James made for me at Kaffeine was a coffee deftly, expertly created to make a tiny, slight, yet very real difference to my life, on the spot. Now that's singularity. _

Both are customized (personalized) products. In that regard they are the same. The difference is in the social layer and the transaction details. Instead of James giving the barista the exact specifications of his coffee ("I want a smaller one"), he told the barista what his problem was ("This coffee is too big"), and the barista customized the product for him.

Could James have figured out on his own that he needed a smaller coffee and just told the barista that's what he wanted? Sure. But it's more fulfilling for both parties to share a problem and get back a solution rather than just delivering on a spec sheet.

Most of us can relate in our work. Rather than a project like: "Here are the specs, when will it be done?" we tend to prefer: "Here is an idea, do you think it can be done?"

<comment><USER5> > Rather than a project like: "Here are the specs, when will it be done?" we > tend to prefer: "Here is an idea, do you think it can be done?"

Or even, "here is a problem, how can we solve this?"

</comment></comment><comment><USER6> I think the short answer to this question is "...almost anything, just do it significantly better than anyone has ever done it before."

the "almost anything" can be something no one has ever done before, or perhaps easier, something that is being done by others, but not well. "Significantly better" is where the magic comes.

N.B. starbucks has something called a "short" coffee which is not on the menu (smaller than a tall). I also thought a "half shot" cappuccino was not that uncommon.

</comment><comment><USER7> Steve Jobs wouldn't have needed a 1873 word essay to make this point (which doesn't make sense).

(Hey, if you're gonna scam for page hits with a title like that, you're asking for it.)

<comment><USER8> Yeah. And it was about the barista giving him a slightly smaller coffee.

</comment></comment><comment><USER9> When he started off with the coffee analogy, I lost interest in the article. Quickly.</comment>


Email to Postal - <AUTHOR> http://www.email2postal.com/

<comment><USER2> I signed up to try it out.

I actually think the convenience could be a huge win. I already see lots of potential in the UI. Some thoughts I had:

1\. Bridging the gap between digital and analog is not a bad strategy if you can bring all the advantages of digital along with it.

2\. Already their UI lets you queue up letters to send, schedule letters for particular days, save drafts, etc.

3\. It could track more metadata in the digital world, i.e. all sorts of other mechanisms like custom fields/notes to help you track these against customer problem numbers or account numbers at a business. Automatically support using a Google Doc, etc.

4\. I suppose an API to tie it into your own applications could be pretty nifty. Especially if they get to the point of allowing businesses to get more bulk mailing options that are much cheaper than $1 a letter.

5\. As I mentioned earlier, add support for a community of user-generated content of greeting cards that can be voted/upvoted,

6\. Add support for viral/political/consumerist letter templates that can be shared/embedded. Provide a link and let people pile onto a letter-writing campaign. It might look like astroturf, but could allow people to at least scribble an electronic signature.

Lots of potential here. Just need to follow through. I'll see how my first letter looks.

</comment><comment><USER3> The cost of credits is: _$10.00 - 10 credits, $20.00 - 22, $30.00 - 33, $40.00 - 45, and $100.00 - 110._

So the cheapest per-credit cost is at $40. And there is no price difference between the $20, $30, and $100 options as they all give 10% more credits than dollars.

</comment><comment><USER2> They have greeting cards, too. I think this service could do well if it emphasized that.

Advice/Request: Can you add user-generated greeting cards like threadless does for T-shirts?

If you do, I think your service will win. Thanks! Bye!

(not sure if the founder is reading this, of course)

<comment><AUTHOR> I'll make sure he sees this. I just sent him the link.

</comment></comment><comment><USER4> I don't get it. When I need to mail a letter, why can't I just send it myself?

Hint: If there are some good usage scenarios, it would be good to explain them on the home page. Customers evaluate new products by their benefits, not their features.

<comment><USER5> laziness, i assume. here's the steps i need to take in order to mail a letter: (a) buy a printer/set it up (b) buy paper/envelopes (c) visit the posto office with my sealed letter, so that they can tell me how much it will take to ship it to some destination abroad (because how the hell would i know)

for something i do, maybe, once a year, that's a hell of a lot of work

and, no, i _don't_ own a printer. it's not useful in the general case. ditto television. my toaster oven rocks the house, though.

<comment><USER6> The same way I am, I mail so rarely that I usually dont have any stamps, and when I do they are usually the wrong amount (seems to change often). So I need to spend the time to find the correct price, maybe go buy more stamps then mail it. If I could just use a service like this I would probably do it. Although when I do have to mail things I usually have to include things so its a manual process anyway.

Maybe this is tailored to use for complain letters or threats that people don't want coming from their geographically location...?

</comment></comment></comment><comment><USER7> Earthclassmail.com does the reverse - it's for people living abroad who still need access to postal mail

"Thousands of customers in over 130 countries are using our service right now. They have their postal mail forwarded to one of our processing facilities, instead of to an office or home address, and then they can view scanned images of each envelope's exterior (via a secure online account) and direct us to..[open it+scan the contents/discard it/shred it]"

<comment><USER8> Interesting...and kind of scary. I think I'll keep relying on my parents for a while yet:-)

</comment></comment><comment><USER9> Thanks for the comments and all the good ideas - we'll revisit the font complaint below and think through some of the other suggestions.

International goes online within the next few days, as does the ability to include a photograph (4x6 glossy print).

Thanks for mentioning the unicode as well; we'll be sure to begin testing that. As for pre-written and shared political letters, that's a great idea we've been considering.

email2postal.com

</comment><comment><USER10> The indian post office has been doing this for over 10 years.

<comment><USER11> <http://www.indiapost.gov.in/Netscape/epost.html>

(About 15 cents per page)

</comment></comment><comment><USER12> Hey, it's sort of like Gmail Paper but it's not April 1st yet.

<http://mail.google.com/mail/help/paper/more.html>

</comment><comment><USER13> The non-parallelism in the name of this service is really a problem as far as brand and influence goes, but I'm interested to see if the service is actually useful.

</comment><comment><USER14> An API-accessible variant: <http://www.postalmethods.com/>

</comment><comment><USER5> interesting service that, i suspect, might actually find an audience. i, for instance, wouldn't mind using it to communicate with some friends abroad. speaking of which--i hope they print unicode okay?

<comment><USER15> I'm pretty sure they wouldn't send mail abroad for just a dollar. And indeed they serve "US Domestic, APO, FPO" ie within US, plus US military mail.

</comment></comment><comment><USER16> USPS.com already lets you upload or type in a document to send as hard copy mail.

<comment><USER17> Can you provide a specific link?

</comment></comment><comment><USER18> Its almost a parody of itself. Part of me wants to believe its in jest.

</comment><comment><USER19>
        font-family: "lucida grande", "lucida sans", verdana, tahoma, arial, sans-serif;

Bad call on the font choice...

It's sad that the first thing I notice when visiting websites nowadays is the usability/design of it</comment>


Google Plays A Trick With Halloween Logo (Go Try It) - <AUTHOR> http://mashable.com/2009/10/31/halloween-2009-google-doodle/

<comment><USER2> I've noticed the new layout. I don't like it.

Sure I can use it just fine. But I liked having the option of "feeling lucky" even though I rarely used it.</comment>


Asana Engineering Community Update: August 21-25 - <AUTHOR> https://blog.asana.com/2017/08/asana-engineering-update-825/ <comment><AUTHOR> This is our first community update, let us know what you think!</comment>


Don't remove the $(nop) command below - <AUTHOR> https://github.com/rust-lang/rust/blob/efec34a95a76212b2324d98f3f6d94a1397c2544/mk/prepare.mk#L44-L51 <comment><USER2> It was removed here, with a partial explanation:

[https://github.com/rust- lang/rust/commit/fca66702a44038b14d8...](https://github.com/rust- lang/rust/commit/fca66702a44038b14d8f9bd282ad56c04e9fdcf6)

        "Adding blank lines means two steps from different defines will not end up on the same line."

<comment><USER3> I was about to say, don't bother submitting a patch to fix this, as last week rustc completely moved away from make, deleting all its makefiles in the process: [https://github.com/rust- lang/rust/pull/39431](https://github.com/rust-lang/rust/pull/39431)

I'm curious how OP even ended up trawling old versions of rustc's makefiles from 2014. I bet there's an interesting story there. :P

<comment><USER4> I blame this twitter thread :P

[https://twitter.com/Gankro/status/831955401109360640](https://twitter.com/Gankro/status/831955401109360640)

<comment><USER5> The thing I actually kind of think is amazing is that someone said "This isn't working... why don't I try putting in a $(nop) here...?"

<comment><USER6> Maybe there was something else there before, and it stopped working when they removed it, so they tried adding back the most minimal thing they could think of as a sanity check.

<comment><USER7> "Why doesn't this work?". Add debug statement. "Huh, now this works". Take out debug statement. "Huh, now it doesn't work". Try no-op. Table flip. Commit.

<comment><USER8> I love Heisenbugs because I have seen one in the wild. It's the most absurd thing ever.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Ah good, now the whole world gets to enjoy the greatest Makefile ever. For other curiosities of Rust's history and bootstrapping process, I recommend brson's annotated stdlib:

[https://github.com/brson/annotated-std- rs/commit/e50c2b16455...](https://github.com/brson/annotated-std- rs/commit/e50c2b16455ceff29488bf1f058b6c10906ef990)

<comment><USER2> That was a much more interesting read than I anticipated.

<comment><USER10> Thanks, that sucked me in. Starting after line 93 it gets downright fascinating. Have written commercial compilers but not self-hosted so it was illuminating

</comment></comment></comment><comment><USER11> Reminds me of the R4300 multiply bug, and the lazy compiler fix that just always emitted a nop between them if it saw two mults in a row. It was a real, hardware bug tho.

<comment><USER12> Very often hardware bugs can be worked around by well-placed NOP.

Last time I did that was on MSP430, where it seems that some integrated peripherals set completion interrupt flag one cycle before the operation really completes. (I'm not sure whether it really is bug, I didn't find this documented anywhere, but for TI's example this does not matter and produces marginally better performance)

<comment><USER13> Which MSPs, if I may? I use some of their 2xxx hobbyist line (since I'm a hobbyist), and this sounds like the kind of PITA that I'm not nearly enough of an embedded dev to avoid tearing my hair out over.

<comment><USER14> The MSP430x5xx and MSP430x6xx families have this problem. From the user-guide [1]:

> Include at least one instruction between the clear of an interrupt enable or > interrupt flag and the EINT instruction. For example: Insert a NOP > instruction in front of the EINT instruction.

> Include at least one instruction between DINT and the start of an code > sequence that requires protection from interrupts. For example: Insert a NOP > instruction after the DINT

Luckily if you use the MSP compiler's intrinsic functions to enable/disable interrupts it takes care of this for you.

[1] [http://www.ti.com/lit/pdf/slau208](http://www.ti.com/lit/pdf/slau208)

<comment><USER12> What I described happened on G2553 with USCI_A in SPI mode. Given the fact that various code samples on the net do not handle this behavior it seems that it is either happening only for some configurations or only on some versions of the HW. But: when you see even bytes on SPI dropped or replaced with previous ones, add NOP.

</comment></comment></comment></comment></comment><comment><USER15> Looks like they're using make as way to much of a programming language instead of the IMO much better declarative approach, way too many loops and function calls rather than dependencies. I'm not sure but it also looks like it's building too many things instead of different build for different configurations.

<comment><USER16> I dunno, I've never seen a readable Makefile in any system above say 300 files. If you could write readable declarative Makefiles getting the job done, would there be autotools? This is not to say that autotools get the job done beautifully, just that their existence demonstrates how the problem gets us all contort violently to terrible effect like a wounded animal screaming and running into trees.

I admit that I despise make and maybe I don't get the beauty (I get the beauty of the _idea_ but I've never seen it result in actual beautiful Makefiles), and maybe if you linked to what you consider a good open source Makefile, we could discuss this in more concrete terms.

<comment><USER15> > I dunno, I've never seen a readable Makefile in any system above say 300 > files.

The build complexity should be a reflection of the project complexity, not the number of source files. Having to run in multiple environments and separating things into libraries would add complexity for instance, adding a new source file shouldn't. When you start adding calls and loops however, that complexity grows exponentially instead of linearly. This isn't make specific.

> I admit that I despise make and maybe I don't get the beauty (I get the > beauty of the idea but I've never seen it result in actual beautiful > Makefiles), and maybe if you linked to what you consider a good open source > Makefile, we could discuss this in more concrete terms.

Here is one I put together ([http://flukus.github.io/2016/11/30/2016_11_30_Rediscovering-...](http://flukus.github.io/2016/11/30/2016_11_30_Rediscovering- Make/)), I tried to make it somewhat real world but there are obviously many caveats, it's dealing with c# (easier to build), dependencies come via nuget, but I think it shows the idea.

The most common anti-pattern I see (again, not just in make) is thinking that there has to be one build that does everything, it will iterate over target OS's and/or environments and produce a build for each one for instance. It's much cleaner to have the OS/environment be one or more parameters and to execute the build script multiple times with the desired parameters.

Developers have a tendency to not realize build scripts are a seperate discipline worth learning.

<comment><USER16> You use $(shell) and sed in there which I don't think is much different from $(foreach), and perhaps it's gnarlier. Perhaps my counterpoint is "a build system is a program using a library/framework for scheduling work based on dependencies" and make's insistence on builds being about the dependency graph and delegating programming to shell commands and afterthoughts like $foreach, plus its very painful evaluation model with unclear order make for a terrible programming environment.

<comment><USER15> A big difference is that using sed is producing a single known output that is clearly evident, it's much less clear what all the loops and calls is producing, it may even be an example of premature abstraction.

I don't think relying on shell commands is a bad thing though, it's just part of the unix philosophy, every build tool in existence will call external programs like the compiler itself. I doubt you could find another build tool that can replace values as simply as sed. The shell command would actually be unnecessary on newer versions of make.

Totally agree on the evaluation model though.

<comment><USER16> Well, I guess I agree with Rob Pike in that the "tools doing one job and doing it well philosophy is dead and the eulogy was delivered by Perl." I think you should write build rules in a programming language and a programming language is something that doesn't make you upgrade to a new version to avoid shelling out to find. Let's agree to disagree :-)

</comment></comment></comment></comment></comment></comment><comment><USER17> Reminds me of a bug we encountered building mobile devices.

Turns out if a certain instruction was executed on a page boundary the CPU would lock up (the gist of the issue anyway, might have had to do with being in an elevated mode as well). Appeared to be a problem in silicon. Unfortunately I can't remember enough details but a NOP or strategically placed variable solved it.

</comment><comment><USER18> Reminds me of the story of The Magic Switch:

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

</comment><comment><USER19> Reminds me of the time my team found a bug in the .Net C# compiler. A whole branch of an if/else statement was being ignored, as in, it simply wasn't present in the emitted IL.

Adding a little `&& 1 == 1` to the conditional made the compiler do the right thing again.

Edit: preemptively, no there wasn't anything special or weird about this conditional.

</comment><comment><USER20> A better comment would describe a test case that would allow to quickly confirm that the command can be removed when the compiler bug is fixed. Because otherwise it can be there for ages, because everyone will be afraid of touching the code.

</comment><comment><USER21> There's a story I've heard that ends with the real reason being that the author thought it would be funny to have people asking him why there were three consecutive nops years after the fact.

</comment><comment><USER22> Ah good old makefiles. This reminds me of this one which I discovered via a recent HN-submission[1].

Falsehoods programmers believe about build systems: [http://pozorvlak.livejournal.com/174763.html](http://pozorvlak.livejournal.com/174763.html)

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

</comment><comment><USER23> I wonder what voodoo it actually does. Would this be traceable in the compiler?

<comment><USER24> This is a makefile, so no. What you could do is replace the $(eval $(call PREPARE_LIB,libname-glob)) lines wherever they are with $(info $(call PREPARE_LIB,libname-glob)) and see what actually expands. But I suspect they've either tried that, or the usage of this macro in conjunction with other macros is so complex that it's not super-easy to parse the output and find the problem.

Make is so useful that I'm willing to live without things like a debugger and useful error messages in order to have the flexibility to implement a build system.

<comment><USER25> Merry christmas: [http://bashdb.sourceforge.net/remake/](http://bashdb.sourceforge.net/remake/)

</comment></comment></comment><comment><USER26> There's likely a data bubble or dependency in the CPU pipeline that needs an extra few picoseconds to fetch the correct data.

<comment><USER27> What is a "data bubble"? How would what you're describing not be a hardware bug?

<comment><USER13> > What is a "data bubble"?

A common result of moving instructions through early processors at too high a rate to maintain laminar flow. Early cryptographic algorithms in particular were severely limited by such considerations, until the advent of modern pipelining algorithms vastly reduced susceptibility to data cavitation.

As a point of historical interest, the "dataflow" paradigm in programming originated as an alternative approach to solving this problem, which attempted to avoid it entirely by having everything happen at once all over the place through magic. Between the misnomer and the heavy drain on the limited market for wizard labor, it's easy to see why the paradigm, though intriguing and not without useful lessons, failed to gain meaningful traction in the industry - perhaps ironically, there was just too much friction for it ever really to take off.</comment></comment></comment>