Ask HN: What has heavily influenced your coding style? - <AUTHOR> Aside from books, has there been any major events or issues that stemmed from your code while in production, etc that has shaped how you code and how do you think you improved from there? Generally curious and want to learn more. <comment><USER2> I agree with several other users on this thread about maintaining existing code. If you aren't already working in a position in which you have to modify code written by others, try to start fixing bugs or writing features for an open source project. In either case you should immediately see how frustrating it is to try to figure out why things in the code base are the way they are, and I think the best solution is not documentation but clear, clean code that self-documents, not with comments but with small focused recipe-like functions. Bob Martin's book Clean Code[1] is a quick read that makes clear how this can be done effectively. Martin Fowler's book[2] is another obviously good illustration.

The second thing that has really influenced my coding style for the better (making it clearer and easier to understand) is writing a medium-sized program using a strictly functional language like Erlang. This will force you to use global state less, to write functions in such a manner that the function itself includes all the information required to understand it, simply because global state cannot be used and everything on which the function operates must be passed into it explicitly via its parameters.

[1] Clean Code (Robert Martin) [http://amzn.to/2uewcpB](http://amzn.to/2uewcpB)

[2] Refactoring (Martin Fowler) [http://amzn.to/2vnD7vx](http://amzn.to/2vnD7vx)

</comment><comment><USER3> I prefer compact coding (started with BASIC on a Tandy 102 laptop way way way back).

But it also needs to be readable/pronounceable: and it needs to be readable even on cruddy screens / bad printouts. No "i" and "j" for loop counters, for example: the compiler doesn't care how long you make your names, so I use things like "kt" or "ndx" (because typos happen, and fewer characters that still convey the same meaning is acceptable).

I also do my best to never write overly clever code. Shared another [HN]([https://blogs.msdn.microsoft.com/oldnewthing/20170719-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20170719-00/?p=96645)) [post]([https://news.ycombinator.com/item?id=14810014](https://news.ycombinator.com/item?id=14810014)) with a little commentary on G+ last night:

       Sadly - or, perhaps, happily - I can remember when I used to do wonky crap like this.

       Then I learned the axiom, "if you code as cleverly as you can, you are, by definition, not clever enough to debug it" (I think it's called Kernaghan's Lever - but I may be mistaken).

       Write code you can explain to a 4th grader. Or your grandma. If you have to stop and think about how clever it is, you are going to end up cleavering yourself with your feigned cleverness.

</comment><comment><USER4> When I started having to read other people's code, I realized that everyone needed to stop writing "clever" code.

</comment><comment><USER5> Learning functional programming has definitely changed the way I manage state. I tend to explicitly pass variable into functions and return them instead of just having them change some hidden State

</comment><comment><USER6> Maintenance work. No more being clever with "elegant" OOP hierarchies and abusing generics. No more layers upon layers upon layers. No more DAL's and other hideous abstractions over the database.

Just the KISS principal. I'll take repetitiveness over obfuscation anyday.</comment>


Wolfram Alpha is Never Wrong - <AUTHOR> http://raganwald.posterous.com/wolfram-alpha

<comment><USER2> You're missing it. It's a joke, or a koan, or both.

</comment><comment><USER3> Both the queries mentioned in the article return nothing relevant.

</comment><comment><USER4> What Mr.Wolfram said (assuming he actually said that) is dumb.</comment>


Recognizing Speech from Smartphone Gyroscopes (2014) - <AUTHOR> https://crypto.stanford.edu/gyrophone/ <comment><USER2> This is a fantastic idea, but do web pages really not require special permissions to access gyroscope data?

On Android (like, 4.2 or something) with Firefox, the page and the CSV just displays `null` for alpha, beta and gamma. And the calculated rate is 9.1 samples per second, which seems way too low to extract any speech details even if the data were valid.

This is distinct from the "No device motion data" message presented on my desktop though. So it seems to me that the page sees that a gyroscope is present, and requests data from it, but Firefox is just feeding it null values?

I haven't tried the apk yet.

<comment><USER3> Chrome on Android shows the proper data - with no special permissions or warnings. It updates at ~57 samples/s.

<comment><USER4> If you check the paper the authors indeed mention some rate limitations using Chrome. However Firefox provides samples at 200 Hz. Also, every application can access those measurements without any permissions.

<comment><USER5> As the authors note in the full paper, even a sample rate of 200 Hz only results in capturing audio information for frequencies up to 100 Hz.

If one applies a 100 Hz filter to some samples of human speech (even low- pitched male voices, as the authors of the paper suggest), the result is (unsurprisingly) the sort of "womp womp" that one might expect to hear from a car with giant subwoofers, not anything containing recognizable words.

The authors of the paper admit that they were unable to recover the content of speech, but focused on identifying the speaker. That's a long way from capturing credit card numbers (which is what their promo video implies).

Basically, I'll believe it when I see it. The approach is really interesting, though, and I think could be useful for other things.

</comment></comment></comment></comment><comment><USER6> Would accelerometers also be usable in a similar way? Presumably magnetometers wouldn't be quite as sensitive to such vibrations.

</comment><comment><USER7> Seems like if auto rotate is off, this does not work.

</comment><comment><USER8> 2014

</comment><comment><USER9> Solution: low pass filter gyroscope sensor data before the application can access it. Is there a legitimate reason for an application to need gyroscope data in the range of ~200Hz?

<comment><USER2> I think this is a legitimate usage for some games, for example, racing games in which you steer via tilt. The bigger issue in this case is not the frequencies visible to the application (the relevant hand motion is much below 200 Hz), but rather the latency of these movements. If possible, a game should be able to respond to a tilt action within the duration of a single frame.

But it's impossible to filter a signal in the time domain without introducing a phase shift (i.e. a delay). As a result, you cannot remove that extra frequency information before sending the data to an application without making sacrifices on latency.

<comment><USER9> Alternative solution: make the unfiltered gyro data available through an explicit permission.

<comment><USER2> Perhaps it's possible to use some sort of active cancellation - like what noise-cancelling headphones do - only in this case you would be trying to minimize the correlation between gyroscopic data & microphone data.</comment></comment></comment></comment>


How to Build an Iconic Company – Keith Rabois [audio] - <AUTHOR> https://nugget.fm/rabois/ <comment><USER2> To his point about finding undiscovered talent, VCs are obsessed with finding people they can underpay via selling them on their "vision" and "impact". They claim they can't compete with Google and Facebook on comp, but the truth is they don't even try to do so by offering fair equity deals. Instead they use rigged instruments like common ISOs with liquidation preference and 90 day exercise windows to intentionally screw early employees over. If they offered fair terms, many talented people would love to be involved in small companies over FAANG, but these types insist on screwing people over and paying them with speeches about "visions." The vision of these VCs is always enriching themselves.

It's also absolutely hilarious that his example of finding undiscovered talent at PayPal was by looking at Stanford students. He's trying to make a point that you should do out of the box thinking on recruiting and his best example is recruiting from the most prestigious university in Silicon Valley. It's almost difficult to distinguish from satire.

<comment><USER3> There was a very good talk (which I can't find right now) by Ben Horowitz about why companies have to use certain instruments for equity-based compensation. There are a number of legal and 'fairness' (HR and morale) issues which limit what companies can and should do.

edit: found it, starts about 16:30 in [https://www.youtube.com/watch?v=uVhTvQXfibU](https://www.youtube.com/watch?v=uVhTvQXfibU)

<comment><USER4> Not to mention ISOs are far better for employees than NSOs. Moving to RSUs actually reduces the risk _and_ reward for employees as switching over, startups usually cut the grant size substantially (as they are issuing instruments that have intrinsic value at issue rather than no intrinsic value at issue).

tl;dr: Founder shares >>> ISO > NSO >> RSU in terms of risk and reward.

<comment><USER5> ISOs are not universally better. They have a 24 month time requirement while NSOs only have a 12 month requirement.

<comment><USER4> I believe selling within the 24 month window is considered a disqualifying disposition which effectively just converts your ISOs into NSOs [1]

[1] [https://www.mystockoptions.com/content/what-is-a- disqualifyi...](https://www.mystockoptions.com/content/what-is-a- disqualifying-disposition-with-incentive-stock-options-what-causes-why- company-cares)

</comment></comment></comment></comment></comment><comment><USER6> So, is this the same guy who was shouting homophobic slurs at an instructor while studying at Stanford in the 1990s and who was later accused by a male employee of sexual harrassment at Square and fired?

<comment><USER7> Yes. Since he is the Roger Stone of the PayPal Mafia, he's not going to go away anytime soon.

</comment></comment><comment><USER8> Usually it's 50% hard work, and 50% being at the right place at the right time. Nothing is guaranteed.

</comment><comment><USER9> Sounds like someone with a good SV network is starting the Twitter of podcasts

</comment><comment><USER10> An investor taking credit for founder's work is probably _NOT_ the way to build an iconic company.

[https://twitter.com/rabois/status/1260257254957215749](https://twitter.com/rabois/status/1260257254957215749)

<comment><USER11> How is that tweet "taking credit for founder's work"?

Also have you seen this guy's resume? [https://en.wikipedia.org/wiki/Keith_Rabois#Business_career](https://en.wikipedia.org/wiki/Keith_Rabois#Business_career) Yeah -- he's in no need to take credit for other people's work.

I love taking advice from people like Keith Rabois because you know (unlike 99% of other VCs) he actually has experience building mega-unicorns himself.

</comment></comment><comment><USER12> I find that longer content works better for me when trying to understand important concepts. I generally need repetition and context (why is this a valuable concept? how'd you get here?). While it's quicker to digest bite sized audio, I tend to forget the takeaway easily.

Have found these links to be helpful in understanding the concepts here:

* [https://startupclass.samaltman.com/courses/lec14/](https://startupclass.samaltman.com/courses/lec14/)

* [https://www.youtube.com/watch?v=9HGRap1cJ3k&feature=emb_titl...](https://www.youtube.com/watch?v=9HGRap1cJ3k&feature=emb_title)</comment>


Ask HN: Are there any multiplayer terminal console ascii games? - <AUTHOR> I am looking for an online game that can be played on the command line and preferably with other human players. Preferably it's text based. If there isn't one I'm considering writing one. <comment><USER2> I have been playing this one (with some breaks) for two decades:

[https://midnightsun2.org/](https://midnightsun2.org/)

</comment><comment><USER3> Check out BBS's. They have a plethora of multi-user games. Most BBS's have migrated to the Internet age and are accessible via telnet.

</comment><comment><USER4> It's called a MUD.

<comment><USER5> To add, Multi-User Dungeons are games you can connect to via Telnet.

</comment></comment><comment><USER6> try 0verkill, or the classic bsd game, 'hunt'.</comment>


Is our universe inside a wormhole inside a black hole inside its own universe? - <AUTHOR> http://www.sciencedaily.com/releases/2010/04/100406172648.htm

<comment><USER2> Yeah, it's other universes all the way down...

</comment><comment><USER3> ...or, what other preposterous bullshit can I dream up to justify my grant.</comment>


Brain can be trained to regulate negative emotions - <AUTHOR> http://www.sciencedirect.com/science/article/pii/S1053811915009866 <comment><USER2> Sounds similar to what happens automatically via meditation [1]?

[1]: [http://blogs.scientificamerican.com/guest-blog/what-does- min...](http://blogs.scientificamerican.com/guest-blog/what-does-mindfulness- meditation-do-to-your-brain/)

<comment><AUTHOR> Glad you brought that up, exactly what i was thinking ;)</comment></comment>


Could Rust have a left-pad incident? - <AUTHOR> http://edunham.net/2016/03/24/could_rust_have_a_left_pad_incident.html <comment><USER2> So Rust uses a well-thought-out solution to multiple, intertwined problems? Hardly surprising. The people behind Rust are amazing!</comment>


Ask HN: Good resources to learn COBOL? - <AUTHOR> I recently saw a thread that advocated for COBOL as a programming language. I have a lot of opinions about it, but they are all very very biased. I've never seen a line of COBOL and I already think the language is bad.
It's time to change that and ask myself the uncomfortable question what are good resources to learn COBOL? Some systems still use it, better get good at our legacy systems. Also, it might be fun as a language to play with. If one person is willing to advocate for it, it might have merit.
I wouldn't know if it does, all I know is that there are wonderful resources for a lot of programming languages on HN to find, but not for COBOL. So does anyone know good learning resources? <comment><USER2> I've played around with it a bit. Created the /r/cobol subreddit a long time ago as a joke, and it surprisingly became a moderately active community. So I guess I feel a certain measure of affinity for the language in a weird "goofy little brother" sense.

Anyway, there's an F/OSS COBOL compiler out there - GNU COBOL, so it's possible to play around with the language without needing an IBM mainframe or minicomputer, or expensive MicroFocus stuff for your PC.

"Hello, World" in COBOL is a little verbose, but it's nothing too crazy:

        *> GnuCOBOL Hello World example
        identification division.
        program-id. hello.
        procedure division.
        display "Hello, COBOL world!"
        end-display.
        goback.

If you save that in a file named hello.cob and compile it with

        $> cobc -free -x -o hello hello.cob

you should get a binary that will execute and print "Hello, COBOL World!". Note that the "-free" part is pretty important. Historically COBOL was a language (like RPG, and - I think - FORTRAN) that was column oriented, and certain characters had to fall into specific columns, or it wouldn't compile. Modern COBOL allows a free form mode like C or Java, and that -free flag turns it on. Without it that sample won't compile as-is.

There's some useful information here:

[https://open-cobol.sourceforge.io/faq/index.html](https://open- cobol.sourceforge.io/faq/index.html)

[https://open-cobol.sourceforge.io/doc/gnucobol.pdf](https://open- cobol.sourceforge.io/doc/gnucobol.pdf)

and one or two useful links here:

[http://www.csis.ul.ie/cobol/](http://www.csis.ul.ie/cobol/)

You might also ask on [https://cobol.reddit.com](https://cobol.reddit.com)

Outside of that, my best recommendation is to try queries like

cobol site:.edu

cobol site:.ibm.com

</comment><comment><USER3> This online compiler is pretty cool for just experimenting: [https://www.jdoodle.com/execute-cobol- online](https://www.jdoodle.com/execute-cobol-online)</comment>


Windows X86-64 System Call Table - <AUTHOR> https://j00ru.vexillium.org/syscalls/nt/64/ <comment><USER2> It's important to note that unlike Linux, NT system call numbers are not stable. That's a very good thing --- it effectively forces all system calls to go through ntdll, which can coordinate closely with userspace in interesting ways. It's as if NT's "vdso" covered all interaction with the kernel.

For example, NT has no native 32-bit ABI like Linux does. Instead, _userspace_ translates 32-bit to 64-bit system calls, handling the switch from long and back to long mode transparently. This elegant approach is possible because applications never make system calls directly.

<comment><USER3> How does that work with regards to privilege separation. It sounds like bypassing nt.dll might be an exploit vector that is easily forgotten.

<comment><USER4> Just a note, it's not nt.dll, it's ntdll.dll.

<comment><USER5> Heh, interesting. Any specific reason for the stuttering? Or just arbitrary inconsistent historical decision?

<comment><USER6> I'll give you a better one. On a 64 bit Windows:

\- the 64 bit binaries are stored in C:\Windows\System32

\- the 32 bit binaries are stored in C:\Windows\SysWOW64

<comment><USER7> Haha, I think WOW64 means "Windows [32] on Windows 64" which kind of makes sense if you squint at it just right...

<comment><USER8> That's a bingo.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> Note that this page doesn't show the full set of syscalls, just a subset of them (seems to be the ones ntdll calls). The Win32k stuff, for one, don't seem to be there (edit: they're on this page instead: [https://j00ru.vexillium.org/syscalls/win32k/64/](https://j00ru.vexillium.org/syscalls/win32k/64/)), let alone more obscure ones that I expect exist but that I don't know about (like WSL stuff).

<comment><USER9> The WSL stuff doesn't have system calls AFAIK. All the work is either kernel mode indirection to the kernel driver, and IPC (ALPC I think on WSL1?).

<comment><USER4> Well for starters WSL implements Linux system calls, so it definitely has its own system calls!

But even beyond that, I was thinking of one thing they added for performance reasons (see 3rd bullet): [https://github.com/Microsoft/WSL/issues/873#issuecomment-425...](https://github.com/Microsoft/WSL/issues/873#issuecomment-425272829)

However I'm not entirely sure if it's a concrete "syscall" or if it's implemented as a new option through an existing one. (It's not clear to me how they could reasonably fit this into anything that already exists, but it might.) Though I would be mildly surprised if they didn't implement at least one syscall specifically for WSL...

<comment><USER9> > Well for starters WSL implements Linux system calls, so it definitely has > its own system calls!

Sure, but not in the NT system call table.

> But even beyond that, I was thinking of one thing they added for performance > reasons (see 3rd bullet): > [https://github.com/Microsoft/WSL/issues/873#issuecomment-425...](https://github.com/Microsoft/WSL/issues/873#issuecomment-425..).

> However I'm not entirely sure if it's a concrete "syscall" or if it's > implemented as a new option through an existing one. (It's not clear to me > how they could reasonably fit this into anything that already exists, but it > might.) Though I would be mildly surprised if they didn't implement at least > one syscall specifically for WSL...

It's neither, it's an API inside kernel space. They didn't expose it through the NT syscall table, but instead how the linux transtalion layer calls directly into NT kernel functions.

<comment><USER4> Ah I see, okay thanks.

<comment><USER10> [https://devblogs.microsoft.com/commandline/announcing- wsl-2/](https://devblogs.microsoft.com/commandline/announcing-wsl-2/)

WSL is now a VM. So its really hypervisor that runs the linux syscalls on its virtual processor

<comment><USER4> I'm aware of WSL2 but we've been talking about WSL1.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> How do they deal with the syscall numbers being different from release to release, while still maintaining binary compatibility? From what I can tell, (in Linux at least) the syscall numbers are _the_ thing that needs to stay constant for the kernel to not break user space.

<comment><USER7> > How do they deal with the syscall numbers being different from release to > release, while still maintaining binary compatibility

By not calling syscalls based on their numbers on Windows. That might sound crazy, but actually to me coming from Windows, calling them by ordinals is what sounds crazy. :-) You're supposed to call exported functions in shared libraries (ntdll.dll etc.) that call the syscalls for you.

<comment><USER11> So that means ntdll.dll and family can never be statically linked? I guess that makes sense if the only responsibility of the dll is to expose syscalls, but does ntdll expose any other functionality? Functionality that may want to be overridden by a different implementation, etc?

In the Linux world, since syscalls are exposed by libc, other non-C runtimes (for example, Go) end up needing to make system calls on their own without the libc wrappers. Is such a system just not a thing in Windows?

<comment><USER2> Go doesn't _need_ to bypass libc on Linux. There's no technical reason to do that. Go doesn't bypass libc on other operating systems. Go going straight to the kernel is just a fashion statement, a symbol repudiation of C, not something that makes actual life better for users.

<comment><USER12> Hm, I thought there was some issue with glibc not wanting to provide wrappers for certain Linux syscalls. What if the Go runtime wanted to use one of those syscalls for some reason? It seems like then it'd be forced to go straight to the kernel.

<comment><USER2> Yes, it'd have to bypass libc for those system calls, just like any C program would. How is that an excuse for bypassing libc for things like read(2)?

No, making system call interposition harder isn't a security feature. A user who can LD_PRELOAD you can already do arbitrary things to your program.

<comment><USER13> Sometimes when folks talk to the kernel, they want to know they're talking to the actual kernel. glibc by design lets random stuff on the system MiTM symbols like read (even security critical ones like getrandom) and the LGPL effectively forbids many projects from using static linking as an escape hatch. The Chrome guys had to write a whole system call library from scratch because of it. On Windows it tends to get much more intense, where dynamic symbol interposition is brought to its logical conclusion, and you've layers upon layers of antivirus hooks and spyware sitting between you and the system. There, pretty much the only thing you can do is just SSL the heck out of everything.

<comment><USER14> > glibc by design lets random stuff on the system MiTM symbols like read

Can you elaborate on this? I'm aware of things like LD_PRELOAD, but if an adversary controls the environment, he could just change PATH to point to a rooted version of chrome anyway. That also has to do with the capabilities of the system linker, not glibc.

>the LGPL effectively forbids many projects from using static linking as an escape hatch

The LGPL explicitly allows static linking, that's the main difference versus the GPL.

<comment><USER13> Are you in control of your network connection? Packets aren't that much different from calls between DSOs. It's just a big onion ring. If you make a conscious decision to trust Chrome with your data, then does Chrome have a moral obligation to ensure that choice, in reality, ends up being You<->Chrome, rather than You<->SysAdmin<->Comcast<->NSA<->Hacker<->Chrome? Or maybe they just want to protect IP holders. Or maybe they just don't want folks filing bugs about performance when the root cause turns out to be some poorly written system library. At the end of the day, it's all about minimizing unknowns.

LGPL allows dynamic linking. Only way it'll allow static is if your releases are accompanied by tools for decompiling and recompiling your binaries with the LGPL bits interchanged. But that actually might not be allowed either, since GCC 4.3+ headers and runtimes (e.g. libstdc++) kind of prohibit you from changing binaries on your own, after they've been compiled.

<comment><USER15> > Are you in control of your network connection? Packets aren't that much > different from calls between DSOs.

The difference is that calls between dynamic libraries are on the same side of the "airtight hatchway" (as explained by Raymond Chen at [https://devblogs.microsoft.com/oldnewthing/20060508-22/?p=31...](https://devblogs.microsoft.com/oldnewthing/20060508-22/?p=31283)), while there's a security boundary at the network connection.

<comment><USER13> Imagine the modern PC as being just another substrate of this great battlefield where big corporations duke it out with each other and the individual owners are becoming less and less relevant to the security story. It's unpleasant. It seems to get raunchier each year. I've even seen household names retool things like graphics drivers to inject data harvesting code into command-line programs at runtime. Then the big companies who don't play dirty like that, usually react by demanding greater authoritarianism in tools, until the rest of us devs find ourselves smothered with -fpic aslr retpoline code- signed bubblewrapping, which isn't so much keeping us safe, but rather keeping big company A safe from big company B. Everything that the guy you linked said is correct. But locks aren't that relevant anymore, once the wolves have been invited in to live.

<comment><USER2> You've used a lot of rhetoric, but you haven't described a threat model. Both this comment and your previous one, the GP, use language of moral duty when talking about a specific software security measure. That's a category error.

What _specific_ _threat_ is bypassing libc supposed to protect against? I don't think you have an argument here. As the poster to whom you're replying mentioned, anyone who can do symbol interposition already has full control over your program.

<comment><USER13> Perhaps you could share specific details on the use cases that dynamic symbol interposition is intended to serve? Because the only one I think I've seen so far is setbuf(1) and I can imagine more than a few alternatives that could have been considered.

<comment><USER2> Enumerating specific interposition user cases has nothing to do with the point I made, which is about threat modeling. You still have not articulated any specific threat model; you've instead tried to distract the conversation and move it in a different direction.

<comment><USER13> You're welcome to complain about how I talk, but this isn't about me. This is about serving the user and making sure tech behaves the way they expect it to. We need to raise awareness of infrastructural weaknesses that folks may need to consider, in order to stay safe.

I consider symbolic interposition to be one of those things. Linux users might not feel comfortable about the fact that glibc currently makes it so easy to intercept system calls to Linux Kernel's RNG, that your upstream dependencies might actually compromise your key generator unintentionally.

Don't you think that's worth discussing? We could also talk about the concerns surrounding Layered Service Providers, which is another great example of userspace libraries misrepresenting APIs that are generally believed to be talking to the operating system.

<comment><USER2> It's not "how [you] talk". It's that you're not making an actual point. There is no "safety" threat here, nor is there an "infrastructural weakness[]". Fretting about "safety" without identifying a threat model is vacuous. What is, specifically, your threat model? What security guarantees can a program make only through bypassing libc? Why aren't the vast majority of programs --- the ones that call libc --- vulnerable to this ineffable threat?

Users get to control how programs execute. They can interpose symbols. They can disassemble programs. They can run programs under a debugger. They can modify the kernel. They can run programs in a VM. A program can't detect this intermediation; nor does it have any right to do so. A program has no business breaking random OS visibility and control features. We generally call the ones that try malware.

Bypassing libc when making system calls doesn't give a program any insurance against environmental changes. It just inconveniences users while providing no "safety" guarantees. If you want full control over a program's execution environment, ship an appliance.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> One odd bit of trivia: the Windows system call mechanism supports up to four different tables. The first two are what you'll usually see - the first is the basic kernel services, and the second is for Win32k, the graphical subsystem. The final two slots are up for grabs and historically could be used by drivers to implement custom system calls.

The system call number determines what table is used. Calls in the 0x0-0xFFF range are handled by the first table, 0x1000-0x1FFF by the second, and so on.

As far as I know, the ability to add another system call table was only ever used by the IIS web server kernel-mode component (spud.sys).

<comment><USER17> I don't doubt your interesting bit of trivia, but I couldn't find anything online about. Do you have a source for this? I would certainly love to read more about it.

<comment><USER16> There's a bit more information in the indispensable Windows Internals book (quoting from the 4th edition, which is a little old now):

> As you'll see in Chapter 6, each thread has a pointer to its system service > table. Windows has two built-in system service tables, but up to four are > supported. The system service dispatcher determines which table contains the > requested service by interpreting a 2-bit field in the 32-bit system service > number as a table index. The low 12 bits of the system service number serve > as the index into the table specified by the table index.

[...]

> A primary default array table, _KeServiceDescriptorTable_ , defines the core > executive system services implemented in Ntosrknl.exe. The other table > array, _KeServiceDescriptorTableShadow_ , includes the Windows USER and GDI > services implemented in the kernel-mode part of the Windows subsystem, > Win32k.sys. The first time a Windows thread calls a Windows USER or GDI > service, the address of the thread's system service table is changed to > point to a table that includes the Windows USER and GDI services. The > _KeAddSystemServiceTable_ function allows Win32k.sys and other device > drivers to add system service tables. If you install Internet Information > Services (IIS) on Windows 2000, its support driver (Spud.sys) upon loading > defines an additional service table, leaving only one left for definition by > third parties. With the exception of the Win32k.sys service table, a service > table added with _KeAddSystemServiceTable_ is copied into both the > _KeServiceDescriptorTable_ array and the _KeServiceDescriptorTableShadow_ > array. Windows supports the addition of only two system service tables > beyond the core and Win32 tables.

</comment></comment></comment><comment><USER18> Sorry if this is an dumb question I could easily find on Google (been a webdev for most of my career), buy I'm curious why some syscalls exist on Vista SP1 for example, but don't exist on the versions before and after it.

Edit: I meant SP0, not SP1, sorry. It was this SysCall: NtListTransactions

<comment><USER4> Could you give an example? I don't see anything that's on Vista SP1 but not on SP2.

<comment><USER18> Sorry, in my case I saw this on SP0 not SP1: NtListTransactions

<comment><USER19> that's probably part of TxF (aka transactional ntfs) which got deprecated basically as soon as it was released (though i think it's still used internally for e.g. system restore) so it's likely that got moved around somehow or the TxF API got reimplemented in userspace

<comment><USER4> I don't believe their deprecation claims on that. It's too deeply ingrained into the OS for them to ever remove it, and too useful and difficult to replace. Really, it just doesn't have enough users, is all. And there's more to transactions than just the file system (TxF) so I'm not even sure it's related to this either.

Also you can't implement TxF in userspace. It has to detect conflicts with other applications and roll back in the case of an unsuccessful commit (power loss etc.) before the file system is used again. Any userspace implementation would leave stuff in a corrupted state until it's re-run.

<comment><USER19> > I don't believe their deprecation claims on that.

I don't either, although the API is kind of overkill for most use cases so I'm not too surprised they discourage people from using it.

> And there's more to transactions than just the file system (TxF) so I'm not > even sure it's related to this either.

True, I just assumed it was related to the txfs_list_transactions ioctl.

> Also you can't implement TxF in userspace. It has to detect conflicts with > other applications and […]

I think the Kernel Transaction Manager already takes care of that. I think??? TxF could be implemented as a userspace library on top of KTM, but I'm not particularly familiar with either facility. Though if it was possible perhaps they would've done it that way in the first place, since TxF uses KTM regardless.

I wonder what did happen to it between SP0 and SP1.

</comment></comment></comment></comment></comment></comment><comment><USER20> Interesting that on a linux machine

      man syscalls \
      | grep -Po '\w+(?=\(2\))' \
      | sort \
      | uniq \
      | wc -l

gives the same number of 481 as the number of rows in that table. Though, the grep includes man-pages that don't correspond with a syscall, like intro(2). It's just a curious coincidence.

</comment><comment><USER21> Could someone provide examples of what to type in the field, with perhaps the relevance? (I'm not a Windows user, but this looks cool enough to test)

</comment><comment><USER22> Has anyone ever done a mapping of which regular API functions map to which syscalls?

</comment><comment><USER23> Huh. Why is this so slow? According to Chrome, it took 704 milliseconds from clicking the "show" button on "Windows XP" to displaying the results. No network calls at all. A whole 525ms of script evaluation. Modern computer, thousand row table, wouldn't expect it to take that long.

<comment><USER24> Works fine for me on an average laptop with latest stable Firefox.

<comment><USER4> Try "Show All".

<comment><USER25> Seems instantaneous on Firefox for me.

<comment><USER4> Really?! It isn't instantaneous for me, even on Firefox 62 (Windows). Takes some half a second or so.

<comment><USER25> I'm on Firefox 68.0.2 on Windows 10.

I can click "Show All" and "Hide All" over and over and there is hardly any delay. Maybe you should upgrade to the latest and see if it makes a difference.

<comment><USER4> Interesting, thanks for mentioning this! It seems to be something with my profile, because a fresh profile is also definitely faster (maybe 200-300ms just eyeballing). The latest unbranded build I got [1] also seems about the same if not faster (maybe around 200ms). Definitely not "instantaneous", but I'll definitely track this down.

UPDATE: At least 3 of the culprits seem to be MutationObservers from my own extensions (as in, from extensions that I have written for myself) that have {childList: true, subtree: true}! I guess I will have to optimize them. :-)

[1] [https://queue.taskcluster.net/v1/task/Uht_zkkPThu384OAHNPwdA...](https://queue.taskcluster.net/v1/task/Uht_zkkPThu384OAHNPwdA/runs/0/artifacts/public/build/target.zip)

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> Windows NT has been around since what, 1993 or 94?

Why is this even news? Doesn't Microsoft document this stuff? How does anybody use a system that doesn't have this documented?

PS [http://stratigery.com/nt.sekrits.html](http://stratigery.com/nt.sekrits.html)

<comment><USER27> I also ask myself this question. How can anyone use an OS where the creators deliberately hide some of the documentation?

I would love to read up on windows internals, but there are no real resources out there. A few books that at first glance appears to cover it, but then just deals with the application layer and up to point-and-click.

This is why I don't use windows anymore. I don't ever again want a job where I have to debug why old program P stopped working after an update. I prefer _to be able_ to learn stuff.

<comment><USER28> Oh come on!

[https://www.amazon.co.uk/Windows-Internals-Part- architecture...](https://www.amazon.co.uk/Windows-Internals-Part-architecture- management/dp/0735684189)

Certainly all systems have undocumented stuff that are left undocumented because the users are not supposed to use it. If they would, they couldn't change it.

<comment><USER26> System calls seems like the very definition of what should be documented for users. Particularly if you want someone to write compilers for your operating system.

<comment><USER29> The stable program-kernel interface is not the kernel syscalls, but library API. That's exactly the same as every other non-Linux OS out there including other Unixes and other Free OSs.

<comment><USER26> Pretty sure that isn't true of FreeBSD, NetBSD or OpenBSD. It most certainly wasn't true of any Unix.

They all have files that end up as /usr/include/sys/syscall.h and define well- known numerical constants for each (documented!) system call.

[https://github.com/openbsd/src/blob/master/sys/sys/syscall.h](https://github.com/openbsd/src/blob/master/sys/sys/syscall.h)

[https://github.com/lattera/freebsd/blob/master/sys/sys/sysca...](https://github.com/lattera/freebsd/blob/master/sys/sys/syscall.h)

[http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/syscall.h?re...](http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/syscall.h?rev=1.307&content- type=text/x-cvsweb-markup&only_with_tag=MAIN)

Oh, look! They even share the exact same numerical values for the old school system calls. #1 is exit(), #2 is fork(), so on and so forth.

Gosh, on my linux laptop, here in /usr/include/asm/unistd_64.h is pretty much the same numbers, but objectively hidden a little bit more than in the direct Unix descendants. I interpret this as "less documented than in Unixes".

Wow, even Minix source code has the same numbers: [https://minixnitc.github.io/posix.html](https://minixnitc.github.io/posix.html)

I wonder why that is? Maybe it's because the system call numbers are in fact documented, part of the POSIX API, and descend from Bell Labs Unix source code. Here's V7's list of system call numbers as proof:

[https://minnie.tuhs.org/cgi- bin/utree.pl?file=V7/usr/include...](https://minnie.tuhs.org/cgi- bin/utree.pl?file=V7/usr/include/sys.s)

<comment><USER29> Documenting syscalls does not mean a guarantee of stability. I can't recall any other Unixes except Linux which has committed to maintaining syscalls, which means this interface cannot be relied on.

e.g.

OpenBSD deletes "relic from the past" syscall:

[https://cvsweb.openbsd.org/src/sys/sys/syscall.h?rev=1.199&c...](https://cvsweb.openbsd.org/src/sys/sys/syscall.h?rev=1.199&content- type=text/x-cvsweb-markup)

Solaris documenting deleted syscalls (note however the libc interface is guaruaneed):

[https://docs.oracle.com/cd/E23824_01/html/E22973/gkzlf.html](https://docs.oracle.com/cd/E23824_01/html/E22973/gkzlf.html)

MacOS X is so unstable that even go developers had to go through libSystem:

[https://golang.org/doc/go1.12](https://golang.org/doc/go1.12)

<comment><USER30> > MacOS X is so unstable that even go developers had to go through libSystem

Just to be clear to anyone else, the Mac OS X syscall interface is _guaranteed_ to be _unstable_ by Apple. Going through libSystem is the only way.</comment></comment></comment></comment></comment></comment></comment></comment>


Female founders who've had a great 2016 - <AUTHOR> https://techcrunch.com/gallery/40-female-founders-who-crushed-it-in-2016/ <comment><USER5> I support these kinds of lists. Like #BlackLivesMatter, the focus on a purportedly disenfranchised group doesn't mean that the "main" group doesn't matter -- but it's an acknowledgement that we see plenty of representation of the main group -- in this case, men -- by default. Unless you believe that there really are no barriers specific to women (and it doesn't necessarily have to be sexism) and that women just are terrible at business/tech, why see such lists as threatening to non-women?

Note: There's a (very gray) "View All" button in the top-right of the slideshow. I was just going to complain about the hypocrisy of stuffing a list of purportedly successful women into a photo slideshow in a cynical attempt to increase page views.

<comment><USER6> May be more necessary than usual – I got the feeling that women were overrepresented in the "Founder-does-something-terrible" articles, at least on HN.

Some was certainly deserved, although I'm not sure about the proportionality of the 20th "No, seriously, Elizabeth Holmes is a terrible terrible person!" \- article.

Some was offensive, misogynistic, backwards bullshit that I can only hope is highly correlated with the writer's chances at next year's Darwin awards – like about 90% of anything ever written about Ellen Pao.

Some was in between – Marissa Meyer comes to mind.

I have no idea why about a third of men feel threatened by the whole idea, but I believe those are problems that need to be addressed offline. I've seen a few cases where some measures to reduce discrimination succeeded even with some initial scepticism. 1:1 talks seem to work quite well, as does starting with something blatantly obvious (dropping the photo requirement for applicants and blinding the names are two common options in my country). Once you get a team above a certain threshold (around 35% women I'd say) the whole dynamic shifts. Suddenly there's picnics and Tuesday morning runs and journal clubs etc. That's something that everyone notices and I believe it has dramatic impact.

The effects continue with any other measure of diversity you can introduce: having a few different nationalities around is an improvement, having someone with a completely different background can be a plus (met a 75-year old office manager once who was beloved at her startup) etc.

<comment><USER7> > as does starting with something blatantly obvious (dropping the photo > requirement for applicants and blinding the names are two common options in > my country

Unfortunately, very few efforts seem to focus on immediately applicable solutions like this that solve the problem (if there is one) fundamentally.

None of the Big Tech companies for example (Google / Facebook / Apple / Microsoft come to mind) currently do application blinding where possible, as far as I know. All of them however are very eager to promote movements like Girls Who Code because it's generally good PR and (I think) because it increases the available labor pool for them.

<comment><USER6> Blinding during interviews is obviously quite limiting – I probably wouldn't want to hire someone without having actually talked to them.

But if I had to guess, I'd say these large companies are actually quite fair in their hiring processes. Discrimination at that step in the process seems to be more common at smaller or older companies. The worst, most blatant actual case I have seen was the IT dept at a medium-sized bank.

At FB and Google I'd guess "career advancement" is more susceptible to biases. As company tries to create "shallow hierarchies", the risk of competition devolving into the law of the jungle increases (but, as I said, only guessing. Have no experience with them).

<comment><USER7> > Blinding during interviews is obviously quite limiting – I probably wouldn't > want to hire someone without having actually talked to them.

How about blinding during resume screening? Replace female or male names with a number or made up names. Phone screening even maybe, using some kind of audio processing. I have never heard of these companies using any such process.

Edit: Looks interviewing.io did such a process, here are the results – [https://blog.interviewing.io/we-built-voice-modulation-to- ma...](https://blog.interviewing.io/we-built-voice-modulation-to-mask-gender- in-technical-interviews-heres-what-happened/)

</comment></comment></comment></comment></comment><comment><USER8> Links to the lists

1\. [https://techcrunch.com/gallery/18-more-female-founders- whove...](https://techcrunch.com/gallery/18-more-female-founders-whove-had-a- very-good-2015/slide/1/)

2\. [https://techcrunch.com/gallery/21-female-founders-who- killed...](https://techcrunch.com/gallery/21-female-founders-who-killed-it- in-2015/slide/1/)

I looked up people from first list on linkedin to see what path they took to end up there. One commonality that immediately obvious is studying at Ivy league/private university.

Perhaps a more inspiring new year list would have been " where you are born doesn't seal your fate list", but thats not clickbait enough.

1\. Alex Depledge - University of Nottingham and the University of Chicago

2\. Minnie Ingersol - Stanford University and Harvard Business School

3\. Tracy Young - California State University-Sacramento

4\. Melody McCloskey - University of California, Davis

5\. Robin Chase - MIT and harvard

6\. Angie Nwandu - ?

7\. Payal Kakadi - <USER2>

8\. Maran Nelson - UT austin

9\. Adi Tatarko - ??

10 . Christina Lomasney - Harvard and University of Washington

11\. Piraye Beim - <USER3>

12\. Valerie Wagoner - <USER4>

13\. Hooi Ling Tan - Harvard and Bath

14\. Maria Ressa - ?

15\. Danielle Morrill - ?

<comment><USER9> I'm sick of hearing this meme that Ivy league universities automatically mean you were born wealthy.

Top universities have, by far, the most generous financial aid you can get out there.

<comment><USER10> I'm really skeptical that the financial aid you speak of is as accessible as you think it is.

Speaking completely anecdotally, someone very close to me chose not to go to Stanford, simply because her family couldn't afford it. And that was with a scholarship.

I've never asked her about financial aid, and if she investigated it. My guess is though that she fell into the category of middle class... aka, too rich to qualify for financial aid, too poor to afford $100K+ a year college.

<comment><USER11> Upper middle class, maybe. This can happen when your household income is $200k. Not $55k (national median) and certainly not below.

Higher ed financial aid leaves middle-upper middle class kids in a tough spot because their parents don't feel like they have income to spare, but the financial aid office doesn't feel they need charity. But this does not really happen to socioeconomically disadvantaged children, only those too far into the upper middle class.

The line where this happens is a lower income in mediocre private schools, and a higher income on good ones.

<comment><USER12> _Higher ed financial aid leaves middle-upper middle class kids in a tough spot because their parents don 't feel like they have income to spare, but the financial aid office doesn't feel they need charity. But this does not really happen to socioeconomically disadvantaged children, only those too far into the upper middle class._

They've got this thing nailed down to a T. Upper/middle kids can't go because their parents can't afford it. For a variety of reasons, lower income kids can't get the marks to get in to these schools so they never reach the point where financial aid would matter.

This lets these schools preserve their elite enrolment while providing nominally _generous_ support.

<comment><USER13> The income distribution at Harvard doesn't fit your theory: [http://features.thecrimson.com/2013/frosh- survey/admissions....](http://features.thecrimson.com/2013/frosh- survey/admissions.html)

<comment><USER12> _About 14 percent of the incoming freshman said their families earn above $500,000_

Sure it does. If everybody in the US had equal access to primary and secondary education and Harvard had income-blind admissions, do you really think that number would be so high?

<comment><USER9> Harvard does have income-blind admissions. Admissions officers don't look at your financial aid information when you apply and it's not a factor.

Of course, there's still the factor that wealthy parents can pay for a better education. Also that intelligence is largely hereditary.

<comment><USER12> Harvard has 30 percent legacy admissions. Those are definitely not income- blind.

<comment><USER9> While I agree that legacy admissions should probably be phased out, they're still "income blind." Knowing someone's a Harvard graduate does not mean you know their income.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> If this list was "Young founders" or "xyz state founders" no one would bat an eye.

Please let men and women be differently abled. Equality is the opposite of specialization. Specialization is power in a complex world. Video on that idea: [https://www.youtube.com/watch?v=jNz5WXwKHsU](https://www.youtube.com/watch?v=jNz5WXwKHsU)

Sexual dimorphism has outcompeted equality. Equality lost.

</comment><comment><USER15> "we see plenty of representation of the main group -- in this case, men -- by default."

So where is the list of male founders who kicked it in 2016?

I would be less bothered by such lists without the undertone of "we need such lists because of sexism".

<comment><USER16> Please see [https://news.ycombinator.com/item?id=13261688](https://news.ycombinator.com/item?id=13261688) and the links there.

We detached this comment from [https://news.ycombinator.com/item?id=13260049](https://news.ycombinator.com/item?id=13260049) and marked it off-topic.

<comment><USER15> Why do you make me off-topic and not the comment I replied to who started it by claiming over representation of men? Anyway, have it your way...

</comment></comment></comment><comment><USER17> BLM is a group that represents economically disadvantaged people. This list is pulled from the upper most echelons of society. Do you think it's ok to represent the wealthy as somehow oppressed?

Please don't take my question as an attack, I'm genuinely curious how people who support these initiatives view wealth.

<comment><USER16> We detached this subthread from [https://news.ycombinator.com/item?id=13260049](https://news.ycombinator.com/item?id=13260049) and marked it off-topic.

</comment></comment><comment><USER18> I always feel sad when I see these lists. I've always heard once we have female founders then we will see companies that are useful to women. But all those companies looks so useless to me. I think the problem is that they're targeted toward rich women. I hope someday people will create companies for poor women.

<comment><USER19> I thoroughly agree about some of these (artisanal tampons, eyebrow pomade), but Open Bionics is a _great_ thing and some of the others definitely look like worthwhile ventures.

<comment><USER20> To claim Samantha was the founder of Open Bionics does a massive disservice to the CEO, Joel, who is the guy that actually came up with the concept (before Sam joined as a "bizdev" person). It's Joel who had been making bionic hands since his teens, and who spoke at the Hacker News London conference about his work.

But hey ho - I suppose we have important social engineering to do...

<comment><USER16> > _But hey ho - I suppose we have important social engineering to do..._

Please drop the ideological vitriol from your comments here. It breaks the rules, poisons the discourse, and discredits the substantive point you were making.

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

</comment></comment></comment></comment><comment><USER21> Will techcrunch publish a similar list for non-white founders?

<comment><USER22> That's the problem with these kinds of lists - why not lists for gay founders and over-60s founders and disabled founders? Making lists of people in groups that suffer discrimination doesn't do any harm, but it's not clearly helpful either.

<comment><USER23> That an initiative to correct an imbalance doesn't correct _all_ imbalances is hardly an meaningful criticism. It's true: there aren't enough technology entrepreneurs of color, and probably not enough disabled founders either. Start the thing that helps those cohorts, by all means.</comment></comment></comment>


Meeting Technical Co-Founders - <AUTHOR> The advice is pretty consistently that it is ideal to have a long-standing relationship with your co-founders but what if you don't know any kick-ass technical people? What are good ways to meet great technical co-founders and form long-lasting relationships? <comment><USER2> I'm assuming you have an idea for a product and want someone to work with you on this. I agree with the comments that you should learn to build things. This doesn't mean you need to become a skilled programmer, but you should become familiar with the basic tools to build a first version of your product. There are a couple of reasons for this.

1\. The best people are typically attracted by traction, metrics and numbers, not fluff ideas. If you can build a first version of your product and get initial traction it will be much easier to get people interested in what you're doing.

2\. Putting in work shows that you're serious. For every 100 people that have "business ideas" there is maybe one that actually _acts_ on them by investing their own time and money. This will set you apart from all the other people looking for technical co-founders.

3\. It will make communication with your technical co-founder down the line easier. If you are doing anything related to software then you must understand (on a basic level) how things work and what tradeoffs and decisions go into building a product. Again, you don't need to become a programmer, but you should have enough knowledge to have an intelligence conversation with a technical person about important technical decisions. Otherwise there'll likely be a lot of frustration and bad surprises on both sides. Trust me, I've been there.

Btw, a "first version of your product" doesn't necessarily mean a be full- blown application. You could setup use a blog, newsletter, spreadsheets or whatever else to generate traction.

</comment><comment><USER3> Technical folks are driven by challenges. If you really want to meet or know technical people, you have to yourself start working on "impossible" task. Once you struggle, you can ask online community to help. Some of them might help and then you can take this conversation forward. building relationship is the hardest thing and it takes time. Many a times, you might miss the market by the time you have built relationship. So it can't be the only thing you are doing. No body likes to join a ship going nowhere.... create a map, treasure hunt plan, buy a ship and then ask people to come join you along your pursuit

</comment><comment><USER4> Learn to build things.

In the process of building things, you'll become confused and need help. Asking for help, you'll meet the kick-ass developers who want to share their knowledge.

In their course of helping you, you'll form a long-lasting relationship.

</comment><comment><USER5> A long-standing relation with your co-founder is not primarily going to help you win in the end. You win by solving a problem that a lot of people have or will potentially have as a result of some major shift in how we do things. One of the ways to have an intuition about a big problem before most people is to be in the game. You get in the game by making things. When you make things you realize how little you know so you ask people for help. That's how you meet "kick-ass techies."

You don't need to be a kick-ass techie to start making things. Just hack them together.

</comment><comment> ilya-pi In my experience, you can do what you like and then share, all the time. It really takes a great deal of effort to enable your peers to know what are your interests and what you are good at. In the end I had to force myself into writing articles, bringing the code to "ready for other people" state and etc. Once done — people will find you, then you just chat, try building something together and see how that comes out.

</comment><comment><USER6> Good ways to meet technical people are to get involved in your local tech community. Look for MeetUps in your area and attend. Start networking. Building long-lasting relationships is something that just comes with time as the friendships you make develop.</comment>


How to Win a Hackathon: Experiences from a Mobile Developer - <AUTHOR> https://medium.com/@lucasfarah/how-to-win-a-hackathon-experiences-from-a-mobile-developer-d26fb3461b5a <comment><AUTHOR> No, but i would use the experience from my hackathon in my own long-term project. Hackathon is when i try out new things and did a lot of experiments.

</comment><comment><USER2> just curious if any of your hackathon projects have continued after the event?</comment>


New high temperature superconducting record: LaH10 at -23C and 170 GPa - <AUTHOR> https://www.technologyreview.com/s/612559/the-record-for-high-temperature-superconductivity-has-been-smashed-again/ <comment><USER2> That parenthetical caveat about the pressure is a doozy. 170 gigapascals is almost 1.7 million atmospheres. So, yes, that's "warmer than the current temperature at the North Pole," but not remotely close to conditions you can easily achieve at the North Pole. For contrast, the crush depth of a modern nuclear submarine is about 3,000 feet, with pressure of less than 100 atmospheres. Kudos to OP for including it in the post title.

</comment><comment><USER3> There were recently reports about room-temperature of H2S superconductor under insane pressures. You can hold some big pressures of material formed as thin cylinder with thick walls of composites, but I'm not sure about actual numbers.

</comment><comment><USER4> Does anyone know why such high pressures are needed? Does the material adopt a different sort of crystalline structure at that point?

</comment><comment><USER5> How does one go about creating this kind of crazy pressure...?

<comment><USER6> [https://en.m.wikipedia.org/wiki/Diamond_anvil_cell](https://en.m.wikipedia.org/wiki/Diamond_anvil_cell)

</comment></comment><comment><USER7> The Jupiterians would love it</comment>


An 1874 Type Catalog - <AUTHOR> http://www.collectorsweekly.com/articles/the-worlds-most-beautiful-book/ <comment><USER2> Awesome! Anyone interested in chromatic typography can learn more about the evolution of chromatic fonts on [http://ilovetypography.com/2017/04/03/the- evolution-of-chrom...](http://ilovetypography.com/2017/04/03/the-evolution-of- chromatic-fonts/)

</comment><comment><USER3> Sweet! In high school we had a print shop with a human-powered flatbed press. It took four people to run it.

Two on the dirty side, one pulling the big lever and another wielding the ink roller.

Two on the clean side, one to put the paper on the press and another to take it off.

We got to try our hands at this chromatic stuff, with a little bit of metal- leaf thrown in.

That stuff was HARD to get right! But it was really nice when we did.

</comment><comment><USER4> Beautiful. Love the 'CHROMATIC' bubble style on the front page, which feels like modern graffiti. Didn't expect this to be done in the 1870s.

</comment><comment><USER5> I not sure if I'm looking forward to a Renaissance of the 19th century <blink> tag.

</comment><comment><USER6> i love the colors. I collect football cards, so baseball really isn't my thing. But my favorite cards are 1933 goudey. If you image search them check out the colors / design

</comment><comment><USER7> Wow. It's quite pretty, but it shows the wretched excess of nineteenth century typography.

<comment><USER8> > wretched excess of nineteenth century typography.

I feel compelled to defend nineteenth century typography here :)

I will point to the work of pierre & fermin didot[1]. arguably some of the most enduring in type history - currently it's used a lot in fashion. you just don't like the style of these examples, which is totally reasonable.

1\. [https://en.wikipedia.org/wiki/Didot_(typeface)](https://en.wikipedia.org/wiki/Didot_\(typeface\))

<comment><USER7> Point well taken re Didot. Perhaps I should have said Victorian.

<comment><USER8> I disagree with that one too, but maybe we have different taste. akzidenz- grotesk[1] was first released in 1898 and it will probably look modern to you (it was the basis for helvetica). there were also a lot of titling gothic fonts that came over from germany and britain and are still used today in tons of movies and more cinematic advertisements.

I'm not trying to create an argument or anything, but if you look at type history most of it was sorted out around that very period, probably because the price and expertise required for printing was going down. so you'll find typefaces you like (and don't like) in almost every era. the modern typefaces we know and love today are mostly remixes from a few highly productive periods. we've been making tiny variations on existing fonts for centuries -- lettering by bodoni is from the renaissance but it's so contemporary and magazine-y.

1\. [https://en.wikipedia.org/wiki/Akzidenz- Grotesk](https://en.wikipedia.org/wiki/Akzidenz-Grotesk)</comment></comment></comment></comment>


Flattr adds support for funding in Bitcoin - <AUTHOR> http://thenextweb.com/insider/2013/07/05/flattr-adds-support-for-funding-in-bitcoin-flirts-with-option-to-withdraw-in-the-virtual-currency-too/

<comment><USER2> While I liked Flattr I doubt that it's a sustainable service:

It's a huge vendor lock in, like iTunes, but without a large user base/customers that are probably worth to accept the terms and conditions and the vendor lock in.

Flattr is popular only among a specific kind of websites: Here in Germany, flattr users are probably podcasters and bloggers. Even as a popular site your traffic/audience is much smaller than in the US or global, so ad-driven sites and even flattr isn't going to work.

Large content producers, like the Axel Springer Verlag, recently started an "inhouse" SSO subscription platform. No dependencies except CC providers. No 30% charges. Full control.

Even as a high profile community person with 5000+ Flattrs, you can't live from that e.g. it brings in maybe 2500€/month but those very few people work a lot and invest a lot in technology. So i doubt this is enough. Also, nobody knows how long it will last. The subscription functionality was implemented as auto-expiring and changed only a few months ago (iirc)…

With lots of cheap and easy payment providers (like Stripe), paypal and bitcoins it became quite easy to accept "real donations" e.g. 10€+

</comment><comment><USER3> What I completely missed about BitCoin at first is that it enables programmatic exchange of money. That's big.

</comment><comment><USER4> I like Flattr's overall schema, which is basically:

\- Set a monthly budget of money you're going to use (eg. $100.)

\- Every time you like/retweet/flattr/etc. someone, you give them a share of that budget. So if you flattr five people, they each get $20; if you flattr twenty people, they each get $5.

I think the issue here is what makes using Flattr better than, say, purchasing goods (ie. an EP/tickets for a musician or a print for an artist.) As the user, this seems like a win-win for me, since I get something fungible out of the donation and the artist gets more money than had I done it through Flattr, since I'm a capricious selfish human who is reluctant to budget a large amount of recurring costs away from myself.

</comment><comment><USER5> One could question whether micro-funding efforts will ever take off, but let's leave that conversation aside for a moment. Of those sites that have focused on micro-funding, I've noticed that Flattr seems to be on the cutting edge of every good decision that a company in this space can make. I used to work for a competitor, Kachingle, and I am sad to say that Kachingle lacked the vision to keep up with this space, or add the features that the users of these sites wanted. Flattr seems to understand their own user base, and also seems willing to think creatively about what the users might want next.</comment>


What Microsoft Can Do to Make Me Hate Windows a Little Less - <AUTHOR> http://garrett.damore.org/2015/12/what-microsoft-can-do-to-make-me-hate.html <comment><USER2> You use Windows for games, and other applications. Why not just develop on that machine?

"My travel computer can't run Windows for free!" \- this doesn't seem to be slowing down the development of open source software on Windows at all.</comment>


Warren Buffett and Charlie Munger FAQ - <AUTHOR> http://buffettfaq.com/ <comment><USER2> > So, what we do is take money and move it around into other businesses. The > newspaper business earned great returns but not on incremental capital. But > the people in the industry only knew how to reinvest it [so they squandered > a lot of capital]. But our structure allows us to take excess capital and > invest it elsewhere, wherever it makes the most sense. It's an enormous > advantage.

Wow, they are playing the game at a higher order than I have even considered.

<comment><USER3> But Berkshire Hathaway ( or the world in general ) is also at a point where they have too much capital and there are very little low hanging fruit ( comparatively speaking ).

It is a lot easier to invest a few millions in a few very good small business, but once you need to invest hundreds of billions, all of a sudden you have very little choices.

</comment></comment><comment><USER4> Wow, thanks for taking time to compile the list. It makes an interesting read. One thing - I wonder how many things that Warren or Charlie said 20 years ago they themselves no longer think are true.

</comment><comment><USER5> > What are the economic characteristics that make Kraft a good business? WB: > Most big food businesses are good businesses in that they earn good returns > on tangible assets. If you own important branded assets in this country, and > you have good assets, it is not easy to take on those products. Just imagine > Coca-Cola. They sell 1.5 billion servings every day. It has been in > everyone's mind since 1886—associated with good value, happiness and > refreshment. It is virtually impossible to take it on in a huge way. It may > not be the same with Kraft. Kool-Aid, but I'm not sure I want to take on > Kool-Aid. To implant RC Cola in people's minds globally is very, very > difficult. A brand is a promise. Coca-Cola delivers something to you. Virgin > Cola — an unusual promise in a product—tried and couldn't figure it out. > Whatever it was, it didn't work. Don Keough would know. Who would buy a can > for two-cents-a-can less than Coca-Cola? We feel pretty good about branded > products if they're leaders in their field. There is nothing unusual about > Kraft that's different from Kellogg. Some good factors are price. If you > don't pay too much, you will do okay. But you won't get superrich, as the > attributes [of a strong brand] are well recognized.

Source: BRK Annual Meeting 2008 Boodell Notes URL: Time: 2008

He was very wrong on this. Kraft just wrote-down $15 billion. Their brands have lost their "cachet." Nobody wants them nor needs them -- you're either buying a gourmet, healthy version (i.e. real cheese instead of the plastic block Velveeta) or a store's private label.

[https://www.irishtimes.com/business/retail-and- services/warr...](https://www.irishtimes.com/business/retail-and- services/warren-buffett-was-too-american-to-see-through-kraft-1.3808217)

<comment><USER6> And I'd imagine not many people associate "happiness and refreshment" with Coca-Cola anymore.

<comment><USER7> But maybe they do for Odwalla, Smart water, Dasani, Minute Maid, Vitamin Water, Zico Coconut Water, Nestea, Poweraid... The list goes on.

They are wealthy and have unprecedented massive distribution. They can buy up any new upstarts before they even think about becoming a real competitor. And physical drink distribution is much, much more expensive to scale than something like an software competitor. It took Coca Cola 100 years to build their current network.

<comment><USER6> Originally Buffet was saying that he believes and invests in trusted brands, I was just saying that Coca-Cola the trusted brand is not regarded as highly as 15-20 years ago. And I've personally only heard about Nestea from your list of brands (I'm not an American) and as such I have a really bad opinion of the product behind said brand (I see it as sugary water masquerading as "tea"). Otherwise I agree, building a logistics holding company is hard, but Buffet said he invested in companies like Coca-Cola for their brand value not for their logistics know-how.

<comment><USER8> Yes, you're right - one can dominate the cola industry, but if the cola industry itself goes away, one has serious problems.

To your other point, Buffett doesn't always have the time to elaborate on each answer, so perhaps you missed it in this context. In general, a supreme distribution network is something that he values highly. It's known as having a 'moat' and is one of his most cited investing principles.

<comment><USER9> Who would have serious problems if the cola industry goes away, except for the owners of the cola companies? It would be greatly beneficial to society, at least with a substantial decrease in healthcare costs.

<comment><USER7> Not even the cola companies would care. They would probably just sell more juice and bottled water. And the bottled water has much higher margins.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is really cool, for someone trying to keep up with his advise that might be a great source to keep around.

</comment><comment><USER11> Good stuff. It's going to take a while to look at all 463 of them.

</comment><comment><USER12> Another good site is mastersinvest.com</comment>


Pivoting is really hard. - <AUTHOR> http://sahillavingia.com/blog/pivoting-is-really-hard/

<comment><USER2> It is _really_ hard. As a matter of fact, "pivoting" is a bit too easy a word to use. Kind of like when "shell shock" was replaced by "battle fatigue".

A pivot is typically a center point, such as a pin or pole, on which something anchored to it can rotate. This is pretty easy if you're a pin or a pole, as you were probably constructed with this type of operation in mind beforehand.

Teams are not constructed with this capability in mind. We optimize based on current plans, not on potential future plans. As such, the only real pin in a team's pivot capability is their mental capacity to switch off plan A and go to plan B.

This is hard to do, consciously or otherwise. Most people need the time to wind down, process their thoughts to understand why the idea they've been working on is no longer feasible. This is a big mental leap, even for the most prepared. Some struggle for a while. Some never get there. One thing's for sure -- it rarely if ever shifts simultaneously for everyone on a team.

Pivoting is the other shoe that drops as a result of "failing faster". Indeed, it's a necessary tactic if one wishes to stay in business. But, because of the makeup of teams and original plans, efforts to pivot seems to fail more often than not.

<comment><USER3> Teams aren't constructed to pivot, but that's kind of the point of Lean Startup. You should ideally be able to validate an idea with a skeleton crew (or an individual). The bigger the team necessary to validate the issue (some problems are BIG, and require big teams), the more difficult it is to pivot. The primary goal of a startup is to learn, so the team should only be big enough to learn more about the problem area, and learn about the means to an appropriate solution. Teams built to compete will have more trouble than teams built to learn.

</comment></comment><comment><USER4> It's an interesting post, because there are probably two types of 'pivots':

1) Change the solution to the problem you're solving 2) Change the problem you're solving

(1) is a lot easier than (2).

I think the key here is to love the problem you're solving - if you've chosen a big enough problem (or important enough), then there should always be a market for a solution... don't get discouraged when the particular solution you tried doesn't work... you just need to find a new one that will.

<comment><USER5> To me pivoting implies #1. You're pivoting _around_ a problem to attack it from another angle.

If you're doing #2 then you're not pivoting, you're walking away to a different place entirely.

</comment></comment><comment><USER6> If you're truly pivoting, and not just giving up and changing plans, then one would imagine that you can latch onto the common thread between the old and new direction as a means of motivating the team. If you're building a new product towards the same vision, focus on the vision, if you're re-using technology built but towards a different vision, focus on the technology.

</comment><comment><USER7> This is one of the reasons to keep the team as small as possible and invest as little effort as possible in your idea to validate it. The less you have invested, the less you have to throw away when it turns out the idea wasn't so great in the first place, and the easier it'll be to make that mental context switch.

</comment><comment><USER8> It depends on the situation.

Sometimes pivoting is easy, because you've been struggling with a crappy product, everyone knows you need to change something, and you're getting an incredible response for a landing page you threw up on a whim over the weekend. So pivot - easy call.

Sometimes pivoting is hard, because you're making some money, employees are happy, but you're convinced that in six months your market segment won't exist any more.

It just depends.

</comment><comment><USER9> I think you're misusing the term pivot here. [http://www.startuplessonslearned.com/2009/06/pivot-dont- jump...](http://www.startuplessonslearned.com/2009/06/pivot-dont-jump-to-new- vision.html)

Changing the product is changing the vision and not really a pivot.

<comment><USER10> Changing the product is _not_ necessarily changing the vision. Read the article you referenced... IMVU changed the _direction_ of their product drastically from IM to social networking while still adhering to the _vision_ of avatar mediated communication.

</comment></comment><comment><USER11> This view on pivoting reflects the Groupon pivot fallacy where you just dramatically change your business model and, poof, you're a billionaire.

What we've found to be a more tolerable, easy-to-execute view on pivoting is to say, we know what general problem we're focused on solving, but we don't know exactly how to solve it.

Pivots are therefore continual and small. We probe in various directions hypothesizing that a certain approach might help us make headway. Among other things, lowering the stakes and testing in small, bite-sized pieces will make it much easier to sell a new idea to your team.

</comment><comment><USER10> This is exactly the problem that makes the Lean Startup so interesting and radical. Everything we think we know about business has ingrained in us a sense of change equating to failure. We build up inflated expectations for our non-existant products and business models to employees, to investors, to friends and family, all the while ignoring the fact that all the assumptions on which we've based our businesses are just that, guesses. Then, when one or more of the assumptions is invalidated, we're so embarrassed about being wrong that we try to persevere even when we _know_ we're on the wrong track, and then run full speed into the wall instead of changing course.

Eric Ries has some really insightful ideas about how to turn these problems around, and if you haven't already read The Lean startup I _highly_ recommend it.

[http://www.amazon.com/Lean-Startup-Entrepreneurs- Continuous-...](http://www.amazon.com/Lean-Startup-Entrepreneurs-Continuous- Innovation/dp/0307887898)

</comment><comment><USER12> Relevant post: "Why Lean Startups are Hard Part"[1]

[1] [http://kevindewalt.com/blog/2011/08/05/why-lean-startups- are...](http://kevindewalt.com/blog/2011/08/05/why-lean-startups-are-hard/)

</comment><comment><USER13> the difficulty of the pivot is entirely defined by the pivot angle and progression of the project. for moderate progression, angles < 90deg. are not so bad, most of your vision remains aligned. > 90deg. is very hard and >135deg. - abandon ship!

we just finished a drawn-out consumer-centric to provider-centric pivot of maybe 30deg. with the project was already at at 75% completion but we felt very little pain because the core value model did not change, we just shifted gears, reworked a few features and here we are, 30 days before public beta. we have fairly little investment as well - approx 250k and a team of 6.

if your core value targets a very narrow market, you are more susceptible to these difficulties.

</comment><comment><USER14> Isn't a pivot supposed to take place before any actual product development is done, much less months or years of it?

<comment><USER15> If there's no product, then are you really pivoting? To me, pivoting implies that you have a product and are moving away from it because it's not the best avenue of attack for the problem you're trying to solve. In other words, you've tried an approach (i.e. developed a product), it hasn't worked, and now you're trying something different.

</comment></comment><comment><USER16> Love your idea, but don't love it too much, because there's a good chance it won't last.

</comment><comment><USER17> I'm in the middle of a pivot. I think that the difficulties described in this article, while totally possible, are more a result of doing it backwards. Before we pivoted, my co-founder and I had very long discussions. As we brought our employee aboard, we made her aware of the pivot. IF we had external investors, they would be aware of the need to pivot at least as early as us (in fact one of the arguments for external investors is that they'd hopefully have made us aware of it earlier... I wish we'd pivoted a year ago.)

I'm sure the larger your company is, and the more staff you have and the more money you've taken the harder it is to pivot.

I think the lean startup methodology and pivoting itself, is more focused on a way of doing things _before_ you get all that.

Keep things really small and nimble and don't spend years on something before pivoting. OF course this is useless advice to someone whose spent years on something that looked good and _now_ needs to pivot. But I think that this is an indication that they weren't ready to pivot more when it was easier.

In fact, isn't the whole goal to pivot when you're small and its cheap, and easy?

So, I think the lesson learned here is to be really focused on the metrics & nature of your business so that you know really whether you've got a viable business before you hire people, raise money and get a lot of emotional and other investment in that business you need to pivot away from.

Maybe the lesson is not that Pivoting is hard, but Pivot Early, Pivot Often.

(Not sure about that. Doing my first real pivot here as we speak.)

I don't deny the momentum.... in fact, the momentum of the old product is such a pull, even though everyone's fully committed to the pivot... its a distraction at best and at worst, we spend some work maintaining that product (which is where our funding is coming from now) that could be better spent on the product we're pivoting into.

Just some thoughts, apologies if they're a bit all over the place. Pivoting is hard, I don't deny, pivoting early and often, I think, is the approach that will make it easier, and make pivoting later, when its hard, less needed.</comment>


Ask HN: Do you use Facebook advertising? - <AUTHOR>

Have you ever used Facebook advertising? What were the results (CPC, CTR, conversion, frequency)? How does it compare to other advertisement platforms you've used? What tips can you give me for effective low-cost campaigns?
OP starts: I used it once for a survey. I spent $100 and received 109 clicks for that money (CTR 0.008%). Those 109 clicks resulted in 13 completed surveys, so a conversion of 12%. The frequency was 7.0 with a reach of 207840.
To be honest I was really disappointed. I expected a higher CTR (more like 0.01 or 0.02%) and a lower cost/click. It cost me nearly $1/click while I counted on $0.25~0.50/click.
I'm planning to use Facebook advertising again though, the geographic targeting is pretty good. Looking for some tips. Should I go for a higher frequency (Seth Godin says that frequency > reach in his book Permission Marketing)? <comment><USER2> Changing my gender and adding years to my age, makes for more bizarre and entertaining FB advertising spam.</comment>


Show HN: Float – Save your best links, explore the world's - <AUTHOR> https://float.am <comment><AUTHOR> Hey HN, I made Float because I love discovering cool new links and websites.

I'll often save my favorite links somewhere in my bookmarks or in a note and forget about them, so I figured I wasn't alone in this and it would be better if everyone had a public profile to share them so that we could all enjoy and browse other people's finds.

This is a first version, but the basics are here: you can save your best links, tag them, follow people and get their links in your feed. Going to add "lists of links" soon.

I tried to design the site to encourage content and user discovery as much as possible, and will continue adding features going that way.

Let me know what you think!

</comment><comment><USER2> Delicious reborn.

</comment><comment><USER3> Is there not a chrome/ff extension? You could quickly create a bookmarklet in the meantime.

<comment><AUTHOR> I haven't made a browser extension yet, but that's definitely on my list of things to add.

I guess you're right, I'll make a quick bookmarklet in the meantime!</comment></comment>


Microsoft Research applying spam-fighting techniques to attack HIV - <AUTHOR> http://www.theverge.com/2011/12/4/2609172/microsoft-research-applying-spam-fighting-techniques-to-attack-hiv?utm_source=dlvr.it&utm_medium=twitter

<comment><USER2> Here's a link to the actual papers (and code): (Note that none mentions "spam")

<http://mscompbio.codeplex.com/wikipage?title=PhyloD>

Overall it's pretty kickass, and the papers themselves tell why it's HIV in particular: HIV evolves extremely quickly within a specific host, so any general solution needs to be able to account for a virus that can adapt to your specific treatment regimen.

And that's the link to spam-fighting: rapidly changing strategies to fool your immune system into thinking it's a good cell that should be let in, which is amenable to similar spam-fighting approaches.

<comment><USER3> These are great links, and answer many of the questions that I had. But there must be something more to the story; PhyloD is from 2007 and the news article is from 2011. Tangentially related, the research article that you linked is cited by a paper in PNAS that describes extraordinarily constrained coevolving group of sites in HIV (which appears to be a site of protein-protein interaction in the Gag protein). Such a group is likely a good target for multiple simultaneous therapeutics, as multiple mutations there likely reduce HIV's intrinsic fitness: <http://www.pnas.org/content/108/28/11530.full>

<comment><USER4> Checking David Heckerman's web page shows this paper from October 2011 in the Journal of Virology. I don't know how it relates to the news article specifically but it's interesting if you'd like to follow this stream of work.

[http://jvi.asm.org/content/early/2011/10/20/JVI.05577-11.abs...](http://jvi.asm.org/content/early/2011/10/20/JVI.05577-11.abstract)

(Disclosure: I work at Microsoft Research, but not on this project.)

</comment></comment></comment><comment><USER3> The article is quite light on details. The version from Microsoft Research is somewhat more informative: [http://research.microsoft.com/en- us/collaboration/stories/hi...](http://research.microsoft.com/en- us/collaboration/stories/hiv_research_za.aspx)

My take is that MR is contributing compute resources as much as they are contributing algos. It's too bad that neither article really describes the problem domain nor the solution space. If this were a genetic study of HIV resistance to ARVs (and it seems like it is but again, few details), one could at least imagine having to look for 3-way interaction terms across the HIV genome, a large search space. Would be interesting to know if this is the problem they are tackling, and if MR's major contribution is algorithms or compute.

</comment><comment><USER5> I love reading stories like this, but with a background in fighting spam I'm a bit skeptical. I would love to hear more details.

For those of you who don't know, most of Microsoft's anti-spam efforts are from techniques I suspect are hard to translate to the HIV domain. Microsoft catches the overwhelming majority of spam (98%) using IP address blocking. Most of the remaining spam is caught using long lists of regular expressions managed by humans. I would not expect researchers to be crafting regular expressions or mapping blocklists to protein sequences. Maybe they are, but the article makes it sound like some algorithmic approach.

Obviously there are more modern techniques for fighting spam, but Microsoft isn't using them yet, and I hardly think of Microsoft as a leader in this space.

<comment><USER6> The people in Microsoft Research are very different people than the ones in charge of Hotmail. It could be that the Research people are more familiar with content analysis methods.

<comment><USER7> I've said it before, but I really think Microsoft would be a completely different (and better) company if Microsoft Research was a bigger part of their product development. Just look at the insane stuff they're doing with Kinect, for instance.

<comment><USER8> there is a chance if they were more involved there would be an implicit loss on their freedom to do amazing stuff.

</comment></comment></comment></comment><comment><USER9> I'm guessing this just means they used some bayesian maths.

</comment><comment><USER10> David Heckerman here...

We are using a key principle that we use in fighting spam to fight HIV. In the case of spam, we have spammers changing their emails to get around the spam filters. So, we go after their Achilles heel: their need to extract money. In the case of HIV, we have HIV mutating to get around our immune system. Here, we're again looking for the Achilles heel(s) of HIV—vulnerable spots on the virus that, if they mutate, compromise the function of the virus. One step in this approach is to catalog the spots along HIV that our immune system can target. This is where PhyloD comes in. Here are some of the articles describing our search for targets using PhyloD:

• G. Alter, D. Heckerman, A. Schneidewind, L. Fadda, C. Kadie, J. Carlson, C. Oniangue-Ndza, M. Martin, B. Li, S. Khakoo, M. Carrington, T. Allen, M. and Altfeld M. HIV-1 adaptation to NK-cell-mediated immune pressure. Nature, 476 (7358): 96-100, August 2011.

• A. Bansal, J. Carlson, J. Yan, O. Akinsiku, M. Schaefer, S. Sabbaj, A. Bet, D. Levy, S. Heath, J. Tang, R. Kaslow, B. Walker, T. Ndungu, P. Goulder, D. Heckerman, E. Hunter, and P. Goepfert. CD8 T cell response and evolutionary pressure to HIV-1 cryptic epitopes derived from antisense transcription. JEM, 10.1084/jem.20092060, January 2010.

• C. Berger, J. Carlson, C. Brumme, K. Hartman, Z. Brumme, L. Henry, P. Rosato, A. Piechocka-Trocha, M. Brockman, P. Harrigan, D. Heckerman, D. Kaufmann, and Ch. Brander. Viral adaptation to immune selection pressure by HLA class I-restricted CTL responses targeting epitopes in HIV frameshift sequences. JEM, 10.1084/jem.20091808, January 2010.</comment>


YAML Sucks - <AUTHOR> https://github.com/cblp/yaml-sucks <comment><USER2> Less strict JSON allowing comments and unquoted keys would be fine. Even better if there was a date literal.

</comment><comment><USER3> Sure, YAML sucks. But so do XML (remember that?) and JSON. CSV sucks, too. I think the real question is which format sucks less.</comment>


Biggest "start-up" mistake - <AUTHOR> http://lagesse.org/index.php/2007/08/05/my-biggest-start-up-mistake/ My biggest startup mistake is one as well:

    I trusted unproven people (in a startup role).  And they didn't prove.
 <comment><USER2> I have put emails out to 2 proven programmers (Marc Andreessen and Max Levchin) to show up in my NYC office next week to interview for positions as programmers in my startup. To get hired, they must promise to lay everything on the line so I can fulfill my dreams, this of course includes their respective ferarris as well as Marc's 'windfall' from the recent acquisition of Opsware. John Chambers will leave Cisco to be my VP of sales even though we have neither revenue nor funding yet.

<comment><USER3> Good point.

What does "proven" mean? Even if you've worked with someone before, and things worked out well, there's no guaranteeing it will be 100% the same the next go around.

Miscommunication is probably the biggest problem here. Were both of you expecting to work 80 hours a week on the startup for the next 3 years of your life? Or was one person really thinkg "I'll see how this thing plays out... might have to bail after a few months if it doesn't."

</comment></comment><comment><USER4> Not trusting "unproven" people in a startup can be a far bigger mistake, however. If you don't trust your employees, they'll quickly fall back into the "Okay, it's a bureacracy, I'll do the minimum amount of work and collect a paycheck" mode. Or they'll leave. Because there's little else they can do if you don't trust them.

Instead, you should trust them, but always have contingency plans (which you don't tell them!) for what to do if they don't perform. You probably need those contingency plans even if you're doing the work yourself or have hired the best developers on earth. After all, nearly every software project takes 3 times as long as you expect (even when you account for Hofstadter's Law ;-)), and some things just plain aren't feasible.</comment>