Ask HN: Frequent job hopper? How do you build a good reputation? - <AUTHOR> I have a career that's filled with many contract and/or part-time jobs. I started out with two part time developer jobs in college. Since then, it's been mostly contract jobs.
Most of my contracts aren't the kind that pay you well for some highly specialized knowledge. They're the kind of contracts that pay low because the companies don't want to pay employer taxes, or they simply don't have available work to justify a FT hire. Being hired as a contractor, I'm not expected to grow within the company, and these are small companies so it's difficult to build a good network. I don't stay longer than 18 months at any given place.
My last four years were also fully remote jobs. On one hand, it feels better to have companies trust you well enough with more autonomy. But being less visible also lessens the chance for promotions, contacts, or career growth.
My network isn't really that great, and I have a small circle of friends, none whom can provide good leads in the industry I work in.
Recruiters contact me a lot about FT jobs but any interviews I get through them never turn into offers. All my jobs offers have started out with cold applying, shotgunning resumes. All these rejections for FT jobs make me feel uneasy, and I'm tired of the rat race. I have a non-STEM degree and don't know if it also matters or not.
So I am at a standstill on how to build up my reputation after wasting so much time not building it.
I've set aside these two options:
1. Return to college to properly get a related degree, leverage that channel to get an internship and/or a full time non-contractor position upon graduation.
2. Keep applying to larger companies for FT jobs, and interview prep. I don't know of any good reliable sources for interview practice, but I did have one good mock interview with a local developer. He's just too busy to follow up with.
I am open to other options, if you have any suggestions on my first course of action. <comment><USER2> On your resume, list your time as a contractor as a single position ("software developer, contract" or better, "software developer and principal, $my_llc_name"). Then describe it the way you would a full-time employee position. Just list your big-name contract employers as clients in a single bullet point. It won't help build your network but will make you look a bit less like a job hopper on your resume.

</comment><comment><USER3> I have two columns on my resume. One for f/t employee jobs and one for freelance/contract jobs. I even call it "Select freelance/contract jobs". It gives me the freedom to list the gigs where I did something worth showing off and/or where the contact would make a good reference. It illustrates that I'm a contract worker, and I've never had anyone ask me "why do your contracts turn over so fast?" It's the nature of the work.

<comment><AUTHOR> That's an interesting idea for a resume layout, although the columns will probably look very unbalanced with my set of jobs. I've only had two FT developer jobs, both of which are too old or too short to have made any meaningful impact or progress.

</comment></comment><comment><USER4> 1\. Pick a very narrow topic that will let you get mastery quickly but is impressive to potential coworkers

2\. Do it in public (start by speaking about it at meetups and lightning talks)

3\. Use the people you impress to help you get jobs (rather than going through HR)

</comment><comment><USER5> Job hopping every few months as a contractor doesn't seem to be an issue. At least it isn't for me - recruiters and clients reach out to me despite that and nobody ever questioned it.

> I am at a standstill on how to build up my reputation after wasting so much > time not building it.

Not sure about _reputation_ , but you can at least build a decent network on LinkedIn to guarantee a steady supply of contracts by engaging with recruiters.

</comment><comment><USER6> Exactly what kind of developer jobs have you been doing?

<comment><AUTHOR> Web development jobs. Ranging from CMS-based websites using WordPress and Magento, and built in frameworks in stacks, LAMP-based to Ruby on Rails to using React.

These jobs all are underpaid, 1099 jobs. Made anywhere from $15/hr to $35/hr in a medium COL American city. I need work that is more stable and doesn't have me hopping around, and not having to live paycheck to paycheck.

All of these jobs are for small business clients, with usually me as the only developer. It sometimes feels more like consulting work, but I want more experience working in a dev team. I don't know how to pass interviews for FT jobs working in larger groups.

<comment><USER6> Definitely don't go back to college to get a CS degree. At this point in your career the only thing employers want to know about is your previous job experience. I have a bachelors degree in computer science and have never once been asked about it in a job interview.

> Recruiters contact me a lot about FT jobs but any interviews I get through > them never turn into offers.

You mention this almost as a side note but I think its pretty clear thats your problem and not the "job-hopping". If job-hopping was the problem then you wouldn't even be getting interviews because they can already see that from your CV when you apply.

Whats going wrong in the interviews? Do you ever get feedback from the companies that reject you? Are there questions they ask you that you stumble on? This is what you need to be focusing on. A CS degree won't help you one bit with that problem.

It sounds like you have been working on fairly run-of-mill CRUD based applications that don't require that much thought. Can you be more picky about what jobs you take? Try getting jobs which will build up your experience rather than simply pay the bills. That way when you go to an interview you might sound more enthusiastic about your past experience - this will come across well to an employer.

Also try and pick a field and specialise in it. You mention LAMP, Ruby on Rails, React - all of those are good platforms to work in with good employment opportunities but maybe you should specialise in frontend or backend. Also I would ditch the wordpress & magento stuff.

<comment><AUTHOR> >Whats going wrong in the interviews? Do you ever get feedback from the companies that reject you? Are there questions they ask you that you stumble on?

Several problems were spotted through mock interviews I took, as well as real ones that gave feedback. With the mock interview, I dragged on too much explaining my past experience because of all the disparate jobs. With Triplebyte, I was told that I show breadth in talking about different topics but not much depth in any of them. And very little knowledge on large system design (which I want to get a beginner job at).

>It sounds like you have been working on fairly run-of-mill CRUD based applications that don't require that much thought. Can you be more picky about what jobs you take?

That is true, about 90% of the work I've done is CRUD web dev. The most in- depth project I worked on is for an indie game written on a C# .NET framework. This was a one-off opportunity that I got browsing job requests on Reddit, and I was given the offer based on some personal projects I had. But it didn't lead to more substantial game dev jobs. I suck at getting the ball rolling.

I have to just fall back on applying blindly as my networking game isn't very strong. Whenever a contract ends, I come off as too transactional when I speak to people about seeking work and that turns people off.

Even though Ruby on Rails has started to be past its peak popularity I like using it, and also want to use React and Vue more. I'm definitely not going back to CMS work. A colleague once forwarded me a Magento job because he became an expert in it, but had no interest in going back to that.</comment></comment></comment></comment>


Go-style concurrency in C - <AUTHOR> http://libmill.org/index.html <comment><USER2> This is interesting, but I don't really understand the differences with the existing coroutine libraries like libtask, libconcurrency or libcoro.

Of course, it uses the longjmp/setjmp trick, as suggested by Dmitry Vyukov.

