Why Mac users don't rant about the OS - <AUTHOR> http://www.itsmdaily.com/2013/12/06/why-mac-users-dont-rant-about-the-os <comment><USER3> The article misses the mark completely. The main thesis is that Mac OS did change only incrementally, while Windows leaps chaotically between new features and philosophies. That's not true, and in fact the illustrations used contradict the conclusions drawn in the article.

For example, when they talk about the introduction of the proto Dock in Mac OS, they say "no major changes in UI". But when Windows introduces the Start menu and task bar that's changing the UI "completely". Then come the incremental UI refinements and color changes that coincide with new graphics capabilities, again this is heralded as being more of the same for Mac but radically different with each version of Windows. Looking at these screenshots _which show similar trends in UI development_ side by side and coming to wildly different conclusions in the face of those similarities is just a stunning display of cognitive dissonance.

The change to Metro would be the only big jump where the article is actually right in asserting a real change, if we'd be willing to forget the fact that Metro (or whatever it's called now) is nothing but a thin veneer you have to get past in order to access the real Windows, which is of course pretty much a clone of its predecessor.

All this just to explain a conclusion from an anecdote, a conclusion which the article itself proves wrong unwittingly. Even if we accept that OS X users don't buy books about their OS and don't rant as much (which I find particularly out of touch with reality), that's because there are vastly more Windows users around. Because the numbers are so great, there are also a lot of Windows users who lack the tech intuition but want to learn, so they buy a book about it. OS X clientele is just by and large different. That's where the real difference lies.

<comment><USER4> I agree. The GUI changes in Windows (pre-8) are pretty negligible. Your Start button used to be rectangular; now it's a circle. Big whoop.

The most frustrating thing for me about Windows over the years is that the path to perform routine tasks is always changing.

<comment><USER5> _Your Start button used to be rectangular; now it 's a circle. Big whoop_

Between versions of windows there are fairly substantial changes in how the start menu is organized and how a user can customize it. I'm using Windows 7 and I'm still not sure how the items in the primary menu are selected to be there. It usually seems to have what I'm looking for so I don't worry too much. But it's not as usable as I remember from older versions of windows.

That said, I do think the article sells windows short unfairly. It's true that (pre Windows-8, anyway) key gui features of windows have remained consistent between versions. I haven't ranted about Windows in a long time (other Microsoft products, that's a different story).

Incidentally, I believe the particular feature you refer to, the start menu as a general principle, is one of the best design choices microsoft ever made. It's not the most efficient way to organize a UI, but a hierarchical system is a great way to design for incremental discovery.

<comment><USER6> "I'm using Windows 7 and I'm still not sure how the items in the primary menu are selected to be there."

Most recently used. And by implication, most commonly used.

"It usually seems to have what I'm looking for so I don't worry too much."

Et voila.

<comment><USER5> _Most recently used. And by implication, most commonly used._

Well, which is it? There appear to be two categories, one on the top and one on the bottom. Both appear to be some formula of recently used, commonly used, and likely to use again but it's not clear what the difference is or what the secret sauce part of the formula is (.exe size, for example?). The only thing it's obviously NOT, is a strict "recently used" formula. Also the submenus are just weird. It would seem to be "recently used files" for the associated application but with putty, for example, there's only a single random .jpg file and attempting to open it causes an error. Obviously I suppose, putty can't open jpgs, but why is it even there and how do I get rid of it? No idea. I can "unpin" it but it doesn't go away.

Also, to the main point-- the contents of that menu have changed substantially from windows XP, meaning that I pretty much have to throw away most of what I learned from the previous version.

It's really a mess. Some things I launch from the start menu, others I launch from a desktop icon, others I have to search for using the search box. Outlook and firefox are in the quicklaunch area. Even one tool I use all the time (procexp.exe) never gets added to the start menu, yet the videogame LIMBO is there, which I played once last year over the course of a few days and then opened it once for 5 minutes 1-2 weeks ago and haven't touched it in the interim.

It's not that it's so horrible I can't get things done, but all this UI change improves nothing about my user experience over windows XP (which still had a section for recently used apps, which was a convenient and useful addition to the core design.). The search is faster, and adding search with a new results UI as the fallback behavior to what used to be the "run..." command window was a very sensible tweak.

But the new UI tends to cause some minor annoyances any time I want to do anything of the sort of power-user stuff I used to do when I was younger. My prior knowledge of windows is rapidly becoming useless and I'm getting very little from the OS in return.

</comment></comment></comment></comment></comment><comment><USER7> The joke used to go: Windows users blame Microsoft, Mac users blame themselves.

(Linux users just fix the problem on their own.)

I concur with other posters saying that Mac users ranted a lot when going from Mac OS 9 to OS X 10.0, and they had a lot to rant about. OS X felt slow and didn't support lots of devices, and was a brand new paradigm of computing for them at the time. Now, a lot of stuff just works, much like Mac OS felt like it did.

<comment><USER8> Linux users just try another distro.

<comment><USER9> Depends at what stage they're at in their Linux adventures...

Some will try a new distro with better defaults, others will just change their set-up themselves...

<comment><USER10> Agree with this - switched to dwm and setup some config files and am now unaffected by the changes blowing through gnome, unity, kde etc.

</comment></comment></comment></comment><comment><USER11> Funny how they the article turns the stagnation of OS X into a benefit.

Also interesting that Windows users now rant about their OS, where they used to rave about most releases instead. I remember being genuinely excited about Windows 95, 98, 2000, XP, Longhorn (but was disappointed by Vista) and 7. I was even tempted to buy a new version from my saved pocket money as a kid - <USER2> eventually got pirated versions of 2000 and later XP though :-).

Nowadays, I dread new OS releases. Be it Windows, OS X, Linux (Ubuntu, Gnome) - OSes and desktop environments get heavier with each release, yet loose features, and get hideously redesigned because Touch and UX, LOL.

From that perspective, the stagnation of OS X _really is_ a virtue, since Apple is at least not messing it up.

(I like the inverted scrolling from Lion, the new notifications are useful, and Mission Control is not bad. I can pretend Launchpad is not there. OS X feels like Ubuntu anno 2010 or XP with a Mac theme, which is a good thing.)

<comment><USER12> It's odd because I am a long time Windows user and just recently (2 years ago) bought a Mac. I have to say the things I dislike the most about recent Mac UI is the dock, notifications, and mission control.

The dock staple is part of my biggest problem with my Mac. It takes of screen space and is completely useless after I open the couple programs I am working in. Sure, you can auto hide it, but the transition, plus deal with it randomly popping up on my screen make it extremely cumbersome.

This is where Windows 8.1 gets things right (and some wrong). You can make the menu on the bottom extremely thin, then use an overlay transition to choose your programs.

This is why on Mac I wish I could just rid myself of the dock completely and use Launchpad. I don't understand why there is both. When I minimize a program and want to go back to it I just pop launchpad open and click the app again.

Most of all these both work perfectly with touch based screens. I personally don't have any touch based screens yet, but that is the way technology is going and it embraces it while still making it useful for mousing.

<comment><USER13> If you're a power user do yourself a favour and install Alfred[1]. You can keep the dock hidden and launch/switch_to apps with a couple of keystrokes.

