WordStar: A Writer's Word Processor (1996) - <AUTHOR> http://sfwriter.com/wordstar.htm <comment> TD-Linux I have a copy of WordStar running on an Franklin Ace 1200 (Apple II+ clone from 1983)... it runs WordStar via a Z80 peripheral card that runs PCPI CP/M while talking to the Apple 6502 to use the rest of the peripherals. So even then people were using workarounds to keep on running WordStar on newer hardware...

I still write letters with it and print them on my dot matrix printer. I certainly wouldn't reach for it over emacs in the modern era, though.

<comment><USER2> You can't call the Z80 card a 'workaround'! Shameless ingrate...

<comment> TD-Linux Well, I suppose it is one of the fastest CP/M computers around... especially because it's the PCPI Applicard (or rather, Franklin's licensed version) instead of the Microsoft Softcard, which means it runs at 6MHz and has its own dedicated 64k of RAM.

</comment></comment></comment><comment><USER3> I'm an writer in my spare time, my writing PC is a basic text only FreeBSD install.

I use joe or vim and put everything in git for easy transfer and backup.

For me, I need as little destruction as possible, I even find auto spell check with its red underlining completely destructive when it comes to my flow of thoughts.

<comment><USER4> You probably mean "distraction" and "distractive", right? Or perhaps that's just a pun flying by my head. :)

<comment><USER5> It's over of those typos that seems completely right when you're dealing with an unwelcome distraction.

</comment></comment></comment><comment><USER6> I was a bit surprised to find no mention of SF author Jerry Pournelle using the Electric Pencil word processor for many years:

[https://www.jerrypournelle.com/chaosmanor/early-days-of- word...](https://www.jerrypournelle.com/chaosmanor/early-days-of-word- processing/)

I do have WordPerfect running on my old DOS PC as well as a CP/M P112 I built:

[https://661.org/p112/](https://661.org/p112/)

</comment><comment><USER7> Also a Programmers' Word Processor, indirectly: Borland editors (Turbo Pascal, Turbo C, etc.), JOE, and others, took many of the WordStar key combinations... [1]

[1] [http://texteditors.org/cgi- bin/wiki.pl?WordStarFamily](http://texteditors.org/cgi- bin/wiki.pl?WordStarFamily)

</comment><comment><USER8> WordStar for word processing, Dbase for database management and Lotus-123 for spread sheets - those were the days.

<comment><USER9> I love that dBase launched as dBaseII to make it sound like an established product.

<comment><USER10> As did Oracle.

[https://en.wikipedia.org/wiki/Oracle_Database#Version_number...](https://en.wikipedia.org/wiki/Oracle_Database#Version_numbering)

</comment></comment></comment><comment><AUTHOR> joe ([http://joe-editor.sf.net](http://joe-editor.sf.net)) is inspired by WordStar and gets even closer when started as jstar.

<comment><USER11> When I started with Linux I used the Zed editor by Sandro Serafini, which used WordStar-like keybindings as well.

Interesting, how it seems to have completely disappeared from the web since then. The two "zed" editors I could find appear unrelated, as is the current "zed" Debian package. Only archive.org seems to still have the original web page

[https://web.archive.org/web/20120520234205/http://zed.c3po.i...](https://web.archive.org/web/20120520234205/http://zed.c3po.it/)

</comment></comment><comment><USER12> If anyone here ever came across a daily IT newsletter called Computergram, you will be glad to know that it was written (and laid oud) using WordStar until at least the mid-90s.

The newsletter had a multicolumn-format, and box-outs. These were arranged by using different margin settings and then running the paper through the printer multiple times. Erk.

^KS

<comment><USER13> I had a Brother daisywheel printer for my Superbrain, and I didn't like the options for chapter headings in text, as they didn't stand out enough for me. I wanted them to be bolder than normal bold. With the daisywheel I had only one font, not like a matrix printer which had all kind of fonts.

One bold tag around text like (b)example(b) made the printer retype that text one time. It turned out that (b)(b)(b)example(b)(b)(b) resulted in four times typing "example". This was hammered (literally) into the paper, so on the backside you could see and read the text as well. Using capitals, varying degrees of bold-repetitions, I could get what I wanted.

<comment><USER14> I used a similar hack to persuade an Epson MX80 printer to produce slashed zeros by sending '0', <backspace> '/'.

</comment></comment></comment><comment><USER15> I have to wonder if he's ever tried vim. Seems like a lot of the features he likes are in vim as well. I'm sure a lot of this applies to emacs as well.

<comment><USER2> WordStar is not modal and that's one of the things he appears to like about it. I doubt vim is going to cut it - he seems to be using WordStar 7 under DOS emulation now.

<comment><USER16> Wouldn't emacs be just as capable, or at least an emacs distro?

<comment><USER2> It would be (and then some) but then he'd have to learn and heavily customize emacs. He's already found the tool that works for him.

<comment><USER17> M-x wordstar-mode provides a major mode with WordStar-like key bindings. (I just tried it, although it's been so long since I used wordstar - when I was a kid - that I've forgotten all the keybindings so couldn't work out how to exit emacs)

<comment><USER2> Right but it's not the same thing, just some (incomplete) keybindings. Wordstar fundamentally deals with attributed text. It knows what pages are. It has a different UI. Etc, etc.

It's Ctrl-K-x, btw.

<comment><USER18> Agree on the attributed text (though not on the need of it for writing prose), but Emacs also understands the concept of pages (you can insert page breaks at will by using form-feed characters, ^L)

<comment><USER2> Inserting form feeds is not 'understands the concept of pages'. As to the other thing, I'm not sure 'you don't need that feature' is likely to convince a professional writer/Wordstar user to take up emacs.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> I never used it much as a word processor, but WordStar was my favorite programming editor on CP/M. Of course that was long before the 1996 date of this article! I remember a few friends who also used it for their coding.

Sawyer's article hints at this: "An Interface Designed For Touch Typists".

So now I'm curious: anyone else out there who used WordStar as a programming editor back in the day?

<comment><USER20> I used it as such under DOS (wrote 6800, 6809 and 8088 assembly language and C with Microsoft C 4.0).

I wrote this emulator to allow me to use CP/M wordstar in Linux:

[https://github.com/jhallen/cpm](https://github.com/jhallen/cpm)

Screen I/O just uses the terminal emulator and does not open another window. I'd like to see a DOS emulator that works like this.

<comment><USER21> DOSEmu at least used to have that mode IIRC

</comment></comment></comment><comment><USER22> George R.R Martin uses WordStar

[http://www.slate.com/blogs/future_tense/2014/05/14/george_r_...](http://www.slate.com/blogs/future_tense/2014/05/14/george_r_r_martin_writes_on_dos_based_wordstar_4_0_software_from_the_1980s.html)

<comment><USER23> Mentioned in the first line of the post:

Many Science Fiction writers — including myself, Roger MacBride Allen, Gerald Brandt, Jeffrey A. Carver, Arthur C. Clarke, David Gerrold, Terence M. Green, James Gunn, Matthew Hughes, Donald Kingsbury, Eric Kotani, Paul Levinson, _George R. R. Martin_ , Vonda McIntyre, Kit Reed, Jennifer Roberson, and Edo van Belkom — continue to use WordStar for DOS as our writing tool of choice.

<comment><USER24> Still interesting that he still does so ~20 years after the article submitted was written. (Next question: How many of the surviving others mentioned still do?)

<comment><USER25> I switched to Word around 2004, when I started writing The Plot to Save Socrates.

</comment></comment></comment></comment><comment><USER26> When I use LibreOffice I run:

        xcalib -i -a

It inverts screen colors. To go back to normal, run it again. Never liked bright backgrounds much.

WordStar for DOS with blue or black colors was easier on the eyes than the Windows version.

</comment><comment><USER27> Great article. My dad swore by WordStar, even as WordPerfect etc came up and got more popular. He was always tremendously productive hammering out his bids; at the time, I didn't get it (I was using the C64 then the Amiga at some point during this). It's great to see the love for WordStar retrospectively, will send this for his enjoyment now.

</comment><comment><USER28> I use FocusWriter[1]. [http://i.imgur.com/uKVODsM.png](http://i.imgur.com/uKVODsM.png)

It requires a little bit of config as the default appearance is a bit bleh but if I have to do any kind of long form writing I reach for it straight away.

The font I use is "FS Me", it was designed in partnership with Mencap for legibility for people with learning disabilities[2] which doesn't apply to me (though some people might argue otherwise) but I've found it to be incredibly easy on the eye for long periods.

[1] [https://gottcode.org/focuswriter/](https://gottcode.org/focuswriter/) [2] [http://i.imgur.com/uKVODsM.png](http://i.imgur.com/uKVODsM.png)

<comment><USER29> Cool, thanks for sharing. I plan on taking it for a spin.

</comment></comment><comment><USER30> I use Zoho Writer for all my writings. - [https://writer.zoho.com](https://writer.zoho.com)

Zoho Writer, is one such word processor which has managed to retain a distraction free writing canvas, while still packed with features, found in a typical word processor.

</comment><comment><USER31> > wordstar -> turbo pascal

working with wordstar meant the turbo pascal editor was easier to use. [0]

[0] [http://www.freepascal.org/docs- html/user/userse32.html](http://www.freepascal.org/docs- html/user/userse32.html)

</comment><comment><USER32> WordStar was where I started back in the DOS days. Then WordPerfect, and now Microsoft Word, where I've remained for upwards of 20 years.

That said, I don't do organization for writing projects in Word itself -- for that, I'm using TiddlyWiki (stupid name, GREAT software).

I tried Scrivener briefly, but I found it too closed-ended and cramping of my style to be really worth it.

FocusWriter (also mentioned downthread) is a really nice little app, although it's best for banging stuff out rather than for full workflow. I end up going back to Word simply because of the revision tracking and annotation stuff.

</comment><comment><USER33> Thinking about WordStar always gets my ire up, not about WordStar but by comparing a word processor that fit on a single 3 1/2" floppy and comparing that to the size of modern word processors that easily eat multiple Mb. I know that they are often adding features to increase audience, but I rarely do anything in the modern software that I couldn't do in WordStar. It seems like such a waste.

</comment><comment><USER34> I still think Electric Pencil running on a Processor Technology Sol-20 was superior to WordStar, but then again, I owned Newtons back in the day.

</comment><comment><USER35> Lots of authors vie for early word processor fame... [https://www.theatlantic.com/technology/archive/2012/01/conte...](https://www.theatlantic.com/technology/archive/2012/01/contenders- first-novel-written-word-processor/333277/) was one I recall liking at the time.

<comment><USER36> 'vi' :-)

</comment></comment><comment><USER37> What kind of file formats does it use?

I grew up with [Professional Write][1] for DOS, and when I recently purged a bunch of my old floppies I came across some files in its proprietary format that I couldn't open.

[1]: [https://en.wikipedia.org/wiki/Pfs:Write](https://en.wikipedia.org/wiki/Pfs:Write)

<comment><USER38> Short answer: Several [0].

Personally, I had a copy of WordStar 2000, which was completely incompatible with everything else.

However, most versions of WS used seven bits for ASCII, and one bit for formatting. Destroyed extended ASCII and internationalisation.

But WS went through a few formats in its lifetime.

[0] [http://justsolve.archiveteam.org/wiki/WordStar](http://justsolve.archiveteam.org/wiki/WordStar)

</comment></comment><comment><USER39> Recently found the review I wrote of WordStar 5 when it came out. [https://mansfield-devine.com/speculatrix/2017/03/from-the- ar...](https://mansfield-devine.com/speculatrix/2017/03/from-the-archives- wordstar-5-review/)

</comment><comment><USER40> Got so many praises from high school teachers for "typing" my papers, when in fact it was just faster to use WordStar on a 286. Cool article, wish I'd known about the double period note feature!

</comment><comment><USER41> I'm always a little surprised nobody has re-implemented it (as a full WP, not just a plain text editor) after so often having heard praise of it.

<comment><USER38> Some have!

WordTsar [0]

Write & Set [1]

[0] [http://wordtsar.ca](http://wordtsar.ca)

[1] [http://www.writeandset.com/english/indxf.html](http://www.writeandset.com/english/indxf.html)

<comment><USER42> WordTsar looks a little dead: the last three posts on the blog are from 2014, and are titled, respectively, "Hacked by GeNErAL", "The Best Online Pharmacy. Buy Cialis Without Prescription – Orders-Cialis.info", and "Alpha 0.51 Released".

Not that WriteAndSet looks better: "Last modified: September 19 2009"

<comment><USER41> WriteAndSet's screenshots being from OS/2 also doesn't fill me with positive expectations.

</comment></comment></comment></comment><comment><USER43> Today there is WordPerfect for writer's needs, including great keyboard controls. Sadly, it lost some reputation over the past few years.

</comment><comment><USER44> Had to memorize the entire list of Wordstar command sequences for school. We were tested on it in the 9th grade.

</comment><comment><USER45> Just wait until you get a load of Emacs.

</comment><comment><USER46> Anecdote: Richard Dawkins -- not being happy with Apple Writer that came with the Apple II -- ended up spending a lot of time programming his own word processor [1] which he then used to write one book -- The Blind Watchmaker.

In response to a question, commenting on him writing ten books at the time, Dawkins interjects to say he could have written 20 books if he hadn't taken up computer programming. [2]

[1] [https://www.youtube.com/watch?v=9DEe4QEuOSw&t=1074](https://www.youtube.com/watch?v=9DEe4QEuOSw&t=1074) [2] [https://www.youtube.com/watch?v=gQp1QaW_onk](https://www.youtube.com/watch?v=gQp1QaW_onk)

<comment><USER47> This is very relevant to me. I'm a struggling, unpublished novelist with a handful of half finished books and a moderately successful writing app in the windows store, which I use myself. Every time I sit down to write I find myself making notes on how to improve things or sometimes fixing bugs and deploying new versions instead of writing. As a writer, it's probably the worst decision I ever made. As a developer, it's the thing in most proud of (which is also kind of sad since its so very basic)

<comment><USER38> I always get frustrated with the tools for writing.

I like using details in my writing, little things like specific symbols around print numbers, or being able to ensure a particular event takes place on a certain page number...

But producing the end files is hell. Some printers take the edge of the page in their own files, the EPUB spec is excruciating at times, without full support in any reader, mobi is a worse thing because it's so proprietary.

I've extended Markdown, reStructured Text and Scribble in pursuit of WYSIWYM, and written four or five build tools.

But I still feel like writing in the modern world for modern devices is like slowly drowning.

Being both a programmer and a writer is a curse.

<comment><USER47> > or being able to ensure a particular event takes place on a certain page > number...

I find your level of organisation intimidating

<comment><USER38> Don't you always want a towel reference on page 42?

Sometimes it makes sense, when you have symbols and stuff. Buried meanings are great little nods to the audience... But not many people would notice if it got pushed to page 43.

<comment><USER47> > Don't you always want a towel reference on page 42?

Well NOW I do...

</comment></comment></comment></comment></comment></comment><comment><USER48> Alpha smart [https://en.wikipedia.org/wiki/AlphaSmart](https://en.wikipedia.org/wiki/AlphaSmart)

<comment><USER49> My middle school had these, and a typing course. None of our words-per-minute scores improved so much as an iota until Christmas break, when we all started using instant messengers at home. Our teacher was flabbergasted that AIM did more to improve out typing habits than a semester's worth of instruction.

We also used them to make sideways ASCII art that you had to scroll through. Things like city skylines and battle scenes.</comment></comment>


Apple's T2 chip will prevent hackers from eavesdropping on your microphone - <AUTHOR> https://techcrunch.com/2018/10/30/apple-t2-security-chip-microphone-eavesdropping/ <comment><USER2> > The chip comes with a hardware microphone disconnect feature that physically > cuts the device's microphone from the rest of the hardware whenever the lid > is closed

Why do you need a chip for this? Can't you just break the circuit with a regular dumb physical switch? Or is this a much more complex problem than it first appears?

<comment><USER3> Who controls the switch? You need an entire secure system distinct from the untrusted CPU - or a manual switch on the side. The latter goes against everything Apple believes in design wise.

<comment><USER2> I'm suggesting the lid could control the switch, physically, as in when you close it the mic's circuit is broken.

<comment><USER3> Yea that could work. I think this is cheaper for them surprisingly enough. Switches are expensive.

<comment><USER4> Expensive and failure-prone!

<comment><USER5> Just put a magnet-actuated switch into the mic itself and a magnet in the corresponding place in the body - problem solved.

Nothing to break, zero attack surface, what's not to like?

<comment><USER6> Except the magnet-actuated switch for each mic.

<comment><USER5> Those are rated for over hundreds of millions of switching cycles. They would be the last thing that breaks in a laptop.

But if you're so against moving parts, a hall sensor and a transistor would achieve the same result.

<comment><USER7> Or, you know, they could use a chip that they're already putting into the device (like the T2) and not have to use additional components. Same end result without the extra parts.

<comment><USER5> And an unknown and unknowable attack surface.

At least with the switch if the mic doesn't work you just check for magnets around it and that's it.

<comment><USER8> I'd argue the T2 chip is actually more secure than your method. Magnets can be removed. The T2 chip cannot. Not without rendering the computer unusable and the data irrecoverable.

The chip provides a hardware disconnect for the microphone, just like your idea. Except it's baked into the silicon instead of an additional large part in the body of the computer.

Regardless, if your attack model is "T2 chip is compromised", all bets are off. Worrying about the microphone would be the absolute least of your concerns. All your local and iCloud data can now be decrypted, your 2FA is compromised, so on and so forth.

The T2 chip and Secure Enclave provide the strongest security guarantees in today's computers and mobile devices respectively. I'm not worried about a compromise of the T2 chip, to be honest.

<comment><USER9> _I 'd argue the T2 chip is actually more secure than your method. Magnets can be removed. The T2 chip cannot. Not without rendering the computer unusable and the data irrecoverable_

If someone can physically modify your laptop, you've already been hacked, T2 chip or not.

 _if your attack model is "T2 chip is compromised"_

I think the more realistic attack model is "Apple enables the undocumented 'turn on mic while closed' feature that it was required to add through a national security letter that they can't talk about."

And then that secret hack is either discovered (or stolen) by other government.

<comment><USER10> Some repair shop or some repair guy could remove magnet for celebrity...

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> This only protects when the lid is closed, but many people leave the lid open on their desk.

I would love to see a light come on if the camera or microphone is receiving power, and then only turn on power to these devices when a program requests it.

<comment><USER7> The camera already functions this way. The light is connected to the actual power of the camera and cannot be disabled unless the camera is also disabled. The microphone, to my knowledge, doesn't function like this but I don't think it makes sense for it to function like this as the microphone doesn't really need power outside of what's provided to the amps and DACs inside the machine. It would be too easy to work around. Any membrane capable of vibration would be able to be used as a microphone, including the laptop's speakers, so it'd be more work for little gain.

<comment><USER12> > The light is connected to the actual power of the camera and cannot be > disabled unless the camera is also disabled.

This was proven false when malware was discovered that accessed the camera on Mac laptops without activating the LED light. It's mentioned in the article.

<comment><USER13> Am I the only one who has tape over my laptop camera? (Specifically a peppa pig sticker)

<comment><USER14> I bought these for all the laptops being used by my family. Especially useful when you are in a group video conference and you need a quick and foolproof way to blank the video.

[https://www.aliexpress.com/item/2018-WebCam-Cover-Laptop- Cam...](https://www.aliexpress.com/item/2018-WebCam-Cover-Laptop-Camera-Cover- Shutter-Magnet-Slider-Plastic-Webcam-Camera-Cover-for-ipad- smartphone/32868385250.html)

</comment></comment></comment></comment></comment><comment><USER15> The only reliable way to prevent eavesdropping is to physically break continuity of all voice coils in the device.

Entrusting a black box chip to do this on your behalf is more risky than there being a physical kill switch somewhere which all the voice coils pass through.

There's certainly going to be a way for the chip to be told via software to reconnect the coils, though you may not know how yourself.

</comment><comment><USER16> I think we're finally at the point where hardware isolation is a standard part of our defense in depth, just like ASLR and W^X. I'd like to see these exposed in more consistent ways to software. T2 should be able to provide U2F, it's too bad it doesn't.

</comment><comment><USER17> Apple was part of the NSA PRISM program. Has that changed? I mean other than unverifiable marketing speak about valuing customer privacy? On one hand this could be a legitimate privacy feature or it could also be an elegant cover story for a covert channel to the PRISM inbox. Most of the non-tech people I speak with trust their phone manufacturer implicitly (even after PRISM).

We've come so far in our exchange of privacy for convenience, creating a surveillance nirvana... for those with access.

1) Fingerprint scanners 2) Facial scanners 3) Retina / iris scanners 4) Voice recordings, voice assistants. 5) GPS tracking (on IOS Google Maps defaults to knowing location even when the app is not in use).

It appears beautifully programmatic / orchestrated.

<comment><USER18> Thats my problem with Apple. They are at the end of the day an American company. My bank is legally not allowed to sell my transactions history. Apple just promises that they won't but nothing stops them from changing their mind.

</comment></comment><comment><USER19> I recently learned that LEDs can be used as light sensors if connected to an ADC. I wonder what other mechanisms there might be to capture sound that a determined adversary (i.e. government organisation) might use. While speakers can certainly be used as microphones, I doubt they'd be connected to an ADC so probably won't be useful, but what about the multitude of other sensors?

<comment><USER20> > While speakers can certainly be used as microphones, I doubt they'd be > connected to an ADC so probably won't be useful

In most modern PCs with two audio jacks software will ask you what kind of device you just connected and reconfigure the sound chip to treat it as input or output. I wouldn't be surprised if clever software was able to convince Apple hardware to treat the built in speaker as a microphone.

<comment><USER21> That hardware capability is exploited in the following paper, if you want to know the details:

Mordechai Guri et al. (2016) 'SPEAKE(a)R: Turn Speakers to Microphones for Fun and Profit'.

[http://cyber.bgu.ac.il/advanced- cyber/system/files/SPEAKE(a)...](http://cyber.bgu.ac.il/advanced- cyber/system/files/SPEAKE\(a\)R.pdf)

By Mordechai Guri, Yosef Solewicz, Andrey Daidakulov, and Yuval Elovici.

<comment><USER22> I'm getting access denied on that link. Do you have a mirror?

<comment><USER23> I was able to read it on Arxiv: [https://arxiv.org/pdf/1611.07350.pdf](https://arxiv.org/pdf/1611.07350.pdf)

</comment></comment></comment></comment></comment><comment><USER24> I'm shocked at how many defenders pop up here for a proprietary chip that cannot be audited. Sure, this hardware/firmware combo might be safe. It also might be terrible, but no one on this thread actually knows either way. It is also vulnerable in ways that a magnetic lid switch would never be. The T2 is the single most important attack target (for desktops) now for large budget attackers. I wonder how long until the HN headline reads T2 vulnerability found.

<comment><USER25> Was also slightly bemused. Especially the comments saying a physical switch is too expensive?

An inlaid switch would cost a few cents and apart from physical tampering will always work. With Apple's design skills I doubt many would even see it.

People who boldly guarantee a products security are doomed to relearn history.

<comment><USER26> > will always work

Unless the user forgets to use the switch. Cue the XKCD comic about $5 wrenches breaking strong crypto.

The deeper philosophical question is whether to build, to quote the Arch Way, user-friendly or user-centric products (and, consequently, security). It should surprise nobody that Apple values user-friendly design over user- centric design.

Fwiw I also would prefer an inlaid physical switch.

</comment></comment></comment><comment><USER27> I'm waiting for a paper to come out discussing the use of the accelerometer or gyroscope to record audio.

<comment><USER28> Several of these already. Here is one from 2014, [https://crypto.stanford.edu/gyrophone/](https://crypto.stanford.edu/gyrophone/)

Seem to remember an impressive one from this year using modern deep learning, but could not find it now.

</comment></comment><comment><USER29> With the additional privacy features added to their phones and notebooks, how much of it actually is just a marketing gimmick? It's not something Google cant compete with directly (Microsoft could, if they cared), but it's not something they've actually.. well, marketed. It could be a major selling point, so why dont they advertise it? Something's fishy.

</comment><comment><USER30> A bit tangential, but if you want to track when programs are recording audio or video you should try out OverSight [0]. Although, since it's just software it's possible it can be bypassed by direct attacks, and it can sometimes fail to detect which program is accessing the webcam or microphone. Even with those limitations I still think it's better than nothing.

Micro Snitch [1] is another alternative, although it's more limited in its functionality since it doesn't try to detect what program is accessing your webcam or microphone. It also costs $3.99, while OverSight is free.

[0] [https://objective-see.com/products/oversight.html](https://objective- see.com/products/oversight.html)

[1] [https://obdev.at/products/microsnitch/index.html](https://obdev.at/products/microsnitch/index.html)

</comment><comment><USER31> While I'm glad this is the case, if my computer is compromised to the point where I can be spied on with the webcam/microphone, I'd be far more worried about my entire photo library, web browsing history, message history, email history, bank credentials, etc. being exposed.

</comment><comment><USER32> Details are here: [https://www.apple.com/mac/docs/Apple_T2_Security_Chip_Overvi...](https://www.apple.com/mac/docs/Apple_T2_Security_Chip_Overview.pdf)

</comment><comment><USER33> When are we going to get projection against unauthorised USB devices when the workstation is locked (ie, I'm away from my computer and a nefarious actor inserts a USB device) similar to the recent iOS 12 improvements?

<comment><USER34> When workstations stop needing USB keyboards connected to unlock them?

</comment></comment><comment><USER35> so this means I cant use my mic when my computer is closed and hooked up to an external monitor?

<comment><USER36> this use case is actually quite funny and probably one day a reason for there being some bypass for this functionality which can be exploited/utilised :X most governments still demand LI capabilities after all....

</comment></comment><comment><USER37> Congratulations Apple for implementing the spst switch in 7nm with 23 million transistors.

<comment><USER38> The T2 is used for:

\- image signal processing

\- an audio controller

\- a mass storage controller

\- a dedicated AES engine for encryption.

\- secure enclave for touch id

<comment><USER39> Jeez, sounds like the T2 is prime to be merged into systemd.

Someday we'll find that the image processing function has a bug that lets you control the microphone when you open some stupid meme. Great separation of security

<comment><USER16> Running on the same chip does not mean that there's no isolation. The T2 has an ARM core with an MMU, different processes can be isolated from one another as well as you can on ordinary OSs. Given that you can't load software on the T2 you'd have to find some remote hole and then do local privilege escalation.

And still certain things will be impossible, even if you control the software on the T2, because there is no hardware access to e.g. read the encryption keys, from what I understand.

<comment><USER40> Phew, that's a solid model! No software ever had both remote holes and local privilege escalation!

<comment><USER16> Sarcasm aside, this is part of a strategy called "defense in depth", the general idea is that no part of your system can be completely secure so you add different types of layers to your security just to make it more difficult for attackers.

Since the T2 does not need to run user software there are additional options available to make it more secure which are not available for ordinary CPUs. For example, you could completely prevent executable code from being loaded without resetting the chip.

</comment></comment></comment></comment></comment></comment><comment><USER41> I just unplugged the microphone, and camera from my macbook pro retina's motherboard. I don't use the camera often and I use the microphone on my earpiece so I don't miss it.

</comment><comment><USER42> This begs the question: how prevalent was mic spying prior?

Why knew it was or could or might be happening, but at what scale?

<comment> Digital-Citizen We don't commonly have figures on that, however the combination of proprietary (non-free, user subjugating) OS and application software plus built-in camera/mic hardware doesn't bode well for one's privacy.

</comment></comment><comment><USER43> What about when the gov. is the hacker ?

<comment><USER44> Why would this change anything? Presumably there would be an easier way to listen to you if this was the case.

<comment><USER45> Indeed, they'd just listen to you using the smartphone or landline/VOIP phone sat on the desk _next to_ your computer instead.

</comment></comment></comment><comment><USER46> Could the iPhone ringer switch be aftermarket rewired to disconnect all iPhone microphones?

<comment><USER47> Potential project for Strange Parts. If anyone could do it, I'm sure he could.

</comment></comment><comment><USER48> I'm really wondering if there even was 1 customer request for this.

<comment><USER49> My company (major telecom) literally gives away camera covers. Surely they'd do same for mics if there was a convenient cheap way. There's plenty of rumors about mics & cameras being commandeered by hackers & secret agencies.

Apple gets ahead by actually securing mic access. Lots of people want it.

<comment><USER50> Rip the mic out

Plug in USB mic when you need one.

<comment><USER51> Sure thing...

Tell that to toushands of employees of fortune 500, that don't care one bit about security, as it's not their responsabilty.

They will plug the USB mic and that would be it.

It even goes in the bag with the ports plugged in if it has space.

</comment></comment></comment></comment><comment><USER52> Is there any other hardware running when the lid is closed?

<comment><USER53> RAM must continue to be powered. Your network card as well, for remote wake up on network activity. Bluetooth can also be configured similarly. On older computers with HDDs, it is also configurable whether those HDDs are turned off when the lid is closed.

Of course this is just assuming you keep the default of closing the lid => computer goes to sleep. It is possible for some Macs to keep running while the lid is closed, so basically only the display is not powered. It is also possible for some Macs since Mavericks to actually have most of the kernel running to perform background tasks, called Power Nap.

Closed-display mode: [https://support.apple.com/en- us/HT201834](https://support.apple.com/en-us/HT201834)

Power Nap: [https://support.apple.com/en- us/HT204032](https://support.apple.com/en-us/HT204032)

</comment></comment><comment><USER54> What about a hardware switch? You know, a mechanical switch, like the one already used to detect whether the lid is closed? Besides, I also want the mic disabled when my laptop is open...

<comment><USER51> There's no mechanical lid switch.

</comment></comment><comment><USER55> Or they could do, you know, a simple $0.10 on-off slide switch.

<comment><USER56> And then they would have to endure 10 million support calls from users who didnt know they disabled the switch and cant make skype/facetime calls.

<comment><USER55> The presumption that nothing can ever be done, whether right or wrong, is at the very least, discouraging.

</comment></comment></comment><comment><USER57> Why is it so hard to believe the headline?

<comment><USER58> Has Apple security record on electronics been ever broken? I don't think so. If there is an exploit yet, at least it's not publicly known and no-one has seen it for sale on the black market, so it would be in the millions. I'd say Apple is trustworthy as far as I'm concerned, perhaps not trustworthy enough if the threat model is Hillary-level politics, but trustworthy enough for a billion dollars business.

<comment><USER59> >Has Apple security record on electronics been ever broken

Absolutely. It was possible to trigger the mic/camera on older Macbooks without turning on the green LED. This led to people being spied on without their knowledge (by script kiddies, not nation-states). More recently, there's the unlocking of the San Bernardino shooters' iPhones.

<comment><USER51> None of those devices have TPMs like these.</comment></comment></comment></comment>


RhodeCode 4.6.0 Release: new approach to code-review - <AUTHOR> https://rhodecode.com/blog/123/rhodecode-460-release-new-approach-to-code-review <comment><USER2> I already updated my machine with the latest version. I think there is nothing better out there for users that use not only git but mercurial or legacy systems like svn.</comment>


Any books about data structure and algorithm for scalable systems / big data? - <AUTHOR> I am a Java backend developer and I've resigned from my company recently, and I want to get well prepared for interview and refresh my lost knowledge as well. However, I found that companies start asking questions for scalable systems and big data. I don't know where I can find more materials on those topics. Thanks. <comment><USER2> maybe you should read Designing Data-Intensive Applications -- [https://dataintensive.net/](https://dataintensive.net/)</comment>


Screeps – An MMO strategy open world game for programmers - <AUTHOR> https://screeps.com

<comment><USER2> This is a cool idea, but I can't imagine why you'd want to login via GitHub. They get read/write access to all your public and private repos.

<comment><USER3> And all your organizations public/private repos? Not sure why it needs that.

Anyways, the game looks awesome, I've been playing with a similar idea for a while on and off.

<comment><USER4> It looks like you can commit code to the game by pointing it at a GitHub repository or other methods[1]. I couldn't find documentation on the GitHub integration but here's some people talking about it[2].

[1] [http://support.screeps.com/hc/en- us/articles/203022512-Commi...](http://support.screeps.com/hc/en- us/articles/203022512-Commiting-local-scripts-using-Grunt)

[2] [http://support.screeps.com/hc/communities/public/questions/2...](http://support.screeps.com/hc/communities/public/questions/201221211-GitHub- Integration)

<comment><USER3> Ahh. Makes sense then - I wonder if GitHub allows granular permissions from OAuth requests?

Looks like they don't, unfortunately - [https://developer.github.com/v3/oauth/#scopes](https://developer.github.com/v3/oauth/#scopes)

<comment><USER5> They do. From the link you provided:

public_repo - Grants read/write access to code, commit statuses, collaborators, and deployment statuses for _public repositories_ and organizations. Also required for starring public repositories.

repo - Grants read/write access to code, commit statuses, collaborators, and deployment statuses for _public and private repositories_ and organizations.

Also, I don't think they need write access at all to your repositories, so I think the default no scope would be sufficient

(no scope) - Grants read-only access to public information (includes public user profile info, public repository info, and gists)

<comment><USER3> Well, by granular I meant on a per-repository basis, ie. so you could grant an application access to only one repo (If anyone from GitHub is reading this...)

</comment></comment></comment></comment></comment></comment><comment><USER5> Pretty fun. I did experience an EXTREMELY frustrating issue though. I tried multiple times to complete the simulation. However, you _really_ need to hijack the back button or at least the backspace key. Hitting the backspace key without selecting the code editing window immediately navigates you away from the simulation and forces you to start the entire thing over. Extremely frustrating to say the least, and it prevented me from finishing it.

</comment><comment><USER6> This is seriously awesome. Great for helping to understand programming conceptually as well as being great fun.

Less nice visuals would be good, then I could make it look like I'm just working.

</comment><comment><USER7> Previously: [https://news.ycombinator.com/item?id=8599640](https://news.ycombinator.com/item?id=8599640)

</comment><comment><USER8> Finally! It only took 5 years for someone to finally make it. - [https://news.ycombinator.com/item?id=1538171](https://news.ycombinator.com/item?id=1538171)

</comment><comment><USER9> Although not really similar this reminded me of Core War - [https://en.wikipedia.org/wiki/Core_War](https://en.wikipedia.org/wiki/Core_War)

</comment><comment><USER10> Really needs tab completion in the editor :P</comment>


Chip - <AUTHOR> https://samgentle.com/posts/2015-08-24-chip <comment><USER2> I really enjoy content like this on HN. No opportunity for vitriolic spats between dissenting opinions; just a cool thing that we got to see today.

</comment><comment><USER3> This is a pretty fascinating pattern to watch once it settles. Does it have a name yet?

Some observations:

* The basis of stability seems to be horizontal and vertical alternating black/white lines.

* There are two obvious areas of activity: A region of 'chaos' and a region of 'order' (parallel lines).

* The parallel line region supports various gliders of various sizes. The smallest is a single pixel of change moving across a line, changing white to black or vise versa), the largest takes up 7 pixels at a time (in an area of about 7x12 it looks like). Interestingly, the larger one "moves" faster than the others. I think I see gliders of 1, 3, 5, and 7 pixel height. There may also be a mutation of the 7-pixel glider that causes it to go even faster (looks like it has an extended head compared to the other)

* The gliders interact with one another, either combining forces, neutralizing each other, or changing states to a glider of a different size (usually to a size smaller than the larger of the two)

* The gliders originate from the merger of the horizontal and vertical areas, starting (and ending) their life where the two regions collide

* When two gliders of the same size perfectly collide with one another, they completely neutralize. Any offset in size or orientation causes a smaller glider to spin away (likely representing the 'difference' in 'energy' between the two, whatever that means)

* There's also a 'blinker' that occurs when two alternating lines meet one another

* It appears to be a class IV cellular automata ([https://en.wikipedia.org/wiki/Cellular_automaton#Classificat...](https://en.wikipedia.org/wiki/Cellular_automaton#Classification))

Fascinating stuff. And so simple! Thanks for sharing the source.

<comment><USER4> Reminds me of some of the work Albert Omoss did for FITC Tokyo: [http://albertomoss.com/work/fitctokyo2015](http://albertomoss.com/work/fitctokyo2015)

<comment><USER5> Amazing work, that is one multi-talented person.

</comment></comment></comment><comment><USER6> Looks like bismuth: [https://www.google.com/search?q=bismuth&espv=2&biw=1242&bih=...](https://www.google.com/search?q=bismuth&espv=2&biw=1242&bih=593&source=lnms&tbm=isch&sa=X&ved=0CAcQ_AUoAmoVChMI5fPG_obKxwIVSTmICh0cdg7w)

</comment><comment><USER7> Everybody knows Conway's game of Life, right? [1][2]

[1] [http://www.conwaylife.com](http://www.conwaylife.com) [2] [http://www.cuug.ab.ca/dewara/life/life.html](http://www.cuug.ab.ca/dewara/life/life.html)

</comment><comment><USER8> Quite cool. Must not stare any longer. Must work.

>> Do you say "made" or "discovered" with cellular automata?

Discovered feels more appropriate, but I think they end up being the same thing.

Have you documented the system's rules anywhere other than the source?

<comment><USER9> It gets into a pretty philosophical area. What's the difference between that and writing down an algorithm? Did you discover an algorithm or make it?

<comment><USER10> I think this sums it up nicely:

"The time-span in which the MCL process and MCL algorithm came to me was no more than five minutes. It was something that happened to me, not something wrought by me. It feels like a nice discovery, a phenomenon of nature."

\-- [http://micans.org/mcl/index.html?sec_discovery](http://micans.org/mcl/index.html?sec_discovery)

</comment></comment></comment><comment><USER11> 2d cellular automata is quite vast. golly is a good tool.

[http://golly.sourceforge.net](http://golly.sourceforge.net)

</comment><comment><USER12> It could be Snow Crash. Memetic hazard, avert thine eyes!

<comment><USER13> Relax, I don't see anything that looks like a parrot.

</comment></comment><comment><USER14> Bet it's Turing complete. Many CAs are, and this one smells of it. :)

</comment><comment><USER15> The embedded video at [https://samgentle.com/posts/2015-08-21-universe- tuning](https://samgentle.com/posts/2015-08-21-universe-tuning) doesn't work (it says it's private)

<comment><AUTHOR> Oops! Fixed it. Unfortunately cellular automata looks terrible on video.

</comment></comment><comment><USER16> I'm currently building a 2D/3D simulation engine as part of my PhD - it's uncanny how incredibly simple physical principles generated output that has the _" look 'n feel"_ of organic phenomena.

</comment><comment><USER13> Can someone help me understand what the rel() function does?

<comment><USER17> It returns the value of a neighbor given an index, and an x and y delta value. So rel(20, -1, 0) would return the neighbor to the left (x=-1, y=0) of the 20th cell.

</comment></comment><comment><USER18> Uncaught TypeError: Failed to construct 'ImageData': Illegal constructor does not work

</comment><comment><USER19> Looks to me like a constantly evolving maze. A shifting maze? Anyone watch the movie Cube (Cube is a 1997 Canadian science fiction psychological horror film, directed and co-written by Vincenzo Natali)?

This looks like a version of Cube, only in 2D.

</comment><comment><USER13> Anyone else notice the DNE?

</comment><comment><USER20> Try erasing the "Do not erase" sign by clicking it with your cursor "eraser". Cute :)

</comment><comment><USER21> >Do you say "made" or "discovered" with cellular automata?

If it's your first time seeing it, then you have just discovered it. If you selected the parameters and coded the algorithm, then you also made it.

</comment><comment><USER22> It Gave me nausea watching it.

Should have epilepsy warning.

</comment><comment><USER23> I wouldn't be so sure... it is written in _coffeescript_ after all. God forbid.

<comment><USER24> Detached from [https://news.ycombinator.com/item?id=10131731](https://news.ycombinator.com/item?id=10131731) and marked off-topic.

<comment><USER23> It was just a joke, but fair enough lol.

edit: i'd just add that even though it's only a joke, a comment regarding (even if critical of) the language used to write the code is absolutely on topic.</comment></comment></comment>


Towards improved C++ support for games, graphics, real-time, embedded systems [pdf] - <AUTHOR> http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4456.pdf

<comment><USER2> The allocator support in C++11 and, from what I've seen, the proposed allocator support in C++1y/z/whatever still leaves a massive amount to be desired.

Polymorphic allocators solve what's basically a non-problem for games (ABI boundary problems) while introducing huge other issues. Alignment is a PITA but not really a pressing IMO. The real issue is stuff like rebind and the requirements to call destructors (which destroys many practical implementations of pools and arenas, respectively). This probably falls under "STL puts an emphasis on correctness before practicality and performance".

...

Honestly (and I am aware this isn't a popular opinion, although it's _much_ more popular inside the game industry than outside of it), IMO the STL-style of C++ programming is fairly wrong for games in general, largely because of memory usage concerns. This style of programming emphasizes worrying about lifetimes of objects by way of RAII, in order to allow a uniform way of treating all types of resources, both memory and otherwise.

This is convenient, but games need extremely tight control over non-memory resource management (need to reuse anything from the system, need to load lots of stuff in the background, etc). This means tying it to object and scope lifetime tends to be inflexible and cause future pain when you need to change the resource management scheme.

And for memory, games tend not to care a lot about cleaning up each objects memory individually, preferring to do it in bulk (e.g. resetting an arena or pool). This means that using RAII (or using something that uses RAII) for memory management tends to fit poorly for games.

So, IDK. I'm not holding my breath on the C++ standards committee making a decision that I care for, but it looks like they're making steps in the right direction nonetheless.

<comment><USER3> There are no gamdevs on the c++ committee, probably because games companies are cheap bastards and don't want to expend resources on something that will affect them 10 years down the line (or even 2). Join the committee.

<comment><USER2> Haha, even if that were something I was interested in at all, I'm honestly not sure what you could do to fix it at this point. I think that ship has sailed. Most of the issues are library issues (and are far deeper than my complaints about allocators). The language issues largely come from having too many features, and its not like any of them can be taken out.

FWIW, I'm currently pinning my hopes on JAI, even though it's a long shot.

<comment><USER4> What's "JAI"? I've never heard of it, and Google/Wikipedia aren't showing any plausible candidates.

<comment><USER5> Jonathan Blow's language/compiler/live performance.

[https://www.youtube.com/user/jblow888/playlists](https://www.youtube.com/user/jblow888/playlists)

See [https://sites.google.com/site/jailanguageprimer/](https://sites.google.com/site/jailanguageprimer/) for some fan-made notes from the videos

</comment></comment></comment></comment></comment><comment><USER6> Still no support for static compile and runtime introspection. That could be easily and cheaply implemented, at least for POD and aggregates thereof.

If I have to build one more system that requires either a custom parser or repeating the names of all members, I think I will cry. The compiler ALREADY KNOWS!

<comment><USER7> There's actually an official "study group" looking at compile time refection proposals, so this is definitely something in the works. However, the proposals have ranged from mediocre to downright horrible so it's probably not going to be in the standard any time soon.

Some light reading

      [1] (static if) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3613.pdf
      [2] (call for compile-time reflection) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3814.html
      [3] (enum properties queries) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3815.html
      [4] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3996.pdf

</comment></comment><comment><USER8> "We started by looking at a paper from Paul Pedriana on N2771 "EASTL -- Electronic Arts Standard Template Library". While this paper was submitted in 2007, neither chairs of LWG recall reviewing this paper and no record of its review exists."

I give you the C++ standardization committee. Someone submits a paper to them with their issues and, moreover with solutions fully implemented in a library and also details the whys and wherefores. I have nothing to say whether this was good, bad or middling work just that the C++ standardization committee "has no record" of actually having read and considered it 8 years later and the chairs don't recall doing so. But I'm sure they all ran around as "anointed smart people" claiming all the others on the committee are anointed smart people instead. Sorry if I'm sounding a bit bitter but they really need to be called out, this is really gross. It's contemptuous of people making the effort to make the language better is the best you can say of it. Arrogant, stupid, unkind, vicious and bitter might describe me and I am sorry for it if you feel that way (please note it and I will try to do better), but I think it's also a fair description of this act by the committee.

Also on the front page today was Bruce Eckel's "thoughts on scala" which were utterly ridiculous for the first 10 minutes I watched. -He's a C++ stanardization committee alumni.

"We feel that a holistic "here's a new STL and our problems" approach to any change seems a bit doomed. "

WTF? You can't learn anything about what changes are desirable in the language from the implementation of how they solved their problems and assess whether they are more generally applicable? Pieces of them aren't worth assessing to be just adopted (or rejected)? You can't criticise what they tried and note the implementation and why the STL can do better?

Seriously if you can't learn anything from this on the committee what the hell are you doing? Well NOW they are looking at it, hurrah! While justifying why it wasn't done before, boo!

Mea culpa and a rocket up the committee members of the time seems vastly more appropriate if you actually care about this language. (Obviously if you don't, resign from the committee, immediately, anything else is immoral) If the members didn't care then, highlight the fact and state it is unacceptable going forward.

If it's common or garden (hopefully isolated) incompetence like _all_ of us display at times. "We're very sorry this happened." Would seem to be about the minimum standard here. It's the arrogance that goes along with the committee when they act like this that really gets me.

<comment><USER9> I also remember Bloomberg submitted in 2005 some very nice template library changes that avoid some very real pain points of STL:

www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1850.pdf

"Using an existing implementation of the C++ standard library as a base, we made backward-compatible modifications to enable such per-instance allocators."

I still don't know how I'd achieve per-instance allocator in modern "part-of- standard C++ STL." Is it possible? If yes, how? Does anybody know?

<comment><USER10> > I still don't know how I'd achieve per-instance allocator in modern "part- > of-standard C++ STL." Is it possible? If yes, how? Does anybody know?

Well, there are two things you can do.

1\. (Accepted in C++11) Allow stateful allocators. This is especially useful for things like pool allocators. Your container would keep a pointer to its allocator and perform allocator operations through it.

2\. (Proposed but not accepted yet) Allow polymorphic allocators. This would allow different data structures to use different allocators but still have the same type. Basically it would look like 1 above, but instead of keeping an allocator pointer, you would keep a pointer to an allocator interface and perform allocator operations through virtual method calls.

</comment></comment></comment><comment><USER11> C++ has left the horrors of the '90s largely behind it, and I'm rather liking it these days... But every time I work on a C++ project, I soon get "array angst" \-- a feeling of profound incompetence because I feel uncertain about basic array operations.

Seems like every project has its own take on array classes and their ownership semantics. Std::vector appears to be largely useless (or at least it's not used anywhere in practice, so the effect is the same). Boost is just scary. Qt is almost like a different language by now.

I wish the C++ standard had something like Cocoa's NSArray/CFArrayRef -- a general-purpose ordered container that is consistently used everywhere in APIs and does the job everywhere, even though it may not be quite the optimal data structure. But I guess it's 15 years too late for that.

<comment><USER12> Could you explain why you think std::vector is useless?

<comment><USER11> Like I wrote in my comment, it doesn't seem to be used in the real-world projects and SDKs that I deal with.

<comment><USER13> Not if those projects/SDK's have to interface with C, but that's just the reality.

</comment></comment></comment></comment><comment><USER14> It's actually kind of fascinating that the HN shortened title omits "games," which is really what this document focuses on. Specifically the document investigates "EASTL", i.e. the Electronic Arts STL, and how its learnings can be applied to the common STL.

The actual title: "Towards improved support for games, graphics, real-time, low latency, embedded systems."

These little pieces of censorship—that's not a sign that for some reason, we really don't like to talk about games. There's no pervasive second-class- citizenry attitude towards gaming. I don't really know how to interpret the omission, other than it's a little piece of little consequence.

Gaming keeps surfacing in places big and small as a motivation behind some technical or business innovation. Here we get very real improvements to the STL. This certainly matters: we celebrate Quake's square-root estimation trick as a cultural artifact, evidence of the beauty of programming. Elsewhere, in recent news, we hear Stewart Butterfield's narrative, which was as much about Flickr and Slack as it is about his twice-failed game concept. Lots of ideas and characters in the tech world have touched gaming in one way or another.

In my personal background at my startup, I keep running into folks pushed out of gaming. They start making "apps." Surrounded by app people, I might miss that a third of all new apps in the App Store are actually games[0]. Even then, games are disproportionately represented in Apple Design Awards. It's tough to get an accurate figure we'd all agree on, but I believe games are nonetheless also overrepresented in revenue (definitely from the looks of top grossing, if we're strictly speaking about mobile software).

If we really want to talk about software, I'd expect 1/3 to 1/2 of the content on the front page to actually be about games. It's certainly what most software people are working on, and it is probably where the plurality of the money is made. I'm not going to speculate as to why (I'd leave that for certain ex-Google developers, who possibly wanted to make a card game all his life). Here, we're actually seeing gaming omitted from the title, as though it's verboten.

[0] [http://www.pocketgamer.biz/metrics/app- store/](http://www.pocketgamer.biz/metrics/app-store/)

<comment><USER15> >It's certainly what most software people are working on, and it is probably where the plurality of the money is made.

Not sure where you got those ideas, but they're not even remotely true. Enterprise, while boring as all hell, is _huge_. The largest software vendors are (consistently) Microsoft, Oracle, IBM, and SAP[1]. According to Gartner, software was a $407.3B industry in 2013, and enterprise driven companies accounted for nearly _half_ [2]. The video game industry pulled in $887M in 2014[3]. Not even close at .21%.

[1]: [http://en.wikipedia.org/wiki/Software_industry#Size_of_the_i...](http://en.wikipedia.org/wiki/Software_industry#Size_of_the_industry)

[2]: [http://www.gartner.com/newsroom/id/2696317](http://www.gartner.com/newsroom/id/2696317)

[3]: [http://www.statista.com/statistics/201093/revenue-of-the- us-...](http://www.statista.com/statistics/201093/revenue-of-the-us-video- game-industry/)

<comment><USER16> You misread that chart; The video game industry pulled in $887M in the _US_ in _One Month_ (February) of 2014. For scale, bear in mind that GTA5 made worldwide revenue of $1billion in it's first three days.

If we go by Gartner[1], the games industry was predicted at $93billion in 2013. That's over 21%, so a couple of orders of magnitude more than 0.21%.

[1]:[http://www.gartner.com/newsroom/id/2614915](http://www.gartner.com/newsroom/id/2614915)

<comment><USER15> You're right; I can't tell where exactly that 407B number comers from. It's irrelevant though in the context of what I was refuting, i.e., the claim that "most" software devs are in the game industry, which is ridiculous.</comment></comment></comment></comment>


Ask HN: How do you structure your Python programs? - <AUTHOR> I've been teaching myself to code for about 6 months now, and am finally starting to see the efforts pay off (I can actually do stuff).  I first started learning to code with Python, and then switched to Ruby on Rails for a project I am working on about 3 months ago.  The thing that I, as a noob, love most about Rails is the rigid structure that it provides.  It totally makes sense to me, and I feel like it keeps my code organized very well.
However, I had an idea for a small coding project the other day, and for a couple of reasons it really made sense to build it on Google App Engine.  So...I dove back into Python after several months of being away.  It's amazing how much better I understand the fundamentals now, but I'm looking at my code base (<500 lines) and realizing that I have a mess on my hands.
So, my questions is: How do you structure your code in Python? Do you have any recommendations for tutorials or suggested readings?  Any quick tips to help me clean up a mess?
Thanks. <comment><USER2> I guess that what you miss about rails is the MVC architectural layout, but that's not specific to RoR and you can use it wherever you want, even in the webapp microframework for google app engine: have a file or module for models, another for controllers and another for views and get them together in a main module; you can also use django (I've used django 1.1 in gae with no problem) or use Jruby on appengine (there's a whole project for that: <http://code.google.com/p/appengine-jruby/>) to run ruby on rails, padrino or sinatra, if you really miss ruby. I've also run ruby projects on app-engine (in sinatra, which is the coolest microframework out there, IMO) and it's been easy, I actually felt it easier to set up that a django project, as it was hack free.

<comment><AUTHOR> Thanks, I'd never heard of Jruby before, that looks really interesting.

</comment></comment><comment><USER3> Read and follow PEP 8

<http://www.python.org/dev/peps/pep-0008/>

<comment><AUTHOR> Thanks! That looks like a good place to start.

<comment><USER4> PEP 8 is great, but (unless I've forgotten . . .) it doesn't really help w/ directory structure and so on.

I'd say take a look at some of the code in the standard library and in some other packages you've used before, then read this:

<http://jcalderone.livejournal.com/39794.html>

Then just go for it.

<comment><USER5> And keep refactoring, when you get into a mess.

</comment></comment></comment></comment><comment><USER6> Try a Python framework - there's enough of them to work with. The good ones (like Django) have a structure and standards that make sense - and have great tutorials, for the most part.</comment>


My Apple Mac Book Pro was stolen  Steps to follow - <AUTHOR>

My MacBook Pro was stolen at a popular hotel in Atlanta and the hotel staff hasn't been able to trace it. The police officer whom I reported the incident did not seem to be optimistic. What do I do ? <comment> mike-cardwell Claim on your insurance and then buy a new one</comment>


Show HN: MobiFind – Find information you need on the go, without searching - <AUTHOR> http://apple.co/1aUpd8V

<comment><AUTHOR> Hey guys,

Searching on the go using your mobile is such a pain. We wanted to write an app that will automatically surface stuff based on context starting with location.

Whether it is a coupon in your email that you are looking for at the store or your grocery list while shopping or your e-ticket at the airport, MobiFind will automatically pull up what you need based on your location.

We would greatly appreciate your feedback! Thanks!</comment>


On Creativity, an Interview of Yours Truly by Matt Buice (2003) - <AUTHOR> http://www.warplife.com/mdc/artist/on-creativity.html

<comment><AUTHOR> Matt was a Cal State University Northridge student. CSUN's Psychology of Creativity class gave him the assignment of finding a creative person on the Internet then interviewing them.

Mostly I discuss my writing, art and music.</comment>


Kill The Landline Pitch Deck from Startup Weekend Columbia - <AUTHOR> http://blog.killthelandline.com/post/32631363827/pitch-from-startup-weekend-columbia

<comment><USER2> If you call the phone company you can pay a small fee to have your old land line number forwarded to your new one for up to a year. It was something like $4.75 a month from Qwest when I did it a dozen or so years ago.

</comment><comment><USER3> Kill the landline: Google > Local Number Portability ?

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

</comment><comment><USER4> Lame. Google Voice is free.

<comment><USER5> Unfortunately you can't currently port your landline to Google Voice: [http://support.google.com/voice/bin/answer.py?hl=en&answ...](http://support.google.com/voice/bin/answer.py?hl=en&answer=1065667)

My personal preference is MagicJack. I don't want everybody to have my cell #. I prefer companies that bill me (credit cards, utilities, etc) to have their own number which is my old landline. MagicJack fits the bill for me. Most of the time I don't even answer the phone and the voicemail gets sent to me via email.

<comment><USER4> But GV gives you a number and handles forwarding... for free. Is porting worth $120/year?</comment></comment></comment>


'Changes are accelerating': Grim UN climate report predicts faster-rising oceans - <AUTHOR> https://www.chicagotribune.com/nation-world/ct-nw-un-climate-report-20190925-ab7vye5r5jgutiynqmki4vxuyi-story.html <comment><AUTHOR> _The IPCC increased its projected end-of-century sea level rise in the worst case scenario by nearly four inches from its 2013 projections because of increased recent melt of ice sheets in Greenland and Antarctica._</comment>