[http://www.1024cores.net/home/lock-free- algorithms/tricks/fi...](http://www.1024cores.net/home/lock-free- algorithms/tricks/fibers)

However, I'm not sure of the benefit of this approach, compared to writing a few lines of stack switching assembly code per architecture. Especially, how portable are the implementations of longjmp and setjmp across the multitude of C libraries and operating systems?

But more importantly, it doesn't seem to solve the two main issues of coroutines libraries written in C that were already solved in Go:

\- How does the stack can grow or shrink? (specifying the stack size in the worse case scenario doesn't scale well)

\- How can a coroutine be moved to another operating system thread and back? (useful when blocking or when parallelism is needed)

</comment><comment><USER3> This is really dang cool. I started a similar project[0] but have tabled it for now, since I'm not sold on the usefulness of making C easier to use this way.

The way I see it, there are two ways to use a library like this that are worth considering: adapting existing projects, and starting new ones. In my opinion, the gains to be had from rearchitecting an existing project to use such a library are minimal, and for the vast majority new projects, C is not the best choice these days. If you want the performance of C with the programming style of Go, you can probably get away with just using Go!

That said, it's nice to see a polished, working implementation of this idea. Definitely something worth being aware of.

[0] [https://github.com/aji/libco](https://github.com/aji/libco)

</comment><comment><USER4> > "Libmill is intended for writing single-threaded applications."

You can do concurrency on a single thread. This is the message I find it hard to get across when explaining CSP concurrency libraries.

Some people argue about usefulness of such libraries as being not native and leaky abstraction. I developed Go-style concurrency "port" to Tcl:

[https://github.com/securitykiss-com/csp](https://github.com/securitykiss- com/csp)

and it is one of few developed-in-house things that became the productivity booster in my toolbox.

The interesting thing about it is that thanks to the expressive power of Tcl I was able to port not only the semantics but also almost completely mimic Go syntax.

<comment><USER5> I don't use Tcl but that looks nice.

> _You can do concurrency on a single thread. This is the message I find it > hard to get across when explaining CSP concurrency libraries._

Heck, there's an entire language built around single-threaded concurrency! Compiles to C, coincidentally - it targets embedded platforms. It's not quite CSP style though, it takes after Esterel and uses synchronous reactive concurrency:

[http://ceu-lang.org/](http://ceu-lang.org/)

However, as soon as you have multiple Céu programs communicating (for example, multiple Arduino's) the program-to-program communication is fairly CSP-like.

<comment><USER6> Don't forget Javascript.

</comment></comment></comment><comment><USER7> There's more to report than simply an awesome library. Two days ago, someone allegedly unfamiliar to the project (Paul Banks) appeared from the ether, applied a few "simple" patches, and improved the performance of libmill _7 fold_ (for OSX at least). That just doesn't happen, ever, in open source.

[https://twitter.com/sustrik/status/666360179802402816](https://twitter.com/sustrik/status/666360179802402816)

<comment><USER8> The twitter message you linked to says this:

        The speedup was caused by replacing setjmp by _setjmp though.

I know this may sound mysterious, but for BSD/OSX... "yes". It is "well known" (if you're the sort of person who writes coroutine runtimes [1]) that _setjmp is far faster than setjmp. It's morally equivalent to 'sigsetjmp', but more portable, if less standard.

[1] [https://github.com/jaroslov/coro/blob/master/coro.hpp](https://github.com/jaroslov/coro/blob/master/coro.hpp)

</comment></comment><comment><USER9> Martin Sustrik, the author of libmill was also interviewed in FLOSS Weekly podcast a month ago - [https://twit.tv/shows/floss- weekly/episodes/358](https://twit.tv/shows/floss-weekly/episodes/358)

</comment><comment><USER10> From an earlier discussion [https://news.ycombinator.com/item?id=9947749](https://news.ycombinator.com/item?id=9947749):

> _If I understand correctly, this is a framework for non-preemptive > cooperative multitasking whereby provided API functions serve as yield > points. Pretty much what Windows API was before NT /2000\. Not exactly a co- > routine library, at least not in a conventional definition of co-routines._

> _Yes, that 's exactly what it is. Yes, that's exactly what it is. But it > also matches wikipedia's difinition of coroutine: "Coroutines are computer > program components that generalize subroutines for nonpreemptive > multitasking, by allowing multiple entry points for suspending and resuming > execution at certain locations."_

<comment><USER11> _All_ coroutine libraries are non-preemptive and cooperative. E.g. in Haskell, threads will switch only on GC allocations. In Go, they only switch on I/O (and maybe function returns). In theory, the compiler could automatically add `yield` statements into non-allocating, non-I/O loops. But nevertheless, _all_ user-space threading is cooperative.

<comment><USER12> > But nevertheless, all user-space threading is cooperative.

Not necessarily. You can do user-space pre-emptive threading on any system that support pre-emptive signal handlers and that lets you mess around with the stack, particularly if you can generate signals from timers and/or IO operations (both of which you can with POSIX timers)

<comment><USER11> Then it's not really user-space, is it? You're still paying for a kernel context-switch or two.

<comment><USER13> It is user-space threading if the scheduler is in user-space.

<comment><USER11> I disagree. If it's the kernel who's interupting threads, it's not user-space threading. The scheduler just decides which thread gets run next, but the kernel decides _when_ it gets run.

<comment><USER13> Technically it is not the kernel, it is the hardware clock.

At some point any user space scheduler will switch to the kernel in an event demultiplexing syscall and potentially block there if no user space thread is runnable. By your definition any threading system which doesn't handle all IO purely in user-space can't claim to be user-space threads.

<comment><USER11> But that is when the userspace _must_ (and _wants_ ) to communicate with the kernel. Ultimately, that's the programmer's choice. You could easily write a program in Haskell or Go with two lightweight threads that would keep sending ping/pong messages to each other, and all the waiting (on locks, channels, etc.) and switching would be implemented in userspace.

I don't know enough about userspace/kernelspace communication, maybe I/O (refilling buffers or calling select) and timers are much more lightweight than full thread context switches, but I'm guessing it's still much slower than pure userspace scheduling.

<comment><USER13> How is a clock signal different? It is just another external event userspace wants to be notified about.

Note that on Unix you can use signals to get IO readiness notification and in fact for sometime on Linux (before epoll) realtime signals were the preferred method to do get notification over a large amount of fds.

Anyway, as a general guideline, user/kernel transition is cheaper than a (kernel) thread/thread transition which is in turn cheaper than a process/process transition.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I haven't looked at the source yet so I don't know what the implementation is like, but this makes me wonder if the author has read this article: [http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html](http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html)

Of course, doing it in portable C is going to be much slower than raw stack- switching style.

<comment><USER15> Sure I did. It's a classic.

</comment></comment><comment><USER16> Someone needs to make a tiny C lib that contains just the stack switching stuff (basically whatever is used as a substitute for ucontext), that the various coroutine libs can share. I like all these coroutine libs (libtask, lthread, libmill, etc), but it makes me uneasy to have non-portable assembly code lying about that might go unmaintained.

<comment><USER17> There are oh so many libraries for that:

[https://github.com/baruch/libwire/wiki/Other-coroutine- libra...](https://github.com/baruch/libwire/wiki/Other-coroutine-libraries)

And if you don't like any of those, my next choice would be to use the implementation from Luajit 1.x and 2.x, called Coco but not packaged into a separate library:

[http://coco.luajit.org/portability.html](http://coco.luajit.org/portability.html)

<comment><USER16> Cool! I wasn't aware of those low level libs. Now I should submit a patch to lthread to use fcontext. >:)

</comment></comment></comment><comment><USER18> Is there any big difference from this vs [https://swtch.com/libtask/](https://swtch.com/libtask/) , which is a port of much of the same concept from Plan 9 - which again ties back to Go.

<comment><USER15> It's basically the same thing, but simpler and more familiar (if you dealt with Go, that is) API.

</comment></comment><comment><USER19>
        It can execute up to 20 million coroutines
        and 50 million context switches per second.

Is entirely hardware dependent. Also seems to disregard the fact that certain other things are much easier in go than C.

<comment><USER20> Not sure what your point is. That there's some argument about performance? There is no way that Golang can keep compete with performance of straight C code.

<comment><USER21> 6 year old compiler vs 40 years of research in optimizing compilers.

</comment></comment></comment><comment><USER22> So....what is that `choose` thing? Curious how that's implemented...

<comment><USER15> I wrote a blog post about it: [http://250bpm.com/blog:56](http://250bpm.com/blog:56) Also, a blog post about how coroutine spawning is done: [http://250bpm.com/blog:48](http://250bpm.com/blog:48)

</comment></comment><comment><USER7> author is Martin Sústrik, who is also the creator of ZeroMQ, nanomsg, and ribosome

that's quite a resume

</comment><comment><USER23> Can anyone familiar with this say if it runs one coroutine per thread? How does a coroutine get it's own stack? If coroutines share threads, is it possible to switch in between a coroutine say when it's blocked on IO like it is in go?

I'm not an experienced go developer but my understanding is that it's possible in go to have millions of goroutines each blocked on IO. I don't see how a C function could mimic that. I thought stack moving was an essential requirement of any runtime that wants to mimic go in this way.

I've looked at some of the special macros like coroutine and go and it looks like libmill runs the entire function fn when you call go(fn) so if fn is blocked on IO then your entire thread is blocked on IO and you can soon grind to a halt if you have even a few blocked coroutines.

<comment><USER24> select(), poll(), etc are available in C which enables non-blocking I/O. I dont know how libmill is implemented, but I assume it is using one of those functions for non-blocking I/O.

<comment><USER23> So it looks like there are facilities for doing some IO, listening on a socket, etc. But I don't see any facilities for waiting on locks, semaphores, etc. Maybe they could build that in a future release or maybe they consider it antithetical to the idea of "share via communicating as opposed to communicate via sharing".

<comment><USER25> > But I don't see any facilities for waiting on locks, semaphores, etc

There's a very good reason for this. First of all, you can use file descriptors as locks, semaphores, condition variables, etc using pipe(2) and other functions. On Windows you can use WaitForMultipleObjects, etc on Mutex objects.

But select/epoll/kqueue/WaitForMultipleObjects is a system call that goes in to the kernel. That is very inefficient if you want e.g. mutual exclusion using a mutex. In a modern OS, a mutex (or CriticalSection in Windows) is implemented using a futex ("fast userspace mutex"), which is just a spinlock in userspace that only calls to kernel if the mutex is contended. An uncontended futex can be locked and unlocked in less than 20 nanoseconds. A system call can be 100x slower than that.

Some languages, e.g. Haskell have a green threading system that implements mutexes and i/o in a consistent way with i/o using a userspace scheduler. But this depends on language and runtime implementation.

</comment></comment></comment></comment><comment><USER26> Can it take advantage of GCC's split stack support? [https://gcc.gnu.org/wiki/SplitStacks](https://gcc.gnu.org/wiki/SplitStacks)

</comment><comment><USER27> Wouldn't libdispatch be a much better option if you don't mind Apple's blocks extension to the C language?

<comment><USER23> My understanding is that libdispatch is not a replacement for go's concurrency. With libdispatch each block (closure) that you dispatch runs on a given thread, if that block stalls for any reason then your thread is blocked. So even with a few blocked blocks (heh) your system could be stalled which is not the case with go where you can have millions of goroutines that are blocked.

<comment><USER28> I've built systems with libdispatch and blocks. I found it much nicer than traditional C style non-blocking IO or typical pthreads, both of which I have also done.

• You don't need to use blocks, there are function callback versions of the calls available, but blocks are nicer.

• There are asynchronous IO routines, that covers most of your stalls.

• Go probably stalls threads on page faults, as does libdispatch.

You can read about the Linux port of libdispatch at [https://github.com/nickhutchinson/libdispatch](https://github.com/nickhutchinson/libdispatch)

<comment><USER29> It looks like the Linux port of libdispatch uses OS threads through pthreads, so it's not a candidate for the user space light-weight threads needed for efficient CSP.

<comment><USER28> I'm fairly certain that is just to get the worker pool. The blocks on the queue don't each get a thread.

</comment></comment></comment></comment></comment><comment><USER30> Sadly it doesn't have support for Windows MSVC yet: [https://github.com/sustrik/libmill/issues/16](https://github.com/sustrik/libmill/issues/16)

</comment><comment><USER15> One feature worth pointing out is debugging support: [http://libmill.org/documentation.html#debug](http://libmill.org/documentation.html#debug)

</comment><comment><USER31> Sorry for the ignorance of a newbie, but I couldn't find any info on whether libmill does anything similar to the M:N multiplexing of light-weight threads upon OS threads?

<comment><USER32> M:1.

</comment></comment><comment><USER33> What happens when something blocks for synchronous I/O?

<comment><USER15> A different coroutine gets a go.

<comment><USER33> How do they do that? Their own I/O library with asynchronous everything?

<comment><USER15> Simple stack switching. See here for a toy example: [http://250bpm.com/blog:48](http://250bpm.com/blog:48)

</comment></comment></comment></comment><comment><USER34>
        "finally! it's so ridiculously easy now that everyone will start using it and
        the world will be roses and meatballs from now on!"

said no one ever.

even the plan9 guys who were the first to do it with alef and libthread didn't feel like they'd solved concurrency in C.

</comment><comment><USER35> If you want Go-style concurrency, why not use Go in the first place?

<comment><USER36> I you've written advanced-enough go, you probably have a bunch of file that start with some C code before the Go code starts.

Go simply can't interface everything the way C does. Go doesn't give you the same level of flexibility either.

tldr: Go's great, but it's just not as powerful as C (unlike Rust or some others, which can do anything C does).

<comment><USER35> What specifically are you talking about? Go can do syscalls perfectly fine, you can mess in your memory perfectly fine (even if you have to resort to the unsafe package), so what exactly is it where you think Go lacks flexibility compared to C? Because so far, your posting sounds rather hand-wavy.

<comment><USER37> One problem is that it's very hard to call go libraries from other languages (it requires a runtime). C libraries can be called from almost any language.

There are many go libraries I would love to use, but can't because of this. I expect many others are in a similar boat.</comment></comment></comment></comment>


No Money in Email Clients - <AUTHOR> http://blog.gerv.net/2013/04/no-money-in-email-clients/

<comment><USER2> > "Is it simply that webmail is good enough for most people?"

I'd say there's a healthy chunk of people who find it way better. They see webmail as having better security [1-3], portability [4], usability [5], and even speed [6].

I know a lot of client fans cherish their offline access, power features, and speed [6].

But I don't think it's fair to dismiss either side as "just satisficing," there are legitimate perks to value on both sides of the ledger. These perks may be just balanced enough that it's difficult to add "monetary cost" to one side of the scales without shifting preferences.

[1] [http://www.cvedetails.com/vulnerability- list/vendor_id-26/pr...](http://www.cvedetails.com/vulnerability- list/vendor_id-26/product_id-113/Microsoft-Outlook.html)

[2] [http://www.mozilla.org/security/known- vulnerabilities/thunde...](http://www.mozilla.org/security/known- vulnerabilities/thunderbird.html)

[3] Family tech support in the early 2000s. Viruses hopping into every damn address book. I have not lost the grudge, even though things are probably much better.

[4] You can use webmail on a random library / friend's / work computer without an install (not that you should)

[5] Webmail means never having to say IMAP (or POP)

[6] This last bit may seem like a contradiction, but each group can find speed improvements in different ways. Time into interface? Webmail. Interface responsiveness? Client. The former is a big win once per session, the latter is lots of little wins throughout a session. Faster machines can improve time into interface, webapp responsiveness is harder, but has made some progress (probably as hard to acknowledge as it is for me to see security improvements).

<comment><USER3> I wholeheartedly agree, but I'm still curious how come there are no better Webmail clients. Most are either old-fachioned (like Roundcube) or tied to a proprietary service (like Gmail), but I don't see much effort going into cool, Sparrow-like webmail clients, either open-source or commercial. Or have I missed something?

</comment></comment><comment><USER4> I find this, a couple of weeks after Mailbox gets acquired for (reportedly) ~$100M, a strange thing to say.

As well, just last July, Sparrow was acquired for tens of millions as well.

</comment><comment><USER5> I think that's a large part of the reason so many email clients are poor in rendering support. At least mobile/tablets have come around, but there is a lot of bad stuff going on in webmail (specifically Gmail) and desktop clients.

<http://www.campaignmonitor.com/css/>

<comment><USER6> A lot of people are opposed to HTML, CSS and JS in email messages. We do not want email to become this very complicated thing like the web has become.

<comment><USER5> Admittedly, I do not understand this position. With all due respect, you're not living in reality. The reality is that email already is this "complicated thing like the web". The proliferation of myriad screen sizes from mobile to tablet to desktop, and current industry trends with respect to "responsive design" dictate modern front-end developers to adapt and mimic as close to desktop-level support as possible.

For those that do, in my opinion, this type of mentality can be viewed as short-sighted and non-constructive to the platform as a whole.

<comment><USER6> Your voice is professional and reasonable, but your skill with words cannot conceal the fact that what you are wishing for in this thread is bad for the world because it would tend to make it less secure, less reliable, less predictable and more tedious for people to continue to use email to exchange plain text and simple attachments like images with their friends, employers, customers and suppliers. Things that are easy now (at least for those like myself who send and receive mostly plain text messages) like selecting an extent of text in an email with a pointing device (e.g., to copy it), searching for a string in an email ("find in page") or saving a message to a file or a note-taking application like Evernote will become more difficult and less reliable just like happened on the web over the last 15 years.

<comment><USER5> couple of quick points, but first a joke: Spoken like a true operations guy :p (tongue-in-cheek, rimshot)

1) I wonder if you'd be in the room as Tim Burners-Lee was inventing the IMG element, describing to him the security implications and why it's a nonviable component from a support perspective. I wonder if you would describe his new invention as also "bad for the world" just because it has implications for you job?

2) The technology is already built. Slapping a common modern rendering engine into your email client with your own custom tweaks is just so easy. A quarter of your job is already done.

3) As I said, you're not living in reality. I completely understand your workflow, because it mirrors my own (right down to the Evernote detail).

However, you're just a minor subset in the holistic view of the email ecosystem. There is real pressure from stakeholders and users for great looking email. There are entire industries whose only job is to make email look nice. And yes, even beyond the table of geniuses in the Marketing department, there is actual value in nice-looking email.

I also take it that you've never sat in a meeting with Marketing where they are asking "why can't our email just look like our website??". And then you think about it, and you realize it's an entirely reasonable question.

4) If you're doing it right, you are sending a plain-text version alongside your HTML version. In my view, it's a necessity.

5) Your searching for a string point is moot. It's not a strict text-only search that is impeded by HTML directives, it's exceedingly trivial for rendering engines to figure out how to search for Strings while ignoring intervening markup.

6) Why do you, and so many who think like you, believe that email should always be the bastard step-child of the web? Honest question.

<comment><AUTHOR> > 6) Why do you, and so many who think like you, believe that email should > always be the bastard step-child of the web? Honest question.

Bastard step-child? This suggests an ignorance of history. Email came long before the Web.

<comment><USER5> What is your point, other than pedantic nonsense? Who cares that email came before TBL's WWW. In terms of current support for modern technologies, as proselytized by everyone's favorite web consortium (W3C), email clients' support is abysmal. If you want to pretend that the first agent to a system will always have the best solution, through virtue of chronology, be my guest. It's a silly and losing proposition.</comment></comment></comment></comment></comment></comment></comment>


535 ways to reload the page with JavaScript - <AUTHOR> http://www.phpied.com/files/location-location/location-location.html

<comment><USER2> Yet another demonstration, if you needed it, on why blacklisting user input to avoid code injection is highly unlikely to succeed. There are many ways to skin a cat, and you only need to miss one.

You can also assume that the bad guys start with a list similar to this _and_ tools to semi-randomly perturb their inputs until they find the right combo of hocus-locus to get past your filter and then "neutralized" by your regular expression magic into functioning exploit code.

(n.b. I'm talking about more interesting attacker goals than forcing a reload, obviously.)

<comment><USER3> True as that may be, this doesn't really demonstrate that— it's just 535 different ways to access `location`. A regex would trivially disable every one. Of the things on that list.

<comment><USER4> "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems."

Show me your trivial regex solution to this problem and I'll show you how to break it.

<comment><USER3> I'm not saying there's a trivial regex solution to XSS, I'm saying there's a trivial regex solution to disable every one of these so-called "ways" of reloading the page: s/[\\.\\[=]//g will do the trick.

I mean, s/location//g will do the trick too, but I was aiming a little more generic.

<comment> mike-cardwell eval(unescape("%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%2E%68%72%65%66%3D%27%68%74%74%70%73%3A%2F%2F%67%72%65%70%75%6C%61%72%2E%63%6F%6D%2F%27"))

<comment><USER3> ...and if that were on this list of ways to reload a page in JavaScript that I'm talking about, it would be relevant here.

Look, just _read_ what I'm saying. I swear I know what I'm talking about, and I _swear_ I'm not saying you can reliably sanitize JavaScript with a regex. Really.

This must be like the FizzBuzz thing— programmers just can't resist a challenge, even if it is explicitly marked as not being a challenge.

And thanks for the hscroll :P

<comment> mike-cardwell hscroll? Here on Firefox 5, it wraps nicely...

<comment><USER3> Huh— I'm on Chrome 13. Just one of those things, I guess.

<comment><USER5> /me inspect element -> delete node

/me happy

Odd, that FF wraps... maybe I'll look into it later today, I kinda wonder why.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> I was hoping for a bit more cleverness... that's (at least very nearly) just a combination of:

      location=              | combined with
      location.href=         |
      location.assign()      |   location
      location.replace()     |   location.href
      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>-----
      location.reload()

and things that mean exactly the same thing. As others here have pointed out, why no meta tags? Form submissions? Surely there's another way or two as well. The lack of creativity in this list is rather astonishing - if it were sorted, it'd be merely annoying because of the blatant repetition.

</comment><comment><USER6> I really see only two ways here:

1) one of hundreds of equivalent syntaxes for the AST that assigns to location, and

2) location.reload()

So if we're going to play this game and these count as different, why not encode the identifiers in hex notation? Or replace the identifiers with lambda calls to compute them? Or eval()?

Seems like if these 535 ways count, so should the other infinity of them.

<comment><USER3> That's not completely true— location.replace() and location.assign() do slightly different things. But, yeah, this is basically 535 different ways to _spell_ location = location.

And not even very interesting ones. window.window _is_ window, so you can just go nuts with the chaining. So is window.self, window.top, window.frames... window.self.top.frames.location = frames.top.self.window.location? Now we're talkin'.

<comment><USER7> Yeah, not very exciting. Once you go down that road you pass by window['l' + 'ocation'] on the way to window['loc' + (''+![])[!![]+![]] + (''+!![])[-![]] + 'ion'] and so on. I would have completed it but it's 2:30 and I'm tired.

<comment><USER8> sorry to bother you sir but could you tell me what that is called and maybe where i find out more about it?

<comment><USER8> ok found this good old one <http://news.ycombinator.com/item?id=2129745>

<comment><USER7> l33t searching skills, I couldn't find it. That's where I learned this technique.

</comment></comment></comment></comment></comment></comment><comment><USER9> Interesting to see so many ways to do it, but what's missing is explanations of pros and cons of the different approaches (though I'm sure there probably aren't many differences). Why not just stick with one then?

<comment><USER10> I read it as more poking fun at the combination of redundancy in the DOM API combined with redundancy in Javascript.

</comment></comment><comment><USER11> Is there any way which doesn't break the back navigation button (since upon pressing back the JavaScript statement will execute again, causing an immediate change of location and jumping forward again in the history)?

I thought about checking whether history.forward is empty as a condition for changing the location, but I don't think you're allowed to do that check...

Alternatives such as meta refreshes and non-JavaScript solutions are cool ways to solve this, but for POST calls it remains an issue...

<comment><USER12> For POST you should use POST-redirect-GET pattern with status 303.

You can change URL in JS without creating history entry with location.replace().

</comment></comment><comment><USER13> Several years back I was on a job where the boss wanted to allow virtually any user-provided HTML/CSS/JS in a content area, while preventing redirects.

No implementation ever happened of course, but my first thought was, what would happen if we did a "<script>delete(window.location);</script>" near the top of the template?

Answer: nothing. But what would the implications be if browsers allowed it?

<comment><USER14> Some browsers allow __defineGetter__ and __defineSetter__ to replace native properties such as window.location

<comment><USER13> Interesting. I did a few tests and it seems Chrome will let me override window.location with __defineSetter__() but not document.location, while Safari was the other way around. Firefox 3.x won't let me redefine either one ("TypeError: redeclaration of var location").

</comment></comment></comment><comment><USER15> Given that "window" is the top level object in JavaScript:

location === window.location === self.location

and that objects are also associative arrays:

oneObject.aMethod === oneObject['aMethod'] === oneObject['aMet' + 'hod']

you can write infinite variant of the same function call.

</comment><comment><USER16> There's a whole lot more of these actually. Here are a couple off the top of my head:

      - Meta refresh tags could be one.

      - Creating a form on-the-fly and submitting it via Javascript.

</comment><comment><USER17> Could any js ninjas briefly explain what's the actual secret/js philosophy behind all these methods?

<comment><USER18> File under: Unintended Consequences. Also, Postel's law could probably be tricked into admitting itself as an accomplice.

1\. Browser based Javascript provides a location object for managing and accessing the current browser location, and this location object is available as a global variable.

2\. Browser based Javascript also provides a special case in the interpreter/processer/etc., where setting the location object equal to itself will reload the current page. This is also true for certain properties of the location object (href)

3a. There is also a more conventional reload method on the location object which accepts either a location object or string href. Also, many of the "go to this URL methods" exposed to Javascript will interpret "go to the url I'm at" as a request to reload the page. Many of these methods will accepts a location object, or a string representation of a URL as a paramater.

3b. location.href is a string representation of a URL

3\. There are many ways to access global variables in Javascript. There are many ways to assign a value in javascript. There are many ways to call a method in javascript.

4\. All of the above can be combined into lots (likely more than the 535) of ways to achieve the same thing.

</comment></comment><comment><USER19> I can hear it now... "but how do I do it in jQuery?!"

</comment><comment><USER20> From <http://ycombinator.com/newsguidelines.html>:

If the original title begins with a number or number + gratuitous adjective, we'd appreciate it if you'd crop it. E.g. translate "10 Ways To Do X" to "How To Do X," and "14 Amazing Ys" to "Ys." Exception: when the number is meaningful, e.g. "The 5 Platonic Solids."

<comment><USER21> I think in this case the number is meaningful, because the point of the list isn't to show us X amount of ways to actually refresh a page with javascript, but rather to highlight the (slightly humorous) vast number of ways it can be done, due to the ambiguity and redundancy found in Javascript (and in the DOM).

I would have guessed that this number would be high, but definitely not in the 500's.

<comment><USER3> `window.window === window`, so that number is actually in the infinities.</comment></comment></comment>


Samsung sends Facebook fan a one-of-a-kind Galaxy S III with epic dragon - <AUTHOR> http://www.techvibes.com/blog/samsung-sends-loyal-canadian-fan-a-customized-galaxy-s-iii-with-epic-dragon-2012-08-28

<comment><USER2> I want a Samsung Galaxy S III with the unicycle kangaroo.

</comment><comment><USER3> That's some awesome PR there.</comment>


A Chatbot Helped a Vinyl Records Startup Make $1M in 8 Months - <AUTHOR> http://www.adweek.com/news/technology/how-chatbot-helped-vinyl-records-startup-make-1-million-8-months-170900 <comment><USER2> This is what they're calling a chatbat these days? It's just a text interface responding to keywords, with a fall-through to a human rep. I was expecting at least some sort of lightweight AI. Okay, so there's a recommendation engine behind it, but I wouldn't really consider that part of the "chatbot", it could just as easily be hosted on the web.

<comment><USER3> There are many kinds of chatbots, one distinction between them being if they are generative (A.I.) or template-based. Another distinction is if they are narrowly limited into a domain (like the one selling music in this article) or general (like Microsoft's Tay).

The current situation is that it's hard to make generative chatbots create long replies that are also coherent. These A.I. based bots are only good for simple discussions, yet.

</comment></comment><comment><USER4> Bot / human hybrids are so obviously the future, not bots only, as the experience they provide is shit except for specific things which are easier done with menus.

<comment><USER5> They are best for interactions with a time component. A UI doesn't work for things that should happen in the future because you won't be in the app in the future. A chatbot can just chat you. Notifications require an app install and add a lot of engineering complexity.

<comment><USER4> Reducing the complexity of app notifications is worth forcing your users to interact with you like a bash terminal? There is a reason we have modern UI widgets, windows, buttons, etc.

<comment><USER5> There is no generic answer to your question. That's no how design works. Sometimes the tradeoff is worth it sometimes it's not. It depends on your goal. In an app that is 100% notifications I could imagine it being a quite good tradeoff.

</comment></comment></comment></comment><comment><USER6> Super interesting idea, I'd even try it if I was currently purchasing records. Had to slow down on that habit.

I wonder if they are just using Amazon referrals and what not. It would be super cool if they could actually sell things from say, Discogs.</comment>


Where are you on the sales matrix? - <AUTHOR> http://dangoldin.com/2013/06/21/where-are-you-on-the-sales-matrix/

<comment><USER2> Well startup and active sales is a tough one...</comment>


Foiling Electronic Snoops in Email - <AUTHOR> http://www.nytimes.com/2015/11/19/technology/personaltech/foiling-electronic-snoops-in-email.html?ref=technology&_r=0 <comment><USER2> More discussion: [https://news.ycombinator.com/item?id=10593112](https://news.ycombinator.com/item?id=10593112)

Other submissions - commentless:

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

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

</comment><comment><USER3> As the article mentions, images aren't the only problem here. I haven't allowed images in email for ages, but I'm still pretty concerned about tracking through other means.

In pretty much every automatically generated email I receive, links direct me through some sort of click-tracking system. There is rarely a direct link to a website, and an adblocker is of limited use since much of the information is sent via the link URL.

</comment><comment><USER4> First thing I do when configuring a mail client. Enforce plain text only.

</comment><comment><USER5> Thunderbird has remote images disabled by default.

<comment><USER6> Yes, this is why proper clients disable remote content by default. This technique has been used by spammers for ages. Surprisingly, the iOS Mail app fetches remote content by default - I had to turn that off.</comment></comment>


Ask HN: How to Get Better at Writing? - <AUTHOR> <comment><USER2> The best pieces of advice I got about this were (I think these apply equally well to technical and nontechnical writing):

1) Write a lot. At first, write without any intention of showing it to others, and without any judgement about how good or bad it is. Just write.

2) Sit down and analyze examples of good writing and what techniques/habits they employ.

3) At first, emulate the style of authors you admire. Your own style will emerge later.

4) Recognize that most of what results in a piece of good writing is good editing.

<comment><USER3> _1) Write a lot. At first, write without any intention of showing it to others, and without any judgement about how good or bad it is. Just write._

In _On Writing_ Stephen King talks about a mindset of "Write once with the door closed, and then again with the door open". I interpret this to mean what you say. Write for yourself first, _then_ revise / edit / rewrite with the intention to share with others.

 _4) Recognize that most of what results in a piece of good writing is good editing._

Two of my favorite writers, Stephen King and Dean Koontz, have both made very similar points at times. Koontz famously said he writes his books one page at a time. That is, he writes about a page worth of material, then revises / edits until he believes that page is good, and only then does he move on. King also emphasizes that you don't start out writing prose that reads like the (published) prose of your favorite authors.

So yeah... just write, and then revise ruthlessly.

</comment></comment><comment><USER3> It was in the context of writing fiction, but Stephen King (who knows a thing or two about writing) said - in his book _On Writing_ \- something like "the best way to get good at writing is to read a lot and write a lot."

I'd actually recommend reading that book, even if your interest isn't fiction (and definitely if it is). There's some good stuff in there.

</comment><comment><USER4> Read a lot... and specifically people that are good at writing.

</comment><comment><USER5> Read all types of books, not just what you gravitate towards. Study the language. Understand your audience. Learn new words every day.

</comment><comment><USER6> Maybe use grammarly to find any common mistakes you make?</comment>


Argentina's coin crisis - <AUTHOR> http://www.slate.com/id/2205635/

<comment><USER2> I've been in Buenos Aires for about 2 months now, and it's still hard for me to believe how ridiculous this situation is. Two examples from my daily life:

1) I take the bus every day, which only accepts coins. So, everyday I have to figure out how to get more coins. One strategy I tried was to forgo the convenient subway card and actually stand on line to pay for a single fare card every time I happened to take the subway. A huge pain, but in exchange for a 2 peso bill, I would get a subway ticket and a precious $1.10 in coins.

Only the ticket clerk at the subway stop I most often frequent stopped selling me single tickets. I would show my 2 peso bill and ask for 1 ticket, and he would say "No monedas" and wave me through the gate for free. Every day, the same thing would happen. Same clerk. Same 2 peso bill. No coins, and he would wave me through for free. This went on for 2 weeks.

You would think that I'd be pretty happy about this, but actually, it infuriated me. I really want the coins instead! Sure, I get a free ride, but now I've got to go buy a bottle of water and tangle with a kiosk owner to try and get change.

2) Paying cash at the supermarket can be glacial. They keep very few coins in the cash registers, so every time they run out of coins, the checkout clerk has to call for a manager, who has to go to the safe to get more coins, who then exchanges 2 pesos worth of coins for a 2 peso bill. Yes, that's right...they restock the coins in the register the equivalent of 60 US cents at a time!

<comment><USER3> What's really interesting about these coin shortages is that they are exactly what we should expect as governments have created monopolies over the manufacture of coinage. Central planning always leads to the systematic misallocation of resources, causing these nasty supply surprises which the government then proceeds to blame on other actors.

An unappreciated miracle of our world is how rare shortages are among truly free-market goods.

For a deeper background, read:

 _Get Government Out of Coin Manufacture_

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

 _Private Coinage_

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

<comment><USER4> Here's a book I tried to read once: _The Big Problem of Small Change_.

From <http://press.princeton.edu/titles/7306.html> :

 _"The Big Problem of Small Change" offers the first credible and analytically sound explanation of how a problem that dogged monetary authorities for hundreds of years was finally solved. Two leading economists, Thomas Sargent and François Velde, examine the evolution of Western European economies through the lens of one of the classic problems of monetary history--the recurring scarcity and depreciation of small change. Through penetrating and clearly worded analysis, they tell the story of how monetary technologies, doctrines, and practices evolved from 1300 to 1850; of how the "standard formula" was devised to address an age-old dilemma without causing inflation._

 _One big problem had long plagued commodity money (that is, money literally worth its weight in gold): governments were hard-pressed to provide a steady supply of small change because of its high costs of production. The ensuing shortages hampered trade and, paradoxically, resulted in inflation and depreciation of small change. After centuries of technological progress that limited counterfeiting, in the nineteenth century governments replaced the small change in use until then with fiat money (money not literally equal to the value claimed for it)--ensuring a secure flow of small change. But this was not all. By solving this problem, suggest Sargent and Velde, modern European states laid the intellectual and practical basis for the diverse forms of money that make the world go round today._

Alas, I couldn't follow their math. (Maybe I should try again, taking more time.) But their historical examples were quite extensive.

<comment><USER5> Voted up for coining the phrase "a book I tried to read once" ;-)

</comment></comment></comment></comment><comment><USER6> I don't understand why the government can't mint more coins and exchange them with the banks for notes.

<comment><USER7> It costs a lot of money to make coins. With inflation appearing to always be just around the corner, the government if afraid of investing tons of money to mint coins that could some become worth significantly less than the metal they're made of.

<comment><USER8> That is true. May be the govt should print notes for minor denominations too. They are the government they can legally launch a new currency note, can't they ?

The govt seems to be losing a lot more money with the shortage, like people forced to give free rides on subway.

<comment><USER9> Bills cost more than coins because they don't last as long.

<comment><USER10> Argentina's peso has been around for only 20 years. Before that, no currency lasted more than 30 years in most of the last century.

</comment></comment></comment></comment></comment><comment><USER11> This feels like something out of the onion.

<comment><USER10> It's for real. I'm Argentinian and watching the onion is pretty much the same as watching a news channel. I opt to laugh, but I should be crying. No country is as little serious as Argentina... to name a few examples:

-VAT it's at 21% -The government lies about the inflation index (they say it's 8%, the real number is 25%)... a total theft. -Farmers have to pay a 30% tax on net incomes... and after that, a 35% tax on profit... -The president is a woman (joking)

<comment><USER12> You could argue that the president never left office in 07...

</comment></comment></comment><comment><USER13> This makes no sense to me. Why would people value a coin above face value, no matter how few there are? Isn't there significant arbitrage opportunity there then?

<comment><USER14> How significant would said arbitrage be, though? In terms of percentages of individual purchases, sure, but if there's a way to scale it up it isn't obvious to me.

In Mexico, the same problem exists, although by the sound of things it isn't nearly as acute as in Argentina. In general, established and professionally run businesses have change; small and informal ones do not. (I think this stems from security concerns: large and well-run businesses have private security and insurance; small ones do not.)

After a while you learn the strategy of making certain purchases at certain places and where those places are. (This can sometimes leave you in a minor bind when you're outside your regular stomping grounds.) You learn the optimal amounts of money to withdraw from different banks' ATMs.

So, having small change buys you not just goods and services — all money does that. It also buys you a bit of time and saves you from aggravation. It really sucks to wait 5 minutes to get change back from a small purchase, as the cashier leaves the store to ask all the neighboring stores if they have change.

Finally, the same phenomenon exists in stable and well-developed countries too, albeit writ small: just ask someone who lives in a small apartment without a washing machine whether he tends to hoard quarters.

<comment><USER15> In Italy, it's pretty common, even at a busy line in a busy supermarket downtown in a big, busy city, for the cashier to stop and ask if you have exact change, or something close. And then wait while you fish around in your wallet and count it out. Not nearly so bad as what's described in the article, but annoying just the same.

</comment></comment></comment><comment><USER16> Hmm, seems like a 1 peso bill would solve the problem more or less.

<comment><USER17> The 2 peso bills are so worn out you can barely recognize them.

</comment></comment><comment><USER18> So someone explain Canada to me, where they got rid of $1 and $2 bills, and visitors regularly complain about how they end up with pockets full of those coins.

<comment><USER17> Same in Britain. And everybody gives you funny looks when you pay with a fistful of coins. Sigh.</comment></comment>


The Sold Human Beings Here: About the 1619 Project - <AUTHOR> https://www.nytimes.com/interactive/2020/02/12/magazine/1619-project-slave-auction-sites.html <comment><USER2> Everyone knows slavery is a bad thing. If we keep dwelling on the past, we won't be able to heal and have a better future.</comment>


Police Killing Fewer People in Big Cities, but More in Suburban and Rural US - <AUTHOR> https://fivethirtyeight.com/features/police-are-killing-fewer-people-in-big-cities-but-more-in-suburban-and-rural-america/ <comment><USER2> I'm disappointed they didn't talk about how they defined the demarcation between suburbs and urban areas or normalize it based on population.

</comment><comment><USER3> Probably because there are less people, and therefor less recording phones in those places</comment>


Inappropriate Use of Adobe Code Signing Certificate - <AUTHOR> http://blogs.adobe.com/asset/2012/09/inappropriate-use-of-adobe-code-signing-certificate.html

<comment><USER2> I was impressed by the detail and level of disclosure in this post. Very little PR speak, very little vagueness and handwaving - Adobe acknowledged the severity and demonstrated how important they viewed their response.

I have to give a nod of admiration for the professionalism of their handling of such a situation.

<comment><USER3> My favorite part is that they shut off their code signing infrastructure "within minutes". Good job Adobe! They are also saying that the root cause was essentially "somebody didn't follow procedures for setting up secure build servers, and we didn't catch it." Such a typical security threat: humans doing the wrong stuff.

<comment><USER4> Get rid of humans: problem solved.

At least that's what the singularity will think.

</comment></comment></comment><comment><USER5> I wonder how many sub $100million non-security-focussed companies

      A) Properly use an HSM at the root of their PKI.  (Following
         all the procedures for sharding their XofY control of the device)

      B) Have " corporate standards for a build server"

      C) Routinely audit their build servers to ensure they adhere
         to those corporate standards.

At least the HSM limited the damage to the compromised servers and, of course, all the code that got signed in the interim.

<comment><USER6> Most small companies cannot afford to invest the time into this kind of thing (obviously).

<comment><USER7> B and C could be something as similar as having a VM with a standard set of build tools and checking nothing else has been added, which should be in reach of even small companies.

<comment><USER8> Perhaps storing a hash of the VM's hard disk?

</comment></comment></comment></comment><comment><USER9> Having just looked at adobe 'cracks' recently for CS5 and CS6 I wonder why these entries (destined for the HOSTS file) 127.0.0.1 crl.verisign.net 127.0.0.1 tss-geotrust-crl.thawte.com Are there... The cracks work by replacing a DLL but also by blocking connections to all the servers it thinks are activation servers (key validation) I tested removing these CRL entries and the software had no issues. Just speculating wildly but maybe this was a planned attack a long time coming (given that these entries have existed since CS5)

<comment><USER10> I don't follow, how is a crack for adobe software related to breaking into an adobe build server?</comment></comment>


Hipster whines at MIT Technology Review and inadvertently proves article correct - <AUTHOR> https://www.theregister.co.uk/2019/03/06/hipsters_all_look_the_same_fact/ <comment><AUTHOR> The MIT Technology Review article referenced is "The hipster effect: Why anti- conformists always end up looking the same"

[https://www.technologyreview.com/s/613034/the-hipster- effect...](https://www.technologyreview.com/s/613034/the-hipster-effect-why- anti-conformists-always-end-up-looking-the-same/)</comment>


Is the U.S. Startup Economy Failing? - <AUTHOR> http://www.cringely.com/2012/09/20/is-the-u-s-startup-economy-failing/ <comment><USER2> I think the key point and problem of the article is that this definition of "startup" includes all new businesses -- not just tech-oriented ones. Without knowing the breakdown of what kinds of businesses are being created, it's pretty hard to reason accurately about causes.</comment>


Training a single AI model can emit as much carbon as 5 cars in their lifetimes - <AUTHOR> https://www.technologyreview.com/s/613630/training-a-single-ai-model-can-emit-as-much-carbon-as-five-cars-in-their-lifetimes/ <comment><USER2> Paper direct link from the article: [https://drive.google.com/file/d/1v3TxkqPuzvRfiV_RVyRTTFbHl1p...](https://drive.google.com/file/d/1v3TxkqPuzvRfiV_RVyRTTFbHl1pZq7Ab/view)</comment>


Tim Cook and Jeff Bezos Embrace the Rule of Awkward Silence - <AUTHOR> https://www.inc.com/justin-bariso/intelligent-minds-like-tim-cook-jeff-bezos-embrace-rule-of-awkward-silence-you-should-too.html <comment><USER2> Something tells me that being the head of a massive company gives you some latitude in being able to sit there in silence while people wait for you to talk. If Tim Cook asked you a question and you sat there thinking about it for 30 seconds, that would be interesting to watch what happens..

<comment><USER3> Yeah. It's probably one of those learned power moves. In other words this is a signal to others they have "the power" to do that. Same as people who have the "power" to show up late and disheveled and still be taken seriously. Most everyone accepts that idiosyncratic tick. I think this is not much different.

<comment><USER4> I'm not going to say what this article describes is a power move, but sitting in silence when someone _should_ be talking can absolutely be a power move.

A few job changes ago I read (patio11 I think) that after both sides present opposing salary figures that the hiring manager will often sit in silence and the candidate, being nervous and less experienced, will feel the awkward silence and have a strong urge to say something. Usually they give in to a lower figure.

I tried it the other way. When the hiring manager said "I don't think we can do $X" I just sat there and didn't say anything. After a while he said "let me look at some things" and after poking around on his computer he agreed to the salary I asked for. I'm not great at this. Interestingly I found that to me it was actually easier to not say anything than to repeat my desire for a larger salary.

<comment><USER3> To me, unless you preface the pause with, let me think for a moment, give me a minute, hang on a second, etc., it's a dick move to show power.

<comment><USER5> It's also a dick move to try and hire someone at a lower rate due to failure to negotiate

</comment></comment></comment></comment></comment><comment><USER6> It's only awkward if you are shallow. Jobs did this a lot in interviews before giving very thoughtful answers. Many people feel the need to start talking immediately because they think they will look dumb otherwise. In reality, the first think that comes to mind is almost always wrong or a faux pax and you'd be better off not having said it. Take the time to think of the right answer and if you can't then say so. Nothing is more frustrating than someone who doesn't know the answer to a question and tries to hide this by answering questions that weren't asked.

</comment><comment><USER7> "We live in a world that demands instant gratification."

Do we? Or might that demand just be a voice in your head?</comment>


Microsoft's Very Good Day - <AUTHOR> http://www.newyorker.com/business/currency/microsofts-very-good-day <comment><USER2> I struggle with changing my perception of Microsoft. I still characterize them by their Halloween documents and efforts to destroy Netscape.

I would recommend the Surface to friends or family, which is a recent change. But _I_ would never use Microsoft products. And not just because I'd be giving up years of Linux folk-knowledge. Childishly, when I watch a youtube video of someone far more skilled than me programming in Windows, I recoil a little.

I strive to avoid bias; I don't want the change in perception to happen merely after people like me die. My bias is fallacious, but it holds like any other deeply-felt bias.

Hell, I only recently stopped calling them _M$_.

<comment><USER3> I'm an MSDN subscriber, write C# all day and am sitting in front of Win8.1, writing this in IE11 with a Lumia 640 next to me.

They are still utter bastards and I sleep with one eye open.

Currently the tally of bad stuff is pretty high: Patent wars against competitors, forced bundling agreements, lock in despite the open specification stuff which is mostly just wrong, being fucked over on audits and licensing agreement shuffling repeatedly, collaboration with NSA/PRISM, disregard for privacy, plain arrogance since Windows 8 the repeated termination of developer stacks (silverlight, WF3, AppFabric etc) that people built their entire products on.

The marketing tactic of talking constantly about everything shiny drowns out these things going on behind the scenes. The press doesn't help this.

If there's any advice I can part on people is not to get all mushy and happy about it and always keep that eye open.

<comment><USER4> Personally, I'll never forgive them for their practices. They deliberately stifled competition, shafted developers, abused their position, and rubbed it in our faces.

There's no coming back from that, and I'll gladly educate newcomers to IT on their ways.

Let them die. The new CEO could be the second coming, you can't fix that cancerous attitude that is entrenched.

They deserve to become obsolete, at the very least.

<comment><USER5> Sadly, if you use such rules there are not many big tech companies left that haven't done such things...

<comment><USER6> False equivalence fallacy.

You can wish Microsoft would die, and still use an iPhone.

In fact, much of Apple's success can be attributed to Microsoft fumbling the mobile revolution. In other words, people who use Apple may be doing so directly because of how much worse Microsoft was -- due to Microsoft spending their limited resources on zero-sum tactics like shafting their developer ecosystem.

Compete or die. (Microsoft seems to act like they have a third alternative, monopolize. They're still immensely profitable so it's understandable that their shareholders are comfortable with their current course.)

<comment><USER7> sure, it just makes you an hypocrit.

<comment><USER6> I personally don't use any iThings. y4mi, do you have concrete examples of what Microsoft has done that has significantly improved end users' ability to run Free Software?

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Microsoft feels like the new Apple to me.

I haven't used Apple's product in Jobs' era, but I've heard a lot of good stories about how solid and easy-to-use their software was. Now I'm on Yosemite, experiencing annoying bugs and unexpected quits/freezes on a daily basis. I don't even dare to update to El Capitan. Yesterday I upgraded to XCode 7.0.1, and all my swift projects failed to compile. If it's not for the touchpad and screen I'd rather go back to my Arch Linux laptop.

Apple isn't bringing any more surprise or delight to me hardware-wise. And their software quality is declining day-by-day. Development wise, just take a look at XCode's newest reviews to learn how bad the dev experience is. Developers are what makes a platform succeed, and Apple doesn't seem to realize that.

However, MS has been amazing since Nadella. My favorite news is open sourcing .NET and making it available for Linux. VSCode is also solid and even feels more polished than Atom to me. Hololens looks cool. Surface definitely lives up to its hype.

Last week I interviewed with MS. At the end I asked about the interviewer's opinion on MS's change and attitude to Open Source, and in his response he had this line: "Because Open Source is the future". I can hardly imagine a MS staff in pre-Nadella era would have such opinions. MS has changed. I think people should put down their prejudice about MS's past and admit that. Going to Redmond next Wed for an onsite. Wish myself good luck.

<comment><USER9> _I think people should put down their prejudice about MS 's past_

There are some things that people find to be unforgivable. Not sure if anything MS has done qualifies for that for me, but in the area of gun control/the RKBA, which I've been fighting since the early '70s, there are companies like Ruger and Smith and Wesson which I absolutely refuse to do any business with after they betrayed US gun owners.

Sounds like your problem is that OS X has become Apple's red headed stepchild, iOS isn't reported to be having problems of this magnitude last time I checked. Too bad OS X is Apple's development platform of choice (only possible one???) for iOS....

<comment><USER10> In my eyes the only thing microsoft is uniquely guilty of is being the first dominant software company in a digital age.

Both apple and google have had their turn at the same position and done most if not all of the same dubious actions to end-users and developers as microsoft.

I respect a distrust for microsoft but I dont consider it rational to hate one of these big players more than another.

</comment></comment></comment><comment><USER11> There's been lots of positive announcements from Microsoft recently, but I think I'll save the applause for when they can do those cool things and actually make money from it, not from extorting cash for patents, office document lock-in, and all their other "bad microsoft" stuff.

<comment><USER12> _extorting cash for patents_

Standard practice among all the big players

 _office document lock-in_

Standard practice among the players lucky enough to be able to do it (we now call it 'walled garden')

... My thesis is that all big tech firms now act as MS once did (or would if they could). But we're just used to it now.

<comment><USER13> On first read, I was going to ask to get a link to that thesis, thinking it was some Masters or PhD work. Every 10 years you're going to have the 'big- evil'. I'm with you 100% about it being standard practices in big companies, and 110% about users being complacent about accepting the walled garden.

Also re: patents- IBM has a huge patent portfolio. Very little of it is used to patent troll. Those boxed-office Texas shell LLP law-firms setup are nothing like what IBM is doing today (second only behind Red Hat in terms of core Linux kernel commits, IIRC[caveat: source was from a talk I attended in 2013 by one of the 3 upstream-controllers, including Linus]). "Evil 80s IBM" is now actually too stagnant to really exploit the consumer and barely breathing off of old banks and gov't systems that run System/36,360,38,390 on z/OS.

"Evil 90s MS" is now opening up basically everything for the consumer, minus the cash-cows (enterprises). MS Research funds tons of Haskell research, language development that gradually goes from PhD/post-doc work -> "obscure" languages like Haskell/F# -> C# (LINQ is effectively a monad). Python 3.5's new async/await is largely influenced by work Microsoft did (both in semantics and syntax). The CoreCLR is on Github. Inspect, modify, alter, run your F# code on a RS/6000 or 8 dollar ARM if you want to. Visual Studio Community Edition is free, a la the IntelliJ model. I argue they're now a net positive on the community. Just like IBM, they've realized the enterprise is where their money is, so charge for SQL Server licenses (which are really reasonably priced compared to Oracle), Sharepoint, Server, and Dynamics/Biztalk type stuff.

In the 80s it was IBM. In the 90s it was MS. Today, Apple performing so much walled-gardened anti-competitive practices (I can't install my legally purchased copy of OS X on my Intel machine? Really?) that it makes the MS DOJ trial look completely insignificant.

<comment><USER14> > (I can't install my legally purchased copy of OS X on my Intel machine? > Really?)

I thought the only way to legally purchase OS X was to buy it preinstalled on a mac.

<comment><USER15> It's for sale directly from Apple - [http://www.apple.com/au/shop/product/MC573Z/A/mac- os-x-106-s...](http://www.apple.com/au/shop/product/MC573Z/A/mac- os-x-106-snow-leopard)

<comment><USER16> That's a quite old version of OSX (2009), and is meant for people needing to upgrade from OSX 10.5, as v10.5 wasn't upgradable over a network connection.

</comment></comment></comment></comment></comment></comment><comment><USER17> Clickbate marketing article name with little valuable substance. I tried Windows 10 in tablet mode and I found the whole experience to be disjointed. It felt out of touch with recent UX trends / advancements, the same old thing with a new skin and even more tiles. Everything I wanted to do took more 'clicks' that I was happy with and there's little-to-no consideration to power users. Am I the only one that doesn't see any signs of real innovation here?

<comment><USER18> They are marketing really hard where the tech nerds and devs are, astroturfing comment sections and sponsored articles everywhere.

Things like Microsoft is changing and giving fuzzy feelings (really?), but the general audience is harder to get. I've seen huge billboards with surface 3 ads, special sections in stores, but I've never seen one in the wild.

<comment><USER19> I work for a medium sized tech company and the surfaces are absolutely ubiquitous, 1:1 with Mac books easily. People who have them absolutely adore them. I'm considering getting a surface book when the lease on my rmbpro is up.

</comment></comment></comment><comment><USER20> _Godwin 's Law warning_

I find more ridiculous the statement "we will never forgive Microsoft" than saying "we will never forgive Germany".

They're a company, not a charity, they're in the business of making money, and if making money implies using "dirty tactics" such as saying phone manufacturers "bundle Office in your phones or we will use our patents against you" it will certainly happen regardless of which company we're talking about.

Also, you should not be angered at Microsoft for collaborating with the NSA, but be angered at America for forcing companies to collaborate with the NSA. If you were in the position of Microsoft would you reject and risk loosing your company? Don't be ridiculous! If Apple is playing to be the victim right now, is because it's more profitable for them after the public outrage that followed Snowden's revelations.

There is a real world outside the Free Software bubble, a real world where companies struggle to survive and any means to survive, even at the expense of the competition, will certainly happen.

<comment><USER21> People like to anthropomorphize companies as having a conscience, but you're right: they're just autonomous control structures with the goal of making as much money as possible. Sometimes their leaders will make bad decisions prioritizing money now over money later, but ultimately such decisions are often just as bad for the long-term health of the company as they are for the market (even though they may provide a short-term benefit).

And for everyone who says Microsoft should have told the NSA to shove it, just consider how quickly a major CEO can be taken down by the government: Jeff Smisek, widely considered one of the two most powerful men in the airline industry, was forced out of his position as CEO of United Airlines as part of a government corruption scandal with no more fanfare than a tersely worded press release. He has yet to be charged with anything, but criminal charges are inevitably coming. Any company that does business with the US government (as Microsoft does) is likely participating in some form of corruption or another. All they have to do is investigate that corruption and long jail sentences for senior executives will follow. It's essentially the NSA's version of "plata o plombo".

<comment><USER9> You're forgetting the _direct_ example: [https://en.wikipedia.org/wiki/Joseph_Nacchio](https://en.wikipedia.org/wiki/Joseph_Nacchio)

 _He was convicted of 19 counts of insider trading in Qwest stock on April 19, 2007 – charges he and many others claim are U.S. government retaliation for his refusal to give customer data to the National Security Agency in February, 2001._

Given the iffiness of such charges when it's your own company's stock, we have to at least entertain the proposition that refusing to work with the NSA is a ticket to Federal prison. Qwest is said to have been the only big company that refused.

<comment><USER21> Yeah; I remember that one too. The Smisek one was just more recent, and Smisek was also a much more visible CEO than Nacchio given United's place in the airline industry. From what I can tell, the Smisek issue may have genuinely involved some wrongdoing, but Smisek may only be involved because the ultimate target is Chris Christie. But he was a titan of his industry, and when he left there was no retirement party or farewell video: just a new guy sitting in his chair and a short press release explaining that a change had been made. Nobody is immune.

But yeah, that's the jist of it. Refusing to comply with an NSA order will likely just end you up in jail on something else because the government has the power to lock you up. So we can't hold the companies who complied with them entirely responsible, as those companies are made up of individuals who have families to think of.

<comment><USER9> _Refusing to comply with an NSA order will likely just end you up in jail on something else because the government has the power to lock you up._

That's the thesis of _Three Felonies A Day: How the Feds Target the Innocent_ ([http://www.amazon.com/Three-Felonies-Day-Target- Innocent/dp/...](http://www.amazon.com/Three-Felonies-Day-Target- Innocent/dp/1594035229)), that:

 _The average professional in this country wakes up in the morning, goes to work, comes home, eats dinner, and then goes to sleep, unaware that he or she has likely committed several federal crimes that day. Why? The answer lies in the very nature of modern federal criminal laws, which have exploded in number but also become impossibly broad and vague...._

He'll have a lot more examples, I'm sure.

 _So we can 't hold the companies who complied with them entirely responsible, as those companies are made up of individuals who have families to think of._

Especially since the Feds have no compunctions against going after your family if they can't pin something on you. E.g. junk bond figure Michael Millikan, who's real crime was creating a market for poorly managed companies.

</comment></comment></comment></comment></comment><comment><USER22> It's funny how people will believe that one person, Satya Nadella, can have such a profound impact on a company of hundreds of thousands of people. It's all about crafting a story and offering people an explanation for why the company is changing.

I wish there was some type of bayesian submarine-ometer[1] that took the baseline percentage chance of any "article" being dressed-up PR on a particular website and performed some type of analysis on the company's marketing spend, brand perception, buzzwords, the interests of the article's author, and the article's similarity to other positive articles on the company/product.

[1] [http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)

</comment><comment><USER23> I could not help myself, I had to get a surface book, it may end up in the pile of things with great potential but I had to give it a shot. Two devices were in the running for my 2015 tablet HW refresh, the Lenovo Yoga 3 and the iPad Pro. This sort of came out of left field.

It has a lot to live up to, I use my iPad every day and for a variety of things, but something I always wanted to do on my iPad, sketch, wasn't very satisfactory. And while I liked the Surface Pro 3's pen experience, its battery life was a challenge and some key Apps weren't there.

So long battery life, a better drawing experience, and a useful typing experience, and, for bonus, I can stop carrying around a laptop as well? Well if this thing can pull that off its a win for me, and I'll just put vmware workstation on it and run Linux when I'm doing my embedded work.

But the other thing it has done is really highlight the impact of market windows. Had the iPad Pro come out last year, or even in Q1 of this year, I would be using it already and probably not be buying the Surface Book.

For historical reasons the first thing I bought to try to do what I wanted was the "Touchbook" from Always Innovating. Detachable keyboard, touch screen. But not enough battery life, and the screen's resistive touch screen was not very useful. I also have the Illiad 2 from iREX which an an epaper display with a watcom stylus, loved the pen, and the readability of epaper, but very little app support and challenging storage options. For a while I've lived with both a laptop and the iPad. I'm really curious if this new box can meet my expectations.

<comment><USER24> I for one am curious how much battery life you can really pull out of it. When I see 12 hours on the spec I usually don't get more than 7-8 and that's right there in the 'not enough for a day' zone for me.

<comment><USER23> Agreed, if it is less than 9 in the "real world" I'll be pretty disappointed. The thing that makes iPads work for me is that they save a _lot_ of power when they are asleep, and they come back instantly when they are woken up (very phone like in that regard). If Microsoft has given W10 that ability on their Surface hardware it could do the trick for me. (the only time I go 8 - 9 hours straight on battery is when I'm travelling)

</comment></comment></comment><comment><USER25> Their partnership with Google over Typescript and the general openness that they are pushing is fantastic. I really feel they are giving a lot to the developer community.

The Surface Book is an exceptional piece of kit. It is telling that the top end book (16GB/512SSD) was the only one at one point to be sold-out on pre- order. None of the other options include 16GB of ram and I think this is a shame, but you cannot fault what they have done here.

Kudos. Microsoft now gives me a warm fuzzy feeling inside.

<comment><USER26> I'm waiting for them to join Vulkan working group.

</comment></comment><comment><USER27> It's amazing to think that such a massive behemoth could change direction in so little time.

<comment><USER28> Not really. Microsoft has always had two sides, two forces constantly warring with each other internally. Microsoft is and always has been chock full of serious, 100% authentic "hackers". And those have driven the company as much as high level business decisions over the years. Microsoft has long been a proponent for things like open platforms (such as the original PC design) and has long tried to be a good citizen within the computing industry. There was a period of time when those voices were muted compared to the voices of hard- nosed business types but you can see those forces re-asserting themselves in the current iteration of microsoft.

<comment><USER29> For years the hackers/pundits were telling MS to adopt a more inviting buisness plan with free versions etc. It is possible that this approach could be detrimental even if they hace good products. It is ironic that as consumer Windows has become a more polished product they have removed the premium pricing in favour of app stores and subscriptions.

<comment><USER30> Which control panel do I need to open to get that "polished" feature you're mentioning, the Metro or the old one ?

<comment><USER29> Oh yes I agree that it doesn't come close to achieveing polish, but that is surely the aspiration.

</comment></comment></comment></comment></comment><comment><USER31> _" The company was so in love with P.C.s (the hub for all things and for all time to come) that it came late to the Internet and much, much too late to mobile phones."_

In the early 2000s, Microsoft did try pushing tablet computers, "pocket PCs" based on Windows CE (rivals to Palm PDAs) and even had Windows Phone OS in some smartphones.

That did not gain traction, because the user experience was not captivating, and they had missed the insight that fingers would be the way to go. (I'm not sure if earlier the capacitive touchscreen technology was already available in alternative to the resistive screens that required a stylus.)

I'd say that Apple's post-2007 success would not be possible without learning from Microsoft's expensive failures. But Microsoft did try.

<comment><USER32> IMHO, it was not about fingers. Palm PDAs were vastly superiors to me in terms of UI because, unlike Windows CE, they did not try to mimic a desktop experience.

</comment></comment><comment><USER33> It definitely feels like Microsoft is on the right track with Nadella in charge.

<comment><USER34> Yeah, with the likes of .Net Core it seems very much like Microsoft are on the right track. But you'll still see plenty of, what I call, "Microsoft decisions" that just make things into more hassle or expense than it should be purely for the pursuit of profit. One example is if you want to migrate from Linux to Windows 10 on a few computers you're legally required to buy a Windows 10 license for each machine you run. So for people with a few machines that might be 3 licenses you have to pay for - it's just crazy.

<comment><USER35> "You have to pay for our software to run it on a machine" is possibly the least crazy example you could have chosen. There's far more strangeness in Microsoft licensing: Terminal Server, the whole business of CALs, the vast number of SKUs with ambiguous names, VM licensing, and so on.

<comment><USER36> > the vast number of SKUs

In their defence, we did that to them. They had to make all the N versions of Windows to appease EU courts. What's troubling is that no such restriction is placed on Apple or Google

</comment></comment></comment></comment><comment><USER37> I don't have much feelings towards companies and technology. I use ones as I see fit. Windows has, since 7, been very useful to me. Even 8 (8.1 which I'm on right now). Windows has been my primary OS since 7. I augment it with Total Commander and Babun (cygwin) and that's it. Everything is great, except Babun which could use some more work (or I don't know how to use it). I also use Redhat on other workstation (due to graphics software dictating it) and it's not as usable on desktop as Windows and OSX are. That's not a surprise though. I also use OSX on my macbook air, because that's the best laptop I could've got for what I needed (lightweight, moderately powerful, battery life). I carry around Android Nexus 7 tablet as well, so new Surface Book looks like a good deal to me in order to get rid of macbook air/nexus 7 combo. Microsoft research also does some cool stuff in graphics which I've used (through their papers). I use Word and Excel all the time as well, along with Google Docs. those are just some random thoughts as I perceive them from my POV now.

</comment><comment><USER38> Microsoft to me has always been good at 'businessy' stuff. Embrace partners, embrace developers, and keep users somewhat satisfied. If you help others make money, they're going to love you. Apple has been good at 'designy' stuff. Wow and embrace users, keep developers and partners somewhat satisfied. This explains why Apple doesn't really care about backwards compat, or communicating/co-coordinating releases with partners, etc. It looks like MS is taking a leaf out of Apples book. I wonder if they can continue to do the other stuff as well.

</comment><comment><USER39> I'm really surprised it didn't touch on the oncoming xplat-ness of .net in this round up. I feel like this is huge considering how much it connects the technology. To boot, c# is a top 10 language on github even though it's primarily a single platform language ([https://github.com/blog/2047-language- trends-on-github](https://github.com/blog/2047-language-trends-on-github))

</comment><comment><USER40> Microsoft's offerings still seem under-designed to me, on a second look. I still can't order Surface Pro (or Surface Book) with cellular modem; only Surface 3, an older and supposedly lower end device. I can't order Surface Book with 1TB drive, only a Surface Pro 4; despite the former being a more expensive and supposedly higher end device.

Why so? As far as I understand, Microsoft still goes with the templates their hardware OEMs already have: Surface is based on a tablet template, while Surface Pro and Surface Book are supposedly based on different laptop templates and the available options are thus defined by the OEMs. This also explains why the 'Pro' versions 1 and 2 had cameras inferior to the 'non-Pro' versions.

I wish Microsoft got their act together and gave more attention to design, while they are at it. If they are saying this is a tablet that _can_ replace my computer, let it have what those tablets that _can 't_ have: cellular module. If it has a non-removable hard drive, let me have it in the greatest available capacity, sepecially while you already offer that on a lower-priced model.

<comment><USER41> " I still can't order Surface Pro (or Surface Book) with cellular modem; only Surface 3",

Can you order a Macbook Air with cellular modem? because that has always been the range they designed the SP for.

<comment><USER40> 1\. No you can't, but I have always wondered why.

2\. They might, but they say it's a tablet, and it looks like a tablet, and it has touch screen. Tablets (often) have cellular.

</comment></comment></comment><comment><USER42> I kind of thought the headline referred to the fact that they did finally release a patch that makes connecting to Exchange servers via Outlook possible again in the latest OS X. [too snarky, maybe but it was a pretty hilarious situation where both Apple and Microsoft failed fairly hard for a (short) while]

</comment><comment><USER43> The piece and ars technica video show both the good and the bad of this new MSFT attempt:

Some good ideas, but let's be real - ultimately a total niche product at $1500. Compare that the surface pro 3 has been selling about 3-4 million units in the last year ( q3/2014 - q2/2015 revenue was estimated around $3b, on devices costing about $800 + $130 keyboard), while Apple sells about 20m Mac units in the same timeframe, which is in itself STILL a niche!  www.statista.com/statistics/263444/sales-of-apple-mac-computers-since-first- quarter-2006/

I just don't see how this is going to make any sort of real dent.

</comment><comment><USER44> I remember using a Windows machine in 2006 that could also double as a tablet. (You could pivot the screen around and then fold it back on top of the keyboard.) It wasn't very good of course, and my point is that this idea is not new by a long shot. So is the enthusiasm for Surface Book coming from the fact that it's made by MS themselves?

Beyond that, it strikes me that the way they talk focuses so much more on narrative than the actual products they're selling. Like "I want you to love MS because you love building things for other people" or whatever.

</comment><comment><USER45> Wonder how much Nadella really changed vs the changed perception of the company, much of this stuff must have been brewing while Ballmer was at the helm..

<comment><USER14> But not likely because of Ballmer.

</comment></comment><comment><USER46> MS/Windows/Office has always been a workhorse for me, but i might be in the process of becoming a MS fanboy :)</comment>


Yolink's Next Step Search Pulls Info from Behind Links and Inside Docs - <AUTHOR> http://www.readwriteweb.com/archives/yolinks_next_step_search_pulls_info_from_behind_li.php

<comment><USER2> This tool is worth a try, you can see the results right away.

</comment><comment><USER3> Way to go.</comment>


Ethereum Go GitHub Repo Keeps Getting Spammed - <AUTHOR> https://github.com/ethereum/go-ethereum/issues <comment><AUTHOR> Related, see comments.

[https://github.com/ethereum/go- ethereum/pull/3757](https://github.com/ethereum/go-ethereum/pull/3757)

</comment><comment><USER2> Find each user that submits bogus bugs, and click on their profile. Then select "report" and link to some sample bugs.

The user will be suspended.</comment>