[1] [http://www.alfredapp.com/](http://www.alfredapp.com/)

<comment><USER6> I've installed Alfred, bought the Powerpack, and a couple of Workflows and this… I agree. I'm nowhere an /Alfred/ power user, but I just need to devote some time.

I did things like "replace" Spotlight with Alfred. Need to connect to my work VPN? Cmd Space, "vpn con".

</comment></comment></comment></comment><comment><USER14> Well mac users do rant too. A lot actually.

If not for the title, I think you do have a point here. I've had a mac for close to 6 years now and after each installation/upgrade, it feels like I'm back on my old laptop - nothing seems to have changed drastically. And that is a great thing. You get back to work faster knowing that things have been improved under the hood.

</comment><comment><USER5> The meat of the linked article are pages 2 and 3, where the author gives a breakdown and commentary of the Mac and Windows approach to UI. Those pages are short with lots of graphics. Page 1 is stupid and page 4 is redundant. (This paragraph is for people complaining about the supposed length of the article and for people commenting on the title only)

The point of the article is that Apple has never made any dramatic changes to their core UI while Microsoft never seemed to settle on one that worked. While I disagree in many respects, the author makes a reasonable case.

The truth is that for most windows (and even mac users), they tend to be locked in to their OS of choice for other reasons and just deal with whatever UI they get. The lesson is more relevant in the general sense and applies to all manner of other GUI software. Windows users might be stuck with Windows but what stopped Ubuntu users from jumping ship when Unity made arbitrary unwanted changes to the interface? What stops Firefox users from switching to chrome or Opera when upgrades break functionality?

<comment><USER15> I think the bigger problem with Windows 8 was a broader problem that I saw articulated in a thread on reddit.

The thread was about how it seems like next-gen game companies seem to treat releases like they are beta releases. Many of the games for the PS4 and Xbox One are riddle with bugs. Companies seem to have gotten to comfortable with the fact that they can easily release updates post-release, and it's gotten to the point where they are releasing unfinished software to customers who expect it to be a finished.

Major problems with Windows 8 that should never have made it past QA/UAT:

1\. Missing start menu button. Extremely confusing jump from 7. Fixed in 8.1

2\. Confusing full screen start menu. Remedied in 8.1 with tutorials and better UI cues (down arrow for unpinned applications, embedded search bar on all applications page)

3\. On Desktop, files should not open in metro apps by default. (still not fixed)

There should have been a longer beta testing period, and Windows 8.1 should have been Windows 8.

So really, I think the more important point is the mentality of the release cycle. Windows 8 was teased long before it was finally released, so there was a "why is this thing they _promised_ us taking so long just release it already" effect. Apple, on the other hand, tends to hold off on announcing their products until shortly before they're released. There's a "it's been a while since Apple released something new, I wonder when they will release the next thing" effect, which allows them to wait until products are more releasable before actually announcing them

<comment><USER16> I wouldn't say missing start menu button was "fixed" in 8.1. All they did was put a button there that had the same functionality as that corner without a button already had.

</comment></comment></comment><comment><USER17> For me the Mac is nice because its command line almost matches a linux setup. I use it because it is like a pretty Linux GUI. However finder and preview in 10.7 have some annoying glitches that I really find annoying. For example, in preview you can no longer simply save a document you have to export/duplicate what not. Finder has an annoying habit of trying to be too clever: if you hover a set of files over a folder it will helpfully change the finder window to epxose more of the target folder. Unfortunately this will change the finder geometry causing me to often miss the target of my drop.

The OS is sufficiently different from Linux to be annoying in crucial moments when I have too look up why a certain command does not work, or works differently.

Also, bsd/linux source code compiling often work, but sometimes don't making things more annoying than if they never worked and you knew what to expect.

Wait: I was just ranting. And yet I'm a mac user.

<comment><USER18> my favorite is how they have a stupidly ridiculously low ulimit maxfiles of 256.. and keep on changing the way to persist it between os releases.

unless it's something unixey i use every day, i now just refuse to bother with installing it on OSX. a VM is so much easier.

<comment><USER17> Hey, which VM do you use and what kind of a performance hit is there?

</comment></comment></comment><comment><USER19> Mac users do bitch about the OS, there's forums where they have done so for decades. There's still folks calling for Apple to fix the fucking Finder. I used Mac OS back in the day and was one of the early users of OS X. But none of this was magically intuitive, people did and still bought how-to books and spend hours Googling tips.

And yes, Windows hasn't been that great over the years, but like most tools is manageable with effort. Windows 8.x has been a step backwards on the desktop but Windows Phone is surprising good.

As a pro I still think GUIs are one piece of the system, but CLIs still rule in my world.

</comment><comment><USER18> i could actually rant for hours. but it just frustrates me.

i loathe the app store to the deepest core of my being and actively resent any software I am forced to install with it.

snow leopard was a tragedy. most people I know had their machines developing weird quirks around then. supposedly osx only stays wonderful as long as you always have the latest and greatest.

i now avoid new mac releases as much as possible. last time it was xcode that forced me to upgrade. That is just the most ridiculously large installer for gcc ever.

Oh god yes, and even if you go 'theres cli-tools' (behind a registration wall that you have to know specifically to look for) ... last month, apple decided to booby-trap their gcc binary to force you to open up xcode and agree to a new license agreement before you were allowed to compile things on the command line.

if you didnt have xcode, you had to download it, to open it up, agree to the compulsory license agreement to unlock your cli binaries.

<comment><USER20> Why the app store hate? My work computer needed an OS re-install recently (learned to be careful with sudo) and then they bought me a new computer shortly after. The app store made it easy to re-install a bunch of my apps like Evernote, Aperture, iWork, etc., and the app store keeps these constantly upgraded. Then I had to go through and download a bunch of other non-app-store apps (MS Office, ImageJ, Matlab, Adobe suite, Canopy, etc.), and these apps are always popping up with their own custom update software to remind me to update them when I open them.

I think it would be great if I could just use the app store to keep track of all my software, easily install and uninstall it on different machines, and keep it updated in the background.

</comment></comment><comment><USER21> This simply isn't true. The jump from Mac OS to Mac OS X was huge and Mac users ranted for years about it. You had different file structures, compatibility issues, and Mac OS Classic prided itself in its "out of your way, no nonsense" GUI while OS X started the "Fisher Price" GUI era.

More than a decade has passed since then, so I don't remember all the details, but you certainly had to learn the OS X way, just like the man learning Windows 8.

</comment><comment><USER22> Some examples of books on how to use a Mac:

[http://www.amazon.com/Books-Learning-How-Use- Computer/lm/RMA...](http://www.amazon.com/Books-Learning-How-Use- Computer/lm/RMAUY0TZ0OSRX)

[http://www.amazon.com/Macs-For-Dummies-Edward- Baig/dp/111851...](http://www.amazon.com/Macs-For-Dummies-Edward- Baig/dp/1118517199)

[http://www.amazon.com/My-iMac-Mountain-Lion- Edition/dp/07897...](http://www.amazon.com/My-iMac-Mountain-Lion- Edition/dp/0789751135)

[http://www.amazon.com/OS-Mountain-Lion-Pocket- Guide/dp/14493...](http://www.amazon.com/OS-Mountain-Lion-Pocket- Guide/dp/1449330320)

[http://www.amazon.com/Simple-Guide-Mac-Mountain- Edition/dp/1...](http://www.amazon.com/Simple-Guide-Mac-Mountain- Edition/dp/1481077570)

Doesn't seem all that different from Windows, after all. I've also heard plenty of Mac users rant about their computers.

</comment><comment><USER23> OSX doesn't do shit that pisses me off. That's what I like about it. It doesn't do things without asking. Oh you want to shut down? How about we run some updates first. Oh lets just reboot because I ran some updates. Hey there's a new JAVADOBEVIRUS update you should get it. Oh you're on a laptop? Lets run 253 updates while it's booting up, you don't need that battery life right?

Telling my computer to do something, and having it do something completely different is one reason why I use OSX. Sure, you can force windows to try and be like that, but how long until an update undo's all your little tweaks you've put in place?

</comment><comment><USER24> It always amuses me when people compare operating systems and all they talk about is GUI.

<comment><USER25> Because Linux always lose at this comparison? GUI is one of the most important parts of OS for most people.

<comment><USER9> Linux has some of the nicest DEs.

But we are used to the DE being de-coupled from the OS, and being able to change it. For Windows and Mac the DE is a 'selling point', for Linux it isn't because it can be changed any which way you want. I mean, in Ubuntu it's trivial to install 10 different DEs and switch every time you log in...

<comment><USER26> 14 channels of shit on the tv screen.

<comment><USER9> Lol. Beauty is in the eye of the beholder. I'd personally take Unity or Gnome Shell over Windows' or OSX's UI anyday...

</comment></comment></comment></comment></comment><comment><USER27> 2 sets of pagination links, one broken.

<comment><USER28> That was how the page started, and they didn't want to change it so as to not upset anyone by making them have to cope with new page UI. Even if it would work better.

</comment></comment><comment><USER29> This is a terrible article which is made worse by unnecessarily being broken up into 4 pages to quadruple ad views.

Mac users bitch about the OS. It just so happens we're at a point where Windows 8 is a drastic change from Windows 7 and OS X hasn't made any drastic changes for a while.

</comment><comment><USER30> At least in my circle of friends, and company, which are pretty much all Mac users, the basic premise that they don't rant, complain, or talk about Mac OS is completely flawed. I have to hear about problems with every Mac OS release for days and weeks after each release, and get tired of the cross-chatter about it. The Mac users I know talk about and complain about Mac OS probably more than any other topic I hear them talk about, nearly as much as sports fans talk about sports.

I'm really just jealous that the people I know don't all use Linux and aren't as passionate about it. :-/ But there's a certain blindness when you're the fan to how much you fan out about things.

</comment><comment><USER31> Apple features are only used when you explicitly call for them. Otherwise the entire Finder experience can be considered almost kiosk-like in its simplicity.

If you do want to learn how to use a new feature, you have to Google it just like the rest of us.

If you have a problem with OSX, prepare to enter the dark world of the Apple Forums where any expectation of something working outside of Apple's narrow definition of functionality will be met with derision and ridicule.

But is OSX is a slow torture than Windows 8 is a rocket launcher to the head.

I've never understood why we have to 'like' one over another. Can't we just hold them all to a higher standard?

</comment><comment><USER32> _yawn_

Anyone that has been tinkering with OSs for a while will understand they all have their benefits. As a web app developer, I run Arch Linux w Gnome Shell 3.10 on my personal computer and my company provides me with an iMac at work.

For an experienced user, Mac OS is a unix prison. All the cool tinkering and customizations I love about my linux build are usually locked down in a Mac.

When it comes to family members and non-tech people who ask for my recommendation on products though, I usually push them towards Apple. Apple products are essentially tech-training wheels.

</comment><comment><USER33> I hope to hell that this person's first language isn't English.

</comment><comment><USER34> I don't feel like reading through four pages (yeah, I'm lazy), but I'll take a guess as to what the rest of the article talks about.

1) OSX doesn't change significantly. People ranted about OSX for _years_ , until one day they kinda stopped. Because OSX was new and fresh, right up until the point when it became the same thing that it's been for 13 years.

2) More people use Windows so more people are talking about Windows.

3) Therefore, OSX is better because [insert reason].

<comment><USER35> First point was correct, other two weren't. It was basically a jab at how terrible the Windows 8 UI overhaul was, rather than a boast about how great the Mac UI is.

EDIT: Incidentally, the Windows 8 UI overhaul _was_ terrible. _Really terrible_. I mean, that does need to be pointed out. Apple got a lot of stick for some slight changes to the way their icons appear on the newer version of the iPhone (forgive me, I'm not an Apple user so I can't comment, I just know the word 'skeumorphism' was thrown around with various levels of anger), but Microsoft seemed to get a much quieter and meeker acceptance of their terrible UI overhual. Yes, there were articles at the time saying "what is Microsoft thinking?", but it seemed -- at least to me -- to just be wearily accepted that Microsoft had dramatically changed their UI so that it was unusable for anyone coming from a previous version of their OS.

I'm not really sure why there wasn't more consumer outrage about Windows 8. Every Windows 8 user I speak to hates its UI, but they just seem to hate it and get on with it. Maybe it's because Windows users are generally less excited by their OS than Mac users? I've never really known a Windows user to speak at any great length, positively or negatively, about their OS.

<comment><USER9> > Incidentally, the Windows 8 UI overhaul was terrible. Really terrible.

To be honest, I actually like it. Not enough to use Windows over Linux, but the Metro UI is really cool. Has search functionality, and every app is essentially its own self-updating widget. Very cool.

</comment></comment></comment><comment><USER36> You've never been on apple forums, don't you?

</comment><comment><USER37> I expected this thread to have more debate. I'm hardly the first person to point out that the OS is increasingly irrelevant, but I think this thread adds evidence for that theory.</comment>


PATH_MAX Is Tricky - <AUTHOR> https://eklitzke.org/path-max-is-tricky <comment><USER2> Windows has a similarly disastrous situation where most tools and APIs follow MAX_PATH - which is defined to be 260 chars. But that doesn't affect the actual filesystem or syscall interface, just common APIs and tools. This makes it impossible to delete files from windows explorer for example.

If you want to fix this you basically have to bypass it by using "\\\?\" on the front of the full path. The situation gets messy when you're trying to write an installer with node packages especially.

[https://msdn.microsoft.com/en- us/library/windows/desktop/aa3...](https://msdn.microsoft.com/en- us/library/windows/desktop/aa365247\(v=vs.85\).aspx#maxpath)

<comment><USER3> That's an issue that lies in the unfortunate intersection of 16/32 bit Windows, Windows NT and MS libc (MSVCRT), which support some combination of two and a half system designs.

<comment><USER4> Microsoft could have fixed it with Win 64bit (Win64).

They had done such a step before with the switch from Win16 to Win32 and the help of Win32s. With Win32 they cleaned up the old API, fixed things yet kept it source compatible when possible. Microsoft could have fixed so many things with Win64 starting with Windows 2003 64-bit. But no, Microsoft invested little on native Windows API between 2002 and 2012 - Longhorn (later Vista) and dotNet were the latest hype.

<comment><USER5> Microsoft has partially fixed this in Windows 10 but it is not simple or easy. [https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-...](https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and- long-paths-on-windows-10/)

</comment></comment></comment></comment><comment><USER6> > The problem is that you can't meaningfully define a constant like this in a > header file. The maximum path size is actually to be something like a > filesystem limitation, or at the very least a kernel parameter.

AFAIK, "paths" aren't a thing filesystems think about. As far as a filesystem driver is concerned, paths are either—for open/read/write/etc.—plain inodes (a uint64), or—for directory-manipulation calls—an inode plus a ptrdiff_t to index into the dirent list†. The only things that care about NAME_MAX are lookup(2) [get inode given {inode, dirent}], and link(2) [put inode in {inode, dirent}].

So it's really only the kernel, through its syscall interface, that cares about paths—and so PATH_MAX is just a representation of the maximum size of a path the kernel is willing to accept in those syscalls. As if they each had a statically-allocated path[PATH_MAX] buffer your path got copied into.

† Writing a FUSE filesystem is a great way to learn about what the kernel thinks a filesystem is. It's very different from the userland perspective. For example, from a filesystem driver's perspective, "file descriptors" don't exist! Instead, read(2) and write(2) calls are stateless, each call getting passed a kernel-side io-handle struct that must get re-evaluated for matching permissions on each IO operation. (You can do _some_ up-front evaluation during the open(2) call, but, given that a file's permissions might _change_ while you have a descriptor open to it, there's not much point.)

<comment><USER7> > For example, from a filesystem driver's perspective, "file descriptors" > don't exist! Instead, read(2) and write(2) calls are stateless

That seems hard to believe. It would inefficient to look for a file for each e.g. write(). I guess a filesystem defines its own implementation-defined open-file handle and the kernel translates that into an (integer) FD.

> each call getting passed a kernel-side io-handle struct that must get re- > evaluated for matching permissions on each IO operation. (You can do some > up-front evaluation during the open(2) call, but, given that a file's > permissions might change while you have a descriptor open to it, there's not > much point.)

That's not how it works. File modes are checked when you open the file. Once you have an open file (a file handle), the file modes no longer matter.

File modes are more a "PATH" thing (there aren't per-filesystem variations and I assume permission checking is not done in file system code), although the file system must allocate the space to save the file mode bits and implement the VFS API.

<comment><USER6> > there aren't per-filesystem variations and I assume permission checking is > not done in file system code

There are! Keep in mind that "filesystems" includes things like NFS and SMB. The local kernel has no ultimate authority over security policy of a remotely- mounted filesystem, right? In open(2), the kernel has to ask the filesystem what's what, because the filesystem might know something the kernel doesn't.

Now, the interpretation of stat(2) values (UID/GID, ACLs, etc.) are up to the VFS—but the filesystem is the one that created that stat struct when the kernel called its stat(2) impl, and it expects to get that stat-struct passed back with no changes to open(2), and then make the decision for itself what those stat-struct members _mean_.

Which is to say, it's perfectly possible to write a filesystem that says you have 0000 permissions on a file, but which still lets you open(2), read(2), write(2), readdir(2), etc. that file! It's up to the filesystem to _enforce_ file permissions or ACLs, and it can do that however it wishes; stat(2) is just an _indication_ , in a common VFS language, of the policy the filesystem is (probably) going to enforce. It's not a baton passed to the kernel to do the enforcement for it. Linux has no equivalent to NT's kernel-object ACLs.

> File modes are more a "PATH" thing (there aren't per-filesystem variations > and I assume permission checking is not done in file system code), although > the file system must allocate the space to save the file mode bits and > implement the VFS API.

Ah, sorry, I didn't mean file permissions; was a typo. I mean things like, the process on the other end of a pipe closing its write end, will cause your read(2) call to that pipe's FD to fail, because the _IO permissions_ (not file permissions) on the FD have changed between the two successive read(2) calls.

When your open(2) impl gets called, you receive a stat(2) [that you previously created yourself when the kernel called your stat(2) implementation], and a set of open(2) flags, compare the two, and decide whether to grant each requested permission from open(2) given the stat-struct. Essentially, the open(2) impl is a pure mask-function on the requested flags, to determine what permissions actually end up put into the descriptor. (Conveniently, the kernel then returns a permissions error if it doesn't get returned the perms it asks for. But it could always end up with _more_ perms than it asked for!)

Then, later, the kernel can modify that set of IO permissions without telling you, and your next read(2) or write(2) might get called with different IO permissions.

Another interesting fact: in the VFS struct file_operations (where you put your pointers to your filesystem's implementations of file operations), there is no member representing close(2). No FS-driver-level function gets called by the kernel in response to close(2)! Instead:

• There is a flush(2) that gets passed a file struct, to indicate to the FS that a given file's handle has been closed—but this is only there so that, if the file is part of a filesystem with synchronous-commit (e.g. NFS in sync mode), closing the file will trigger a flush of the entire _device_. This is stateless and idempotent; a given file-struct might get flush(2)ed any number of times. It's there to ask the the file's extents' backing store to checkpoint itself, not to do anything with the file itself.

• There is a release(2) that gets called when _all_ handles to a file have been closed—i.e. when the kernel's "open(2) refcount" on the file-struct drops to zero. If the filesystem, say, caches some things about the file when you open(2), you can release that cache-entry on release(2).

Notice that neither of these operations has semantics that would let you clean up local state allocated in a table keyed off anything passed to open(2), because there's no call that happens 1:1 with open(2) calls. Thus, you really _can 't_ key local state to a struct-file in a way where you can later look it up again. And there's nowhere _inside_ a struct-file to stash a key for your local state, either. So, like I said, read(2) and write(2) are "stateless."

<comment><USER7> > There are! Keep in mind that "filesystems" includes things like NFS and > SMB...

Of course - I would call that "augmentations". But still each has to implement the dreaded POSIX modes to be compliant.

Thanks for the thing about there not being any state for open files in the filesystems themselves. I browsed a bit around the LXR and couldn't find any. That's insightful! (and I think it's a sensible design choice)

</comment></comment></comment></comment><comment><USER8> All the UNIX/Linux/POSIX functions which take output "char *" params without a length should have been moved to deprecated header files a long time ago. Like 1990 or so. It's not too late.

<comment><USER9> Sometimes I dream of a world where C had a built-in string type. Imagine how much time could have been saved, and how many crashes prevented.

</comment></comment><comment><USER10> The GNU Hurd approach to PATH_MAX is to set it to something ridiculous like SIZE_MAX, something that cannot possible be allocated, to illustrate to programmers that it is a fiction.

I don't think that's necessarily the best approach, but it matches reality more closely than typical Linux/BSD values (1024 or 4096).

<comment><USER11> That seems like a bad idea because people will then use inconsistent max path lengths.

<comment><USER10> The idea is you need to allocate and resize larger if your initial buffer was too small. It doesn't matter what inconsistent length you start with as long as you scale it up as needed.

<comment><USER12> I actually like that some Windows APIs you pass a buffer to will tell you if the buffer was too small _and_ the necessary size to accommodate the result, requiring a bit less guessing.

<comment><USER3> It's still a race though - you _have_ to loop (possibly indefinitely).

<comment><USER12> Ok, didn't think of another thread changing the directory. Still, there's an upper bound around 32 kilo code units, so not indefinitely. Unless UNC paths are not bounded, don't know about that right now.

<comment><USER3> True, thought the wrong way about it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> This post got me curious, so I did a quick search on macOS 10.12. I found the values defined in "/System/Library/Frameworks/Kernel.framework/Headers/sys/syslimits.h". PATH_MAX is 1024, and NAME_MAX is 255.

There's also an amusing todo question that looks like it might've been there for at least close to 20 years now:

        #define	OPEN_MAX		10240	/* max open files per process - todo, make a config option? */

</comment><comment><USER7> The essence of the article: PATH_MAX applies to the syscall interface. It's not related to file systems. Paths aren't a file system thing, but simply a convenient means of addressing files. Basically they are URLs for local resources.

And that totally makes sense once you understand that files are basically "objects" (in the OO sense) identified by inodes instead of memory addresses. A file system implements the graph of these objects (linked by special file objects called _directories_ ). The fact that one can cross file system boundaries using file paths also indicates that file paths are none of a file system's business.

<comment><USER14> > It's not related to file systems. Paths aren't a file system thing, but > simply a convenient means of addressing files.

> The fact that one can cross file system boundaries using file paths also > indicates that file paths are none of a file system's business.

The filesystem knows about file names, stores them, and puts limits on them (often 255 code units though some are lower — FAT16's 8.3, HFS's 31 — and some are higher — Reiser4's 3976 bytes).

A file path is nothing but a concatenation of a bunch of file names and separators ergo file paths are, in fact, an FS's business.

And while that's mostly fallen out of style there are still length-limited- path filesystems: ISO-9660 and UDF for instance.

<comment><USER7> > A file path is nothing but a concatenation of a bunch of file names and > separators ergo file paths are, in fact, an FS's business.

This is a non sequitur.

</comment></comment></comment><comment><USER15> > _This constant_ [PATH_MAX] _is defined by POSIX_ …

Well, it's _allowed_ by POSIX. A POSIX compatible system doesn't _have_ to define it if it has no such inherent restriction on path lengths. Indeed, the GNU Hurd does not have such a restriction, and consequently does not define it. This leads to many porting adventures for those trying to compile a program on GNU Hurd, believing their source code to be correct for any POSIX- compliant system.

</comment><comment><USER16> And to add to the confusion unix domain sockets have a maximal length of something between 92 a 108. That's an implementation detail of platform it's running on. This in particular has been biting me already.

</comment><comment><USER17> I played around with glibc's getcwd() some time ago. With strace one can easily see how getcwd() works. If the current path is larger than PATH_MAX then the getcwd syscall fails. Then as I recall glibc uses '..'s recursively so it never has to call a syscall with a long relative path.

If there is a non-user-readable directory in the path then the fallback method fails but the getcwd syscall works if the path is short enough.

Bash also "cheats" by caching the working directory and updating it on 'cd' commands.

</comment><comment><USER18> If I understand the conclusion of the article right, it's that we _should_ actually just use PATH_MAX? In particular, he points to the glibc implementation of realpath as being very correct. But it (like the man page description of it says), appears to prefer to use the hard-coded value of PATH_MAX, unless that value is unavailable and it is forced to query for the kernel _PC_PATH_MAX value instead.

That's not what I would have expected. Did I miss something obvious?

</comment><comment><USER19> That's tricky indeed. And doing things properly seems quite involved.

For now I'll keep my limits.h. At least until I get a real-world bug-reports telling me this is causing real-world issues :)</comment>


ZeoBIT deceptively advertised and sold MacKeeper as enhancing an Apple Macintosh - <AUTHOR> https://yenchasoftwaresettlement.com

<comment><USER2> Can someone tell me which of the various Mac-cleaner softwares are malware vs. crapware vs. useless vs. actually do something?</comment>


Ask HN: Top researchers in AI or Bionics? - <AUTHOR> I'm looking for the personal webpages or published works for respected researchers in the fields of AI and Bionics respectively.<p>If you know of any would you mind posting? <comment><USER2> AI

Yan le Cun

Yoshia Bengio

Geoffrey Hinton

Andrew Ng

Nando de Freitas

\</comment><comment></comment><comment>---

BCI

Hugh Herr

Gregoire Courtine

Miguel Nicolelis

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER3> Schmidhuber

Hutter</comment>


Ask HN: Why so many SEO posts all of a sudden? - <AUTHOR> This morning I have observed three SEO posts in the top 15 links on Hacker News:<p>- Black Hat SEO Case Study: How Mahalo Makes Black Look White<p>- Some SEO Advice For Bill Gates<p>- Strategic SEO for Startups<p>Is this a coincidence, or can it be explained by something else, such as a sudden influx of SEO types to this forum? <comment><USER2> It's not just SEO, it is practically any subject on HN that gets a periodic wave of interest.

I think it is simply tied in to the nature of the web. If you 'inject' a bunch of users via a link on HN in to a spot on the web then from there they will spread like sinking a mineshaft will exhaust the resources in the neighbourhood of the shaft.

Then, when that particular mine is exhausted (no more interesting content to be found around that locus in the web) the subject dies down until someone finds a new and untapped reservoir.

I've seen this happen around all kinds of subjects, from programming languages to hardware hacks and political stuff.

<comment><USER3> That is a really interesting analogy, I would have never thought of it in that regard.

</comment></comment><comment><USER4> The first post submitted had a link to at least one of those other sites. Then I guess some HN people went through the linked sites and submitted stuff they found interesting.

Happens all the time, a fairly unknown blog gets submitted, then all of a sudden two or three more posts from that blog pop up on HN as people start exploring the new content (well, new to them). I've also noticed it happens to unknown stories linked in blogs.

<comment><USER5> As a result, the subject of submissions is autocorrelated. I wonder if this could be visualized using this:

<http://news.ycombinator.com/item?id=1048866>

</comment></comment><comment><USER6> Phase one: spend a year here, amassing 16k karma by being mostly helpful and well informed.

Phase two: write a post on a favorite topic I havent covered in a while.

Phase three: lure a cynical,disinterested, and not really wealthy audience to my blog.

Phase four: while you are not on HN, wage a sudden takeover by SEO content. After that it was all over but the cackling.

</comment><comment><USER7> SEO.

<comment><USER8> Why the downvotes?

Practically everyone who sells SEO services has a blog explaining what is SEO, how it works and why you should hire him. These blogs are SEO'd to the maximum of the owner's ability, of course. What I hate about these articles is that they are optimized for indexers, not humans: the explanations doesn't make much sense but they try to cram in all the relevant keywords. Interestingly, this works well also with humans in a short-attention-span mode: you would think the article is useful if you just skim through it.

I have stopped reading anything mentioning SEO in the title so this may not be the case with the mentioned articles, but it is the explanation why I stopped reading them: the signal to noise ratio is pretty bad.

<comment><USER9> the article by patio11 (startup seo) was really good and was well written. Not everything can be dismissed outright :)

</comment></comment></comment><comment><USER10> To me most SEO articles = Spam. Thus when I see a lot more articles I just assume o yey more spam.

</comment><comment><USER11> Maybe because lots of people who like SEO read these forums? At a certain amount of users, sub-interests can gain a voting-block like effect. We'd need to see more data about increased SEO posts to know for sure though.

</comment><comment><USER12> If people see a particular topic being upvoted, they're more likely to submit articles on that topic.

</comment><comment><USER13> Because it is not a next big thing anymore and even teenagers can do it. And because google itself is just a mainstream. =) "The main navigation system" as some clever guy named it.</comment>


Ask HN: What is the most analog car available today? - <AUTHOR> Looking for a new car with the least electronics possible (USA), and easiest reparability. Basically as minimalist and simple as possible but still available for purchase from a dealer as new. <comment><USER2> What's your threat model? In other words, is your primary goal to find a vehicle that's easy to repair, or easy to tinker and modify, or one that is less vulnerable to malicious actors that target electronic components?

In either case, your 'new' qualifier makes things increasingly difficult, as rear-view cameras will be required in all new cars sold in the US in 2018 [1]. Electronic Stability Control has been mandated since 2012 [2].

Edmunds published a blog posts last year on buying 'low tech cars' [3] that seems to fit your criteria, where they name some base models of cars that are less fitted to the brim with electronics.

[1] [http://www.nhtsa.gov/About-NHTSA/Press- Releases/2014/NHTSA-A...](http://www.nhtsa.gov/About-NHTSA/Press- Releases/2014/NHTSA-Announces-Final-Rule-Requiring-Rear-Visibility-Technology) [2] [https://web.archive.org/web/20100111175448/http://www.nhtsa....](https://web.archive.org/web/20100111175448/http://www.nhtsa.dot.gov/portal/site/nhtsa/menuitem.012c081c5966f0ca3253ab10cba046a0) [3] [http://www.edmunds.com/car-technology/how-to-buy-a-low- tech-...](http://www.edmunds.com/car-technology/how-to-buy-a-low-tech- car.html)

</comment><comment><USER3> How about a reissue? [http://www.foxnews.com/leisure/2015/03/13/new-164-12-ford- mu...](http://www.foxnews.com/leisure/2015/03/13/new-164-12-ford-mustang- revved-up-and-ready-for-sale/)</comment>


SpaceX Crew Demo-1 Mission [video] - <AUTHOR> https://www.spacex.com/webcast <comment><USER2> I am an engineer who builds with a computer. And when I see such things as this, I sometimes spend a minute or so marveling and thinking about the complexity of building and orchestrating such a launch. In fact, I really cannot comprehend how something like this can be successfully done, given how so many things could go wrong. Yes, I understand the idea of redundancy, I understand gravity, I understand that physics and chemistry goes into this, but still, the engineer in me wonders how on earth can we make all of this work together. Really, kudos to spaceX, kudos to NASA, and and kudos to those who believe in science.

<comment><USER3> Computer engineering is new. We're still at the phase where bridges collapse and ships sink regularly.

<comment><USER4> Computer engineering is not substantially newer than aerospace engineering.

<comment><USER5> It's true, they just have different focuses. Aerospace (in general) has traded huge costs for safety and reliability. Computer engineering (in general) has traded correctness/reliability for low cost and rapid development.

</comment></comment></comment></comment><comment><USER6> Looks like they nailed the launch: first stage recovered and Dragon 2 separated successfully. Congratulations SpaceX!

Docking with the ISS is scheduled ~27 hours from now on Sunday, March 3 at 10:55 UTC (5:55 EST).

[https://www.space.com/how-to-watch-spacex-crew-dragon- demo-1...](https://www.space.com/how-to-watch-spacex-crew-dragon- demo-1-mission.html)

<comment><USER7> Anyone know why they choose a launch time and trajectory such that the arrival at ISS is more than a day later? It seems like you could choose to arrive at the ISS almost immediately after reaching orbital velocity if you wanted.

<comment><USER8> They don't reach the stations orbital velocity immediately after launch though. What they do is launch into a lower orbit behind the station. Lower orbits have a shorter orbital period, so they gradually catch up and raise their orbit as they get closer.

If the went into a ballistic trajectory directly at the station, there is a risk of debris from the launch, such as paint flecks, scraps of metal, etc hitting the station. Also a lower initial target orbit makes various abort scenarios easier. Then of course another poster has pointed out they need time to check and validate all the vehicles systems.

Generally in space it's best to avoid doing anything in a rush if you can avoid it. In recent years the Russians moved to a 6 hour launch to rendezvous window which is pretty quick really. This is what made it possible to capture footage of the launch from the station.

[https://youtu.be/ouBfzCgXHgk](https://youtu.be/ouBfzCgXHgk)

<comment><USER9> Technically they do reach the stations velocity. In fact they exceed it. The lower orbit is slightly faster. Total energy is lower, but they are moving faster than the station.

A counterintuitive part of spaceflight is that often you have to first accellerate in order to slow down.

<comment><USER10> Makes sense. Get up to a higher speed and it's easier to do a controlled slow down. Than having to speed up after getting into orbit near another orbiting body.

<comment><USER11> That's not really it. "Speeding up" and "slowing down" are equally easy (or hard). They're both acceleration, just in a different direction.

The reason it's going faster is because it's lower. The lower an orbit, the faster the thing is moving. In order to slow down, you have to accelerate twice (I'm using the term "accelerate" here to refer to "going faster in the direction you're already going").

The first acceleration raises the far side of your orbit. You then have to "climb" up to that new higher orbit. Once there, you accelerate again to raise the low side of the orbit (otherwise you'd pick up all that speed again then "falling" back down to the lower altitude).

At the end, you're in a new, higher, orbit, going slower than when you started.

</comment></comment></comment></comment></comment></comment><comment><USER12> From Eric Berger's twitter[1]

> _If the first stage lands tonight, SpaceX will have successfully landed 35 > of its 69 launches, meaning that MORE THAN HALF of its rocket launches will > have safely returned._

[1][https://twitter.com/SciGuySpace/status/1101752352317628416](https://twitter.com/SciGuySpace/status/1101752352317628416)

<comment><USER13> Same thing happened to NASA, started at 43.6% success rate for 1950s then 85.1% for 1960s, etc. etc. [https://space.stackexchange.com/questions/1659/what-is- the-s...](https://space.stackexchange.com/questions/1659/what-is-the-success- rate-of-nasa-launches)

</comment></comment><comment><USER14> "Science is the only news."

([https://www.goodreads.com/quotes/213539-science-is-the- only-...](https://www.goodreads.com/quotes/213539-science-is-the-only-news- when-you-scan-a-news))

</comment><comment><USER15> This is so exciting! I had not heard this was happening and came to my favorite site to check out some bed time reading and find this! Awesome

</comment><comment><USER16> Ah, here I am, setting under the blanket and drinking a cup of tea with lemon, watching a rocket 9600km away from me that's about to go to space in few minutes.

What a time to be alive.

<comment><USER17> Pretty great friday night!

<comment><USER16> It's Saturday 11AM here, though.

<comment><USER18> Saturday night here.

What time zones do rockets use?

<comment><USER19> UTC is the time zone of space missions usually.

</comment></comment></comment></comment></comment><comment><USER20> The NASA TV feed seems to be higher quality than youtube (and has identical content).

[https://www.nasa.gov/multimedia/nasatv/index.html#public](https://www.nasa.gov/multimedia/nasatv/index.html#public)

<comment><USER21> Had same quality issues - then just told YouTube to use 720p instead of auto- resolution and it got all better.

</comment></comment><comment><USER17> Man this makes me miss when I was living at UCF - we'd see shuttles taking off at Kennedy space center from East Orlando

<comment><USER22> I grew up in southwest Orlando. We'd go outside during elementary school to watch the launches, we'd interrupt little league games and football games to watch the launches. Kids and parents all just found it so magical and amazing. Those solid rockets were clearly visible even 70 miles away.

<comment><USER23> I am 180+ miles South from the pad and it is visible from here! I love watching them.

</comment></comment></comment><comment><USER24> I'm at Kennedy Space Center on the causeway across from the launch pad. Just watched it from approximately 5 miles away. Insane.

</comment><comment><USER25> Thanks for posting this. I always watch the launches with my kids and I'd totally forgotten it was this morning.

</comment><comment><USER26> Post Launch Interview w/ Elon Musk & NASA Team Discuss SpaceX Dragon 2 Launch Success @ [https://www.youtube.com/watch?v=HuXPLtJXd14](https://www.youtube.com/watch?v=HuXPLtJXd14)

</comment><comment><USER27> Goosebumps when stage 1 stuck that landing.

Godspeed, Ripley!

<comment><USER28> Same here. Watching rockets land from orbit will maybe never get old.

Awesome job to everyone at SpaceX! Godspeed for the rest of the mission!

</comment></comment><comment><USER29> Everything went well so far. Lift off, stage separation, first stage Landing, Dragon separation. They have honed these steps over the past several years. The ISS rendezvous is going to be just as successful. Great going SpaceX/NASA.

</comment><comment><USER30> Kudos to the entire team of SpaceX, Nasa and Ripley (dummy) for this mission. This takes a great amount of co-ordination and integration to make this complex mission successful. Living in great era of innovation and advancement in space.

</comment><comment><AUTHOR> Launch window opens at 2:49 a.m. EST, or 7:49 UTC.

<comment><USER11> It also closes at 2:49 a.m. EST (Falcon 9 launches to the ISS have instantaneous launch windows).

</comment></comment><comment><USER31> Amazing footage. The precision Landing of stage 1 was something I hasn't expected.

<comment><USER11> This was actually one of the less precise landings. Generally it's right on the X. It looks like it may have slid a bit after touchdown.

</comment></comment><comment><USER32> tl;dr

no crew onboard

(still a great achievement)

</comment><comment><USER33> [https://www.youtube.com/watch?v=u-SAdjoFVHk](https://www.youtube.com/watch?v=u-SAdjoFVHk)

<comment><USER34> Official stream: [https://www.youtube.com/watch?v=2ZL0tbOZYhE](https://www.youtube.com/watch?v=2ZL0tbOZYhE)

<comment><USER35> If anyone is confused, the posted unofficial link is a rebroadcast of the Nusantara Satu mission and is not the Crew test.</comment></comment></comment>


Ask HN: How do I reach customers who don't know they have a problem? - <AUTHOR>

I've created an app for the Shopify app store (an ecommerce platform) that provides a customer stock notification service: http://backinstock.info.
The app has been live for about three months, and there has been a slow but steady trickle of registrations and conversions to paid plans. This is good, but now I need to crank it up. The potential market is quite niche, but much bigger than I have reached so far.
After a few attempts at Google Adwords and SEO the problem I keep coming back to is that few people seem to actively search for something like this app.
Customers who have installed the app generally love it. I think the problem is that if you are a successful and profitable online store you are busy selling things rather than googling 'increase shopify sales'.
How can I reach customers who are doing fine, but could be doing better? <comment><USER2> Reach out to a few shopify customers you know that are doing well, but aren't using your app.

Everyone wants to make more sales! Offer to only demo/present your product, not to sell. If your product is good, it will sell itself. Also use that time to do a problem/solution ranking/analysis when you talk with them. I.e. does your solution rank with the top problems/areas these customers are experiencing? Even if you have no interest with solving say another more pressing 'issue' they have at least you will know why it is ranked higher (or lower).</comment>


Show HN: OpenS3, a simple storage server - <AUTHOR> http://pablo-merino.github.com/OpenS3/ <comment><USER2> First, a warning -- I read through the Ruby source code for this project and it does zero input validation and is subject to many glaring security vulnerabilities, including directory traversal attacks. If you run this code, be prepared to serve up your entire disk to the Internet -- read/write at that!

If you want a REST/JSON based HTTP file storage server, just run Riak. Or if you want HTTP but don't care about JSON, fire up a WebDAV server of your choice. Incidentally, both of those technologies are about as compatible with the S3 protocol as this so-called "OpenS3" project... which is to say, they're not at all.

If a 200-line Rack hack is what it takes to make HN then I need to start submitting more of the code I write...

<comment><AUTHOR> Hello! I appreciate your critic, but keep in mind I'm a Ruby beginner, I do this kind of things, and I feel proud of what I achieve. You made me notice the low security it has, so I'll try to fix it. Thanks!

</comment></comment><comment><USER3> This would be even cooler if it implemented the S3 REST protocol so that people could use existing S3 clients.

Could be useful for testing or home-grown S3 network. Ie. put that in front of a bunch of Riak-backed servers.

<comment><AUTHOR> Hey thanks! I'm building a new one using the S3 API, it should be working in a few days!

</comment></comment><comment><USER4> Good job!

I love Ruby, but do you have any plans for a C implementation?

It would allow binding to a lot of other languages.

<comment><AUTHOR> Hello! It would be cool to have a C implementation, but I don't know C, so I couldn't do it. It'd be nice if someone made a C implementation! I'd push it on the main repo under the C branch</comment></comment>


Has anyone done a Ph.D. in CS, IS, or a related field part-time? - <AUTHOR>

I'm curious if anyone has worked towards a Ph.D. while employed and, if so, what advice do you have? Career-wise I'd like to get an applied research position in an industry research lab, not a faculty position at a university. I'm currently employed as a software engineer and my employer will pay for tuition (since I likely won't be taking a graduate assistant position). <comment><USER2> From what I've seen, PhDs in IS (aka MIS) are typically full-time; the professors are interested in having research assistants who will help them produce publications during and after the PhD. Also, IS departments are very small compared to other departments within the b-school. If an IS department only takes on 1 or 2 new PhD students per year, you would have a hard time convincing them that you're their best bet. Some business schools, however, have "DBA" programs which are doctoral programs geared toward tuition-paying students.

I would not assume that my generalizations apply across the board, and certainly not count on them applying to engineering schools, i-schools and other programs.

What part of the country are you in, by the way? That's probably going to determine your options.</comment>


Alibaba Is Said to Move Toward an I.P.O. in the U.S. - <AUTHOR> http://dealbook.nytimes.com/2013/09/25/alibaba-said-to-shift-target-from-hong-kong-to-u-s-for-i-p-o/?_r=0 Woo! <comment><USER2> For a fleeting moment, my work-weary eyes thought the title was, "Alabama Is Said to Move Toward an I.P.O. in the U.S.". After recognizing my mistake, I decided my first reading was more reasonable.</comment>


20 Years of Impulse Tracker, Part 2 - <AUTHOR> http://roartindon.blogspot.sg/2014/03/20-years-of-impulse-tracker-part-2.html <comment><USER2> > PC Speaker driver. Probably no one ever used this, but making the PC speaker > play proper digital audio was something fun. DOSBox even emulates this quite > well! This code was also responsible for the single worst bug I had during > the entire IT development. When I was writing this driver, I mismatched the > PUSHes and POPs in the interrupt handler; which then had a bad interaction > with Microsoft's SmartDrive disk cache. The net result of this was > SmartDrive trashed my hard drive and I lost over a week of work on IT and > university assignments.

What a horrible and funny bug. Reminds me of Linus attempting to write AT commands to his modem, but redirecting them to the wrong /dev file and accidentally replacing the boot record of his disk drive with a Hayes command.

</comment><comment><USER3> We used to have these tracking "competitions" for fun on IRC #trax.

Someone would create an empty .IT file containing only a bunch of samples. Then he'd DCC it to everyone that wanted to take part in the tracking compo. You then had something like 60 minutes to crate a track from those samples. Everyone would then DCC it back at the end of the time limit, he'd zip it up and DCC it back to everyone else and you could listen to what the other guys wrote. After this everyone would vote on which track they thought was the coolest. .IT files were really small back then, typically between 200k and 500k. Those were really fun times.

<comment><USER4> Ooo HN #trax virtual meetup! Which irc network were you on? Nickname? I was eggbird on IRCnet. Organized my own fair share of those fastcompos.

</comment></comment><comment><USER5> For those wondering what Impulse Tracker is: "Impulse Tracker is a multi-track digital sound tracker (music sequencer). It was one of the last tracker programs for the DOS platform. It was authored by Jeffrey 'Pulse Lim, and example music was provided by Jeffrey Lim and Chris Jarvis. The first released version is from year 1995 and the last version, v2.14 Patch #5, was released April 8, 1999. On February 16, 2014, Jeffrey Lim announced that he would release the complete source code of Impulse Tracker as part of its 20 year anniversary." [http://en.wikipedia.org/wiki/Impulse_Tracker](http://en.wikipedia.org/wiki/Impulse_Tracker)

</comment><comment><USER6> Impulse Tracker was used for more than just music.

Quite some time ago I did rotoscoping work on a high school Star Wars fan film. The movie's sound guy was an electronic musician, and he used Impulse Tracker (with the BPM set so that one tick in Impulse Tracker was one frame of video) to design the film's sound effects, which ended up being _amazing_.

</comment><comment><AUTHOR> Anybody who wants to see what Impulse tracker looked like when playing back might want to check out the following

Quick explanation: Top row left box shows the volume levels of each channel (or voice), middle box shows the name of the sample that's currently being played, right box shows the panning setting of the channel. This can get elaborate sometimes.

The middle row is the actual note, volume and effect (panning, pitch slide, etc.) data.

Bottom bit is a visualization just intended to look pretty.

[https://www.youtube.com/watch?v=OdXflwS4jE4](https://www.youtube.com/watch?v=OdXflwS4jE4)

Here's another one, this time it's playback of a file from a different, older, tracker (Scream Tracker 3).

Similar setup, the very beginning shows the list of samples the composer would be working with. Composers would usually rename the samples to put a message to the listener, give credits etc. You'll notice Impulse Tracker showing a waveform of the sample in the middle right of the screen. I believe this was all textmode with custom fonts...mindblowing. There's all sorts of various playback settings you can use to tweak a sample, set loops, vibrator and even "tune" it. In effect you were building up the basic sounds for the song. There's a similar screen for describing instruments made up of these samples. It was probably on par or more sophisticate than more modern sound font technologies and you could be really craft a unique sound for an instrument from nothing more than just a short crappy 8-bit sample of a single note.

[https://www.youtube.com/watch?v=B0TSCbpc2oU](https://www.youtube.com/watch?v=B0TSCbpc2oU)

Here's a tutorial on Impulse Tracker (using Schism Tracker, a modern 1:1 Impulse Tracker clone) [https://www.youtube.com/watch?v=2EdRRgxoP-g](https://www.youtube.com/watch?v=2EdRRgxoP-g)

</comment><comment><USER7> I remember listening to fountain of sighs on IT over and over again in my youth. Jeffrey and the people who wrote the music were truly ahead of their time. Here's a link to the song: [http://youtu.be/XLMqBVhZRWo](http://youtu.be/XLMqBVhZRWo)

<comment><USER8> Link to download "fountain.mod": [http://modarchive.org/index.php?request=view_by_moduleid&que...](http://modarchive.org/index.php?request=view_by_moduleid&query=40748)

</comment></comment><comment><USER9> My favorite MOD of all time: [http://modarchive.org/module.php?68048](http://modarchive.org/module.php?68048)

To me this MOD embodies all the nostalgia I have about games, programming and tech culture growing up in the late 80's and 90's.

<comment><USER10> This is my favorite: [http://modarchive.org/index.php?request=view_by_moduleid&que...](http://modarchive.org/index.php?request=view_by_moduleid&query=149532)

I tried to track down author to find out if I could license it to use in my games, but failed. Anyone got advice how to do that? Maybe I should just use it and wait for the complaint?

</comment></comment><comment><USER11> I wrote music exclusively in Impulse Tracker 2 for well over 10 years (and it's been at least that much time since I last wrote anything). Lost all my source files not too long ago, I literally cried over it (over 500 tracks...). My backblaze backup downloaded fine, and I proceeded to resync (which wipes out the original backblaze backup on their servers), only to be faced with a corrupt zip where each file was 0 bytes :( At least I have mp3 renders, still have it all up: [http://www.theoryoftrance.com/](http://www.theoryoftrance.com/)

</comment><comment><USER12> Good old times, i used FastTracker to play around with music in my BBS days in the 90ies.

We had a really talented guy on the local BBS who made awesome music at the time (and was one of the best Duke3D players in my country), some of it is still up here:

[http://www.c-eagle.de/?action=music_mods](http://www.c-eagle.de/?action=music_mods)

</comment><comment><USER13> Impulse Tracker was used for the soundtrack in a number of computer games too, right? I know for a fact that Deus Ex used .IT files for the music (and that game has a very interesting soundtrack), but I'm sure there are others as well. Deus Ex was ~2000, so we are talking after the dawn of MP3 at least.

<comment><AUTHOR> There was a short window where games needed lots of music, but had enough other art assets that CDs wouldn't have worked. Low quality digital samples of the music sounded terrible, and the alternatives like FM-Synth (ad-lib) weren't good enough and MP3s were still too computationally intensive to decode while rendering a game.

It turns out that this type of music technology, first invented to work in the low memory environment of the original Amiga, and then advanced considerably since then, offered a great alternative. Digital samples of individual instruments were played back at different rates to simulate different notes and the note data itself was incredibly small.

While almost all Amiga (and a large number of Atari ST games) used a 4-channel version of this technique, notable games that used this kind of technology in the PC era include the original Unreal, Jazz Jackrabbit, Hitman, Deus Ex, Pinball Dreams, etc.

I can't say if Impulse Tracker was used in the production of all of these. There were custom trackers, and other popular tracking software at the time, but the basic technique was very popular during this time. It's likely that Impulse Tracker was less used than people think though as for a long time accurate playback of some of the advanced effects (filters, NNAs) outside of Impulse Tracker was pretty rare.

Quite a few video game music designers got their start writing music in this kind of environment because it was incredibly cheap to get up and running and producing music. e.g. [https://en.wikipedia.org/wiki/Alexander_Brandon](https://en.wikipedia.org/wiki/Alexander_Brandon)

Back then most trackers were free, or like Impulse Tracker, basically free except for 1 or 2 major features and you could simply rip the samples out of other songs to reuse in your own music. Since you could also "read" other people's music files, you could also learn a lot about how to construct music. Different techniques, music theory, rhythm and percussion, etc. It's kind of like open source music in a sense.

see more at [https://en.wikipedia.org/wiki/Music_tracker](https://en.wikipedia.org/wiki/Music_tracker)

<comment><USER14> Jazz Jackrabbit and Epic Pinball were created by people from the demogroup Future Crew; I'm pretty sure those games used Future Crew's Scream Tracker 3, the tracker that IT dethroned.

It's also worth noting that the original 4-channel MOD format was almost entirely designed around exposing the capabilities of the Amiga's stock audio hardware; it was a grand day when PCs grew powerful enough to do in software what the Amiga had been doing in hardware all along.

</comment></comment></comment><comment><USER15> And trackers still exist today ! Check for example MODPlug Tracker and Renoise.

I have used trackers for years, and although I use mainly modern DAWs to make music today, I have never been able to be as much prolific with them as with trackers.

</comment><comment><USER16> Impulse Tracker. That takes me back. Fast Tracker 2 was my tracker of choice back in college. I'd use that to compose stuff in my dorm when I didn't have access to the MIDI lab.

</comment><comment><USER17> So much nostalgia. I still have my old .it music files from way back. I look at them and it's amazing what the limitations used to do for creativity.

<comment><AUTHOR> You wouldn't happen to be either of these Leviathans?

[https://www.scenemusic.net/demovibes/artist/1696/](https://www.scenemusic.net/demovibes/artist/1696/)

[https://www.scenemusic.net/demovibes/artist/661/](https://www.scenemusic.net/demovibes/artist/661/)

</comment></comment><comment><USER18> Good old times!

Huge database of mod, xm, it, s3m, etc: [http://www.modarchive.com/](http://www.modarchive.com/)

<comment><USER19> I'll add another link: [https://www.scenemusic.net/demovibes/](https://www.scenemusic.net/demovibes/).

Not the same, but nevertheless a great source of music. I lost the count of how many times I was hearing a song and though "wow, I NEED this", going immediately to modarchive searching for it.

</comment></comment><comment><AUTHOR> Anybody interested in listening to loads of this kind of music should check out [https://www.scenemusic.net/demovibes/](https://www.scenemusic.net/demovibes/) which has a crowd sourced radio station. Some of the music is incredibly good (lots of it is so-so, but hey, it's group participatory radio!)

</comment><comment><USER20> Ahh, the GUS (Gravis Ultrasound), Mode X, Borland compiler and Slackware days. When just getting Linux installed was a chore.

</comment><comment><USER21> So much great music. I wonder how much of that is essentially lost culture these days..

<comment><USER3> You can still get most of it from ftp://ftp.scene.org/pub/music/

Tracked music will always be inexplicably linked to the demoscene for me. If you didn't live through that era then it probably won't have any meaning to you. Much like the Amiga scene means nothing to me because I was never a part of it. Much like this guy I'll forever remember seeing Second Reality for the first time and thinking it was the most amazing thing ever created for PC at the time.</comment></comment>


Passive A.I. vs. Active A.I - <AUTHOR> https://www.voicera.com/passive-a-i-vs-active-a-i/ <comment><USER2> What a load of shit. It's no better than sampling a LSTM, just words put together that seem to make sense but ultimately mean nothing.

I thought passive AI would be supervised learning and active AI - reinforcement learning. But no, they are AI used in products respectively conversational agents. So it's all about how you send your commands, if they are by text it's passive and by voice - active. Does that make any sense?</comment>


Stanford physicist finds that swirling liquids work similarly to Bitcoin - <AUTHOR> https://news.stanford.edu/2018/04/23/swirling-liquids-shed-light-bitcoin-works/ <comment><USER2> I feel the headline is misleading/clickbaity; the article posits that stirring a liquid is similar to a hash function. Hash functions have many more applications than Bitcoin, and are only a small part of how Bitcoin operates.

<comment><USER3> He's created a hash function and hash functions have applications apparently.

It's publishable because you can link it to blockchain somewhere in the article.

</comment></comment><comment><USER4> Swirling liquids are a lot like Bitcoin in that they go right down the drain?</comment>


Web Designers Should Just Become Designers: an Interview With Don Norman - <AUTHOR> http://blog.usabilla.com/web-designers-should-just-become-designers-an-interview-with-don-norman/

<comment><USER2> Here's the part of the interview that's relevant to the link title. Don Norman says:

"Actually, I would like to see web designers disappear and become designers. Web design was this specialized activity because we had these screens, we had this fixed format and we had to figure out how to display it so that it was understandable, usable, so you could find the stuff, so you could navigate the complex architecture of the website. On top of that, you had amazingly little control over what it really looked like on the screen.

Well, that lack of control is going to expand with the modern smartphones. They come now in all sizes and shapes. They come very small, to larger and larger and larger, and when they become too large we don't call them a phone anymore, we call it a pad. But it's really the same device, just getting larger and larger and larger. And pretty soon they're on the wall, they're big TV sets, or displayed, or projected. And so the designer's job is much more complex and very, very necessary. But it's not web design, it's information design, communication design."

<comment><AUTHOR> Thanks for that. I thought that was one of the more thought provoking statements in the interview, that's why we made it a headline. Good idea to post it here as a comment as well.

</comment></comment><comment><USER3> Call it what you want, it's still designing and it's still going on the web. Information design, communication design, user experience design .. whatever... they all sound cool and trendy but it doesn't matter the name, only what you're capable of doing.

Web designers don't need to "become" anything. They just need to continue to adapt to the newest technology, while also evolving their skills to use the latest in design techniques.</comment>


Why Go Was the Right Choice for CockroachDB - <AUTHOR> http://www.cockroachlabs.com/blog/why-go-was-the-right-choice-for-cockroachdb/ <comment><USER2> The article seems to make a lot of very dubious claims about Java. Especially when they started this project, Java performance was much better than go (Those double-digit second GC pauses weren't a concern with go?), and the Java garbage collection remains much more sophisticated than even current bleeding edge go.

Also the claim that you have to add extra interfaces to Java is completely false. There's no reason at all you need to add pointless interfaces in Java. Java's type system is strictly more powerful than go's type system. This was actually a design choice in go to make the language easier.

Java generics are also a huge boon when writing something like a database.

Modern C++ also would have been an excellent choice for writing a database, and would have been much more productive than go.

<comment><USER3> > Modern C++ ..., and would have been much more productive than go.

This is definitely not correct. Any GC language with even the most basic packaging support (go get etc.) is miles ahead of C++ productivity wise.

<comment><USER4> Why does package support make it more productive than c++? For most c++ libraries you download the source, build it (platform dependent) and set includes/libs and youre done. More so, you only tend to mess with dependencies infrequently, so who cares if it takes an extra 5 minutes once every 6 months?

</comment></comment></comment><comment><USER5> "Perhaps most telling that Go is a good fit is that a lack of previous exposure to the language has not been a barrier for contributors"

This. It's true at the 100% Go backend company I work at that's never hired anyone with Go experience, and I've heard many others repeat this mantra.

While many people like to think of Go's lack of features in the realms of packaging, types, syntactic sugar, etc. as downsides, they're huge upsides when learning the language. There's just so much less to learn. Onboarding a new Go developer takes days, not weeks or months.

</comment><comment><USER6> >>>>> Java's known performance issues made it unappealing

I have read this many times and every time I read it and it seems to me that this is just a rationalization, probably an unconscious one:

"Offering false or inauthentic excuses for our claim because we know the real reasons are much less persuasive or more embarrassing to share, or more harsh than the manufactured ones given." [1]

Maybe not the case in this particular instance, but every reason I have heard about choosing Go can be summarized as: "We chose Go because it is new new cool language. Ahh, and you can deploy by copying a single exe file"

[1] [http://www.logicallyfallacious.com/index.php/logical- fallaci...](http://www.logicallyfallacious.com/index.php/logical- fallacies/150-rationalization)

</comment><comment><USER7> In case anyone's interested in trying CockroachDB, I have been writing some docs on how to install it, use the SQL commands, etc. So far, I've found it's easy to get started with if you're familiar with another relational DB, although its definitely still (pre)alpha.

CockroachDB docs:

[https://www.grockdoc.com/cockroachdb/alpha/articles](https://www.grockdoc.com/cockroachdb/alpha/articles)

FYI: The installation docs are at the bottom of the list.

</comment><comment><USER8> A little late, but why not Rust? Not the right libraries? I would think no gc would be one of the biggest factors

<comment><USER9> CockroachDB engineer here. Rust would definitely be a contender if we were starting the project today (we have several rust fans on the team), but when the project was started in early 2014 it wasn't ready yet. The language was still changing too much to make such an investment in (they hadn't even removed the @ and ~ pointer syntax from the language yet).

<comment><USER10> Longtime Rust developer here. You definitely made the right choice, it would have been a pretty big risk to bet a startup on rust back in 2014 if you didn't have the freedom to keep up to date with the breaking changes. Crazy people like me had a lot fun seeing the language evolve in realtime, but it certainly would have been stress-inducing if I was betting my livelihood on it.

Now that we're stable, please let us know if you plan on experimenting with Rust. We'd love to hear how it goes (I run the SF meetups and am always looking for speakers), and what we can do to help. One of our short/medium term goals is to make some high quality bindings to other languages, so that projects like yours could slowly introduce Rust where it makes sense.

</comment></comment></comment><comment><USER11> The gist of it is, they believe they're more productive with Go than with C++ or Java. In particular they mention Go's small idiomatic footprint and its focus on simplicity and consistency, which they say make it easier+faster to pick up the language (for new developers) and write cleaner, understandable code (for all developers).

As to performance, they _expect_ it will be comparable to C++ and better than Java. I say "expect" because they don't provide any evidence to back that claim.

PS. I often feel like I'm walking walking on eggshells when discussing computer languages on HN. For the record, I'm neither "pro-Go" nor "anti-Go." Languages are tools, not religions. Go is just a tool: [https://news.ycombinator.com/item?id=10465697](https://news.ycombinator.com/item?id=10465697)

</comment><comment><USER12> Excuse me if this is a dumb question, but I've seen a lot on HN these days where people would suggest Erlang/Elixer for this kind of use case (high performance distributed). Any reason (beyond syntax preference) that this was not one of the languages considered?

<comment><USER13> I wouldn't recommend the Erlang VM for anything that needs to _itself_ be running at the highest performance levels. The VM is not very fast when it comes to computation. It's a great VM for what it does, and absolutely should be considered for many other such tasks, but probably not a great choice for a database.

To some extent, but a lesser extent, the same could be said for Go: [http://benchmarksgame.alioth.debian.org/u64q/which- programs-...](http://benchmarksgame.alioth.debian.org/u64q/which-programs-are- fastest.html) (It's a bit weird reading that page, because it's broken into two graphs, but they appear to be about the same thing.)

If I were thinking "trendy language to write my next database in" personally I'd favor Rust by a country mile. This is _exactly_ where you'd like all that stuff Rust provides just for correctness' sake, and this is the sort of task where you may even be able to outrun C++ if Rust helps you write correct code with fewer barriers slathered about for correctness.

Edit: Ha, and just below this comment as I read it I see the team commenting about Rust.

</comment></comment><comment><USER14> Can anyone link a reference for known performance issues in Java? And is it issues in Java or the JVM?

<comment><USER15> I can't provide a direct link. But generally Java itself is rarely the problem. The language is fine, the byte code is great.

The JVM on the other hand with its _stop the world_ garbage collector is a constant source of performance issues. Especially once you start getting over 2-4GB heaps. GC cycles can take 1s+

<comment><USER16> There are plenty of options for storing select data off heap, which a database such as Cockroach could certainly have taken advantage of.

<comment><USER14> so this is an oversight on their part? it sounds like they had maybe a half- baked justification, but idk

</comment></comment></comment></comment><comment><USER17> I agree to most points. One thing I struggled trying it is lack of information on interenet as compared to more mature languages like c++ or java. Since most of the cockroachdb team including founders come from google, I wonder if they have access to better advice too.</comment>


Would Love Feedback: AskAway - <AUTHOR> http://app.askaway.io/

<comment><USER2> Hmm - sorry if this is not what you were looking for, but my feedback is that I only made it to the second step before stopping. I don't have an event in mind to try it out with, so I just put in Test Event, then you asked me for my Name and Email. I have no idea what your product is or does so I didn't give it to you. Give me a screenshot on the front page, or something at least to tell me what it is before you ask for my info.

I think it may be down now as well, FYI. Getting an error when I try to load it.

<comment><AUTHOR> Thanks Maxbrown! Not sure why its showing error... it should load.

Agree with your comments. We are making a quick video to show people the product. We will also add screenshots.

</comment></comment><comment><USER3> It is definitely an interesting idea.

\- How do I moderate the questions?

\- I lost the link to the event I created, is there a way to get it back?

\- Should new questions appear live on my screen? (I opened two tabs entered questions, and Had to refresh the other tab to see the questions)

\- What do you need users emails for? Apps that inform the user always make me feel better.

\- Are you planning to have a listing of 'public' events on the main page for ease of access?

<comment><AUTHOR> Thanks! Its just a free tool my team created and we want others to use it if its valuable. \- We filter questions based on most voted by audience \- Not sure why you lost the link. Maybe we should email it to event organizers in the future! \- Yes, new questions should refresh automatically after a min \- Emails are for us to notify you when someone asks a question, etc. \- Thats a great idea! Thank you

</comment></comment><comment><USER4> I got an "Application Error" when I tried to load

<comment><AUTHOR> Not sure why. Checking into that</comment></comment>