Father's Age Is Linked to Risk of Autism and Schizophrenia - <AUTHOR> http://www.nytimes.com/2012/08/23/health/fathers-age-is-linked-to-risk-of-autism-and-schizophrenia.html?_r=1&hp <comment><USER2> I wonder how much of the mutations in genetic material relate to simply aging and how much of it might be a reflection of environmental exposures based on when the father was born? Substances like mercury or lead spring to mind as things that someone just 10 years older than myself would have likely had much more exposure to despite living in the same place and having the same socioeconomic status.

The fact that the female-contributed genetic material error rates are static might speak to this effect to some degree. I wonder if they are studying autism diagnosis going back in time or if all the autistic children were around the same age.

<comment><USER3> _Substances like mercury or lead spring to mind..._

Ditto chemo, steroids, smoking, alcohol, marijuana, human growth factor...

Professional baseball fathers seem to have quite a few kids with physical troubles. I've always wondered if it's job related.

</comment></comment><comment><USER4> I had heard this before but only with schizophrenia which always had me a tad worried. But I never heard:

> "The overall risk to a man in his 40s or older is in the range of 2 percent, > at most"

Which is much more comforting to know. I never heard any risk percentage from earlier articles I've read.

My father was 48 when I was born.

<comment><USER5> That's about the same risk for a 43 year old woman to have a baby with Downs. So where are all the "biological clock is ticking" articles for men?

<comment><USER6> Biological clock is more about absolute fertility vs. healthy fertility.

<comment><USER7> That's certainly how I hear it, too. I've never heard a woman expressing fear that she might have waited too long, such that her child will get Downs. Rather, fear that she might have simply waited too long, and now it is _too late_.

<comment><USER8> I'm over 40, and I certainly have! Downs can be detected in time for an abortion, but it means that you have to get pregnant all over again, and risk Downs and the various other bad mutations again, and risk miscarriage for whatever reasons all over again, etc.

So for non-fundamentalist women, there is fear of having a Downs child, but it gets rolled into the package of "worried about getting to have a successful pregnancy at all".

<comment><USER9> So, any woman who wouldn't abort a Downs baby is a fundamentalist now?

<comment><USER8> Fair enough - they might have other reasons.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is the third such study published within this year. The difference being that this study did full genome sequencing rather than exome (regions coding for proteins) sequencing.

The other papers: O'Roak BJ, et al. Sporadic autism exomes reveal a highly interconnected protein network of de novo mutations. Nature. 2012

Sanders JS, et al. De novo mutations revealed by whole-exome sequencing are strongly associated with autism. Nature. 2012

</comment><comment><USER11> These are disorders that effect a person's personality, which could mean all sorts of new variables to control for. A man who has mild symptoms of autism or schizophrenia may well take longer to establish himself in his life and have children.

<comment><USER12> Perhaps thats why they were ...

"focusing on families in which parents with no signs of a mental disorder gave birth to a child who developed autism or schizophrenia"

</comment></comment><comment><USER13> the decision of people to have children late is harmful to society in a number of ways.

i know an "irresponsible" woman who had a child when she was a teenager. she was 40 when her child was in college and ready to move on in her life. if she lives until 80, she'll share 60 years of experiences with her child on average.

if some professor decides to wait until they have tenure (say 40) before they have kids, they're likely to have 40 years of overlap. they'll be dealing with an unruly adolescent when they are 55.

if you have a kid at 50 (some people do!) then you have 30 years of overlap and you're dealing with an unruly teenager at 65!

(Oddly, have kids at 30, like I did and my dad did, and you're in your 40s when your kids are in their teens. The 40s seem to be a time that parallels adolesence and a number of ways... Stan Lee and Mike Ditko were in their 40's when they were imagining the adventures of teen Peter Parker...)

so having kids late in life means that parents have less experience with their children and children get less out of their parents.

(note that smaller nuclear families have an almost genocidal effect on extended families... if you have N siblings on average, you have N^2 cousins!)

for years i've believed that late childbearing has an effect similar to an increase in background radiation, this study confirms that and just adds to the case

<comment><USER14> If your primary purpose as a human being is to reproduce, then yes, your arguments have merit.

Otherwise, you are projecting your own values and desires on a lot of people who potentially don't share them.

<comment><USER13> It's not just your own values, it's the effect that your values have on civilization as a whole.

I see civilization as a race between our ability to create problems and our ability to solve problems.

You can make a case that a high reproductive rate is a social danger because it causes resource depletion and overall causes us to develop problems faster just because more people make more problems.

On the other hand, a low reproductive rate makes problems too. It's much easier to fund the kind of welfare state that the left wants when we have a high reproductive rate. The dreams of the right, in which many of us can save money in individual accounts and enjoy an easy retirement, are also dashed by a low reproductive rate.

Honestly I don't know what the optimal reproductive rate is. But I think there is something more to life than the quality and quantity of your orgasms, what pleasure you get, and the self-aggrandizement you experience making other people rich and famous.

Quite a few people have worked hard to create the civilization we have, and in particular, two parents invested a lot to raise me. I think it's fair to "pass this forward" and expect that we all produce (on average) a child each and that that's just a part of the mission we have on planet Earth.

<comment><USER15> That's just your opinion that having children when older is harmful to society. But what I consider more harmful to society is this thinking that every single individual action has to be weighed against the "benefits of society". This thinking seems to be more and more prevalent and is dangerous for freedom.

</comment></comment></comment></comment><comment><USER16> Does anyone have tipps about where to perma-freeze sperm? Seriously, shouldn't be too of a problem?

<comment><USER17> Great idea until the study on frozen sperm comes out.

<comment><USER18> We know that whatever damage is caused, it can't be too bad because children born using sperm donors - which can be frozen for storage - don't have increased defect rates, but have _decreased_ defect rates, something like 1/5

/checks <http://www.gwern.net/Ethical%20sperm%20donation> for his old citation

Yes, 1/5 according to [http://en.wikipedia.org/wiki/Sperm%20donation%23Sperm_donati...](http://en.wikipedia.org/wiki/Sperm%20donation%23Sperm_donation%20and%20reduced%20birth%20defects)

</comment></comment></comment><comment><USER19> Correct me if I'm wrong... but this is just a study which finds a correlation. While the article hints at causation, does the study actually find that?

<comment><USER20> What would "actually find that" mean to you in this context? Science is not as clean and perfect as many would like to imagine. A strong correlation and a plausible biological mechanism combined are about as strong evidence as is possible.

<comment><USER19> People who have children later in life are going to have a number of significant demographic difference from those who have children earlier.

Here's how you rule out each possibility: for each one, you pair up people in the "earlier" and "later" groups who have identical demographics. If the subgroups have identical outcomes, you have found the cause. If not, you have eliminated a cause.

<comment><USER20> That still doesn't "prove" causation, as there are innumerable demographics that are either impossible to match or nobody thinks to match. And FWIW, the paper does say that "factors other than father's age do not seem to contribute substantially to the mutation rate diversity in our data".

<comment><USER21> > "factors other than father's age do not seem to contribute substantially to > the mutation rate diversity in our data".

But as another poster already pointed out, age could be hiding other factors.

Exposure to environmental factors that could cause mutations change with time, e.g, older fathers would have been exposed to pesticides that were banned before younger fathers were born, nutritional changes, etc...

<comment><USER20> I know, that's the point I was replying to in my previous post..

</comment></comment></comment></comment></comment></comment><comment><USER22> Mutations can also be beneficial. I wonder if other traits, such as intelligence variability, are also related to father age?

There's even a nice evolutionary coincidence: if you wanted to play with genes to make something, it's a good idea to start with the genes of older fathers, because they've shown they can survive longer.

</comment><comment><USER23> On one hand older fathers tend to pass on longer telemeres and likely longer lifespans, on the other there are likely these risks.

I guess you can't have it all.

</comment><comment><USER24> Similar research results for bipolar:

Bipolar Disorder Tied to Age of Fathers By NICHOLAS BAKALAR NY Times, September 8, 2008 <http://www.nytimes.com/2008/09/09/health/09bipo.html>

</comment><comment><USER25> Biologically, this makes sense. A woman is born with all her eggs already in her ovaries, while men manufacture sperm on demand. Obviously, the consequences of accumulated genetic damage can only manifest in the latter case.

<comment><USER26> There are people actively investigating the origin of eggs; they aren't sure the long held view is correct.

For instance:

[http://www.plosgenetics.org/article/info%3Adoi%2F10.1371%2Fj...](http://www.plosgenetics.org/article/info%3Adoi%2F10.1371%2Fjournal.pgen.1002848)

</comment></comment><comment><USER27> I think that the father's age might be also linked to the intelligence of his child.

Schizophrenic people often have a high intelligence quotient. A link between autism and intelligence is also probable.

</comment><comment><USER28> This has been "known" for years with autism, based on observational data. Normally, I don't put much into observational data, since it can be so wrong, but in the autism/paternal age case, you have a HUGE, HUGE leap in likelihood of autism based on father's age. A man in his 40's is thousands of times more likely to have an autistic child than a man in his 20's, as a I recall from previous observational data.

<comment><USER29> _thousands of times more likely_

This is the sort of thing you should check before you post. It only took a minute to find a well-sourced overview of the clinical literature on wikipedia, with results clustering around a 40% increased risk of autism for the offspring of men in their forties (vs men in their twenties), though one study from Israel found the the risk to be almost 6 times higher.

[http://en.wikipedia.org/wiki/Paternal_age_effect#Autism_spec...](http://en.wikipedia.org/wiki/Paternal_age_effect#Autism_spectrum_disorder)

To blithely suggest that the probability is 'thousands of times' higher is misleading to the point of irresponsibility. Think of the confusion and anxiety such misinformation can create in the mind of an uninformed reader.</comment></comment>


Shipwell – Helping every business ship freight as well as Amazon - <AUTHOR> https://medium.com/@shipwell/introducing-shipwell-helping-every-business-ship-freight-as-well-as-amazon-f7fc805637dd <comment><USER2> >Freight brokers and third-party logistics companies ("3PLs") are first-class citizens in Shipwell's platform, which sets us apart from other startups in the space that are actively trying to disrupt them.

This is an important differentiator. Many other freight network startups have failed because they couldn't get the supply/demand flywheel turning fast enough. Integrating with existing carrier networks means you won't undercut them on price, but you can compete on convenience for shippers.

</comment><comment><USER3> Possibly off topic, but I'll ask it here anyway in case someone can point me in the right direction: I'd like to ship a preloaded and privately owned 20 ft shipping container from urban West Coast US to rural East Coast US. From what I can tell, probably would make sense as truck-train-truck intermodal freight transport. But this seems to be rare enough I'm not finding a lot of information online, at least given those search terms. Are there better terms to search for? Who would I talk to about this for what is likely a one-time shipment?

<comment><USER4> Sounds like you want freight shipping? E. g. these kinds of services: [http://www.fedex.com/us/freight/portal/](http://www.fedex.com/us/freight/portal/)?

(Not endorsing Fedex, just an example. Lots of other companies do this too.)

You could also consider hiring a moving company.

<comment><USER3> _Sounds like you want freight shipping?_

No, I've shipped pallets of freight before, using Fedex among others. The issue is that I've got one of these [https://en.wikipedia.org/wiki/Twenty- foot_equivalent_unit](https://en.wikipedia.org/wiki/Twenty- foot_equivalent_unit), and I want to get it across the country full of stuff.

It's possible Fedex has provisions to do this if paid enough, but I think I'm looking for something more specialized. Like this, but I'm looking for more specific recommendations: [http://rapidexpressfreight.com/freight- services/rapid-expres...](http://rapidexpressfreight.com/freight- services/rapid-express-rail-intermodal-freight-service/)

</comment></comment></comment><comment><USER5> Is this similar to Flexport?

</comment><comment><USER6> Uhm, truckstop.com has been doing this since 1995. This isn't new or anything earth shattering

</comment><comment><USER7> So to be clear, this is a B2B thing, right? Not for end consumers.

<comment><AUTHOR> Hi Jon -- we work primarily with businesses, but if you're shipping freight and have questions, you can always email us at firstname.lastname@example.com -- thanks!

</comment></comment><comment><USER8> Do you handle shipments to Amazon FBA?

</comment><comment><USER7> Is there any way to get rid of the "you've read X articles this month, let's make things official" overlay on Medium? It annoys me every time!

<comment><USER9> Making it official should get rid of it ;).</comment></comment>


Higher Education Is Drowning in BS - <AUTHOR> https://www.chronicle.com/article/Higher-Education-Is-Drowning/242195 <comment><AUTHOR> And if this piece speaks to you, you might also like Frankfurt's essay "On Bullshit" ([https://www.amazon.com/Bullshit-Harry-G- Frankfurt/dp/0691122...](https://www.amazon.com/Bullshit-Harry-G- Frankfurt/dp/0691122946?ie=UTF8&tag=thstsst-20&linkCode=as2&camp=1789&creative=390957)).

</comment><comment><USER2> A must read on higher education.</comment>


Ask HN: Static Sites on Google Cloud - <AUTHOR> Been playing with Google Cloud Functions the past couple of months and am feeling really good about the direction it's heading (an alternative to Lambda has always felt like the missing piece of GC to me).
That being said, I host a suite of static sites in S3 buckets sitting behind Cloudfront at the moment, and it's largely a painless process getting them up and running w/ SSL.  I'd love to build the next few on GC but as far as I can tell it's a bit of legwork getting static sites hosted w/ SSL on Google Cloud Storage - you need to setup Cloud Load Balancing and a Cloud CDN instance to get the full chain.
Maybe I'm being lazy (a definite possibility), but this seems fairly complex comparatively.  Does anyone have experience hosting production static sites on GC?  Is the above still the solution here or am I missing something? <comment><USER2> If you need to host static content over HTTPS with a custom domain, then yes, Cloud Load Balancing is the main option at the moment. You can use GCS for HTTP serving from a custom domain or via HTTPS from GCS's own domain ([https://yourbucket.storage.googleapis.com](https://yourbucket.storage.googleapis.com)), but for serving HTTPS content from a custom domain, that requires configuring Cloud Load Balancer.

(I work on Google Cloud Storage)

<comment><AUTHOR> Perfect, thanks Brandon!

</comment></comment><comment><USER3> You must set a load balancer to use Google Cloud CDN.

But I'd recommend to use Google Cloud Storage + Cloudfront. Since you are hosting static pages that can be cached by Cloudfront, there are almost no costs on the data traffic from Google Storage to Cloudfront. Cloudfront is easier to use and you can control more.

<comment><AUTHOR> Thanks for the response. I expected this would be the case. Appreciate it.</comment></comment>


5-Level Paging and 5-Level EPT [pdf] - <AUTHOR> https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf <comment><USER2> One reading of this is that Intel wants some future arch to be able to address huge amounts of NVRAM as if it were RAM.

<comment><USER3> Of course they do. If their X-Point stuff (or something like it) ever ships, they will want to put a couple or three terabytes of NVmemory on the otherside of the frontside bus. If you can do that you can enable some really amazing systems architectures. Things like a web search engine that consumes less than a 100W when it isn't serving a request because it can 'wake from sleep' and answer a query in under 10mS. And it can reboot in just the few seconds needed to change out the RAM parts of memory and pick up the giant data structure with the web index already loaded.

</comment></comment><comment><USER4> Prepare for a new set of exploits affecting every major OS except Linux [1] involving SYSRET to a non-canonical address.

[1] Linux may get a free pass because I'm going to insist on a specific test case for this issue.

<comment><USER5> >"Prepare for a new set of exploits affecting every major OS except Linux [1] involving SYSRET to a non-canonical address"

Can you elaborate?

<comment><USER4> Here's a good writeup of the original bug: [https://fail0verflow.com/blog/2012/cve-2012-0217-intel- sysre...](https://fail0verflow.com/blog/2012/cve-2012-0217-intel-sysret- freebsd.html)

With the VA width changing, all the fixes for that and related bugs will need to be updated.

<comment><USER5> Oh interesting, thanks for the link.

</comment></comment></comment></comment><comment><USER5> The third paragraph of the first page states:

"Virtual-machine monitors (VMMs) use the virtual-machine extensions (VMX) to support guest software operating in a virtual machine. VMX transitions are control flow transfers between the VMM and guest software"

Can anyone explain what "control flow transfers" are?

Is this just referring to a per VM context of a core's control path? Kind of context switch of sorts to to another VM?

<comment><USER6> In this context "control flow transfer" refers to the CPU transitioning between executing VMM code and guest code.

<comment><USER5> Thanks!

</comment></comment></comment><comment><USER7> I wonder who asked for this? While 640k might not be enough for everyone, 256 terabytes of directly addressable memory seems, suffient to requirements.

<comment><USER4> But 256 terabytes of _disk_ might not be enough and, if you want to address your disk like it's RAM, you need more address space.

<comment><USER2> Yeah, I had thought in terms of fancy new kinds of NVRAM, but mmap'ing lots of existing storage (or a mix) is a legit use case sooner.

</comment></comment></comment><comment><USER8> Fun fact: physical addresses will still have at most 52 bits, despite linear address space having up to 57.

<comment><USER9> For garbage collectors and other things you really want a randomly selected number to only infrequently be a valid address.

<comment><USER10> How often do garbage collectors look at physical addresses?

<comment><USER9> ... You're right, physical address bits are totally irrelevant and I was confused.

</comment></comment></comment></comment><comment><USER11> ~144 petabytes 128 pebibytes</comment>


Why PHP Sucks (Hint:  It doesn't) - <AUTHOR> http://chipmunkninja.com/Why-PHP-Sucks-Hint%3A-It-1q@

<comment><USER2> "The lesson? Shut up and code."

The author's full of it. Though I agree with the idea that not having cool features doesn't make a language suck (though it can certainly make programming in that language less fun), the rest of his stuff is why we have so much terrible code out there.

If you just "shut up and code" you'll rarely get what you wanted as far as functionality goes.

Also highly complex code is usually a sign of a bad programmer, not a good one. Complex code is very rarely necessary to get the job done, and it leads to very high maintenance systems.

Good programmers take great pride in producing things that are simple, as is the case with most artists. The best photographs usually aren't the ones that have everything in them, but rather the ones that have exactly what the photographer needed to say what he/she wanted to say.

Not to place photography on a pedestal, IMO this applies to all of the arts. Sometimes complex is good, but usually it's just clutter.

</comment><comment><USER3> "brutal application of free market supply and demand. If having Feature X really would make my web application development significantly easier, somebody would have already written a language or environment that used it."

I see this kind of thinking applied to a multitude of subjects and it never makes any sense. The market isn't some static thing that has already rendered its final judgement - the competitive landscape is constantly changing and (in this particular example) python or ruby programmers extolling the virtues of their language to PHP programmers and convincing them that it is better is a vital component of python/ruby gaining greater market share.

This type of thinking can be used to discourage absolutely anything that is new - "if its so good, why hasn't someone already done it? If it is not already done, it must therefore suck".

In fact, it reminds of a joke about the conservatism of Canadian VCs: The entrepreneur goes to the VC and pitches his business. Being somewhat conservative, the VC asks him "Well, if your idea is great, why hasn't someone from the Valley already invested in it?"

</comment><comment><USER4> > As I've programmed in various capacities and looked at hundreds of thousands > of lines of code over the years, I've never once thought to myself how the > task would have been easier if that supposed missing feature were truly > there.

I think we've got a Blubber here.

> Ah, reply the nay-sayers, you only think that way because you have never > known Feature X and how it could help. To which one must reply: hogwash. > [...] If having Feature X really would make my web application development > significantly easier, somebody would have already written a language or > environment that used it.

Supporting Feature X is one thing; supporting it in a way that makes it worthwhile to use is another.

PHP's anonymous functions are a perfect example.

<comment><USER5> A "blubber"?

<comment><USER4> <http://en.wikipedia.org/wiki/Blub_>(programming)

</comment></comment></comment><comment><USER6> It's unfortunate that he thinks Perl is one of those lanagues (like PHP and COBOL) that you "shouldn't use" because it's useless, dead, broken, whatever. PHP gets a lot of hate because it's completely broken. The designers knew nothing about programming when they designed it, and that shows up every time someone writes a PHP site.

But I digress. Perl is not in the same class as PHP, it's in the same class as Ruby and Python. I think it actually one-ups those languages in a variety of places, actually. Perl has predictable scoping rules, unlike Ruby; and you can have multi-line anonymous functions, unlike Python :) I know this sounds like a broken record, but Perl's culture of libraries is something other languages really need to steal. The best part of using Perl is the code that you _don't_ write ;)

Anyway, just thought I would clear this up. The world has a lot of hate for Perl, but it's mostly unfounded. Perl back in 1996 sucked, but programmers back in 1996 sucked. In the last few years, Perl has attracted a ton of exceptional programmers, and we have some really nice stuff now. (Moose, Ernst, Catalyst, DBIx::Class, the list goes on...)

</rant>

</comment><comment><USER7> Why has this article gathered so many points here? It was quite inane, no?

</comment><comment><USER8> one thing i learned at art school: having crummy paint and worn brushes doesn't mean you can't produce a great piece of work.

<comment><USER4> Unfortunately some people think that means there's no point in seeking out good brushes and paint. (or worse, that good brushes and paint are an elitist myth)

<comment><USER6> And others think that painting with their own blood adds to the work because it's so painful. (Speaking from experience, slicing open your arm is much less painful than writing PHP. As for reading the average PHP app, let's just say I'd rather die painfully.)

</comment></comment></comment><comment><USER9> Very true, but too often people end up focusing on tools instead of what you do with them.

I suspect most people engaged in PHP/Ruby/Python/Erlang/etc use them as much as suburban dads use their Black & Decker powertools. Seems to me you either obsess about your tools or you actually use them - few do both.

<comment><USER9> Sorry.. This was supposed to be in reply to "Unfortunately some people think that means there's no point in seeking out good brushes and paint."

</comment></comment><comment><USER10> You need an easy way to pass around anonymous functions, or you can't easily implement Don't Repeat Yourself. Result? You repeat yourself and write poorly factored code.

Writing poorly factored code is the norm. Sturgeon's law applies here too. That doesn't mean it should be your goal, however.

</comment><comment><USER11> I totally disagree with this essay, but wow is it nicely written.</comment>


NSA is wrong, not evil - <AUTHOR> http://erratasec.blogspot.com/2013/06/nsa-is-wrong-not-evil.html

<comment><USER3> >Many claim the NSA is just another agency, and thus will share the same faults found in agencies like the IRS, which recently targeted people based on their political beliefs. This is a terribly wrong comparison. The IRS hires people with high-school diplomas, the NSA hires Ph.D.s with military service. If anybody at the NSA used their position to further their political party, their fellow employees would be the first to point that out, and stop them.

1\. A PhD doesn't imply lack of political prejudice. Military service doesn't imply lack of political prejudice. High school as highest completed education doesn't imply existence of political prejudice. This is an extremely ill- conceived argument and really only reveals the author's own elitism.

2\. The whistleblower in this case is a past employee of the CIA and current (well, I guess not anymore) contractor for the NSA. He did not even complete high school. The characterization of the NSA only hiring "PhDs with military service" is objectively wrong.

>The rank and file of the NSA is not your enemy. They carry out the mission that politicians give them, and do not cross the line with an almost religious fervor. It's the politicians who have moved that line.

[http://en.wikipedia.org/wiki/Nuremberg_Trials](http://en.wikipedia.org/wiki/Nuremberg_Trials)

</comment><comment><USER4> This makes me think of the movie Cube. Wrong or evil? It's irrelevant - <USER2> outcomes are perverse.

</comment><comment><USER5>
        Ph.Ds with military service?

I can only imagine that that is a very very short list of people. Everyone I've met with a Ph.D. is as far from the mentality of the military people I've met and vice versa.

<comment><USER6> It might be a short list, but apparently they're all in the NSA! I think they might be making things too easy for rival intelligence agencies...</comment></comment>


Regulatory Capture of the FCC: Stacking the Deck with the Proposed Commissioner - <AUTHOR> http://www.huffingtonpost.com/entry/5963db94e4b0deab7c646aed <comment><AUTHOR> This seemed a little partisan, but I decided to share it anyway since it raised a number of credible concerns nonetheless.</comment>


Show HN: Etymo: Bespoke knowledge graphs for enterprise problems - Free trial - <AUTHOR> Nowadays almost all big AI companies use knowledge graphs to extract and analyse information. We think you should have your own knowledge graph too! Etymo (https://etymo.io) will help you build a light knowledge graph layer on top of your databases, allowing you to extract value from your data.
You can enjoy our server for free for 12 months. This offer is only for 6 companies, so first come first serve. <comment><AUTHOR> Only three places left. Sign up soon if you are interested!</comment>


Why is memory reclamation so important for lock-free algorithms? - <AUTHOR> https://concurrencyfreaks.blogspot.com/2017/08/why-is-memory-reclamation-so-important.html <comment><USER2> Once I've read an excellent book, The Art of Multiprocessor Programming [0]. All examples in the book are in Java. After reading it, when thinking about some of the solutions and algorithms presented, I quickly concluded that deploying them in C/C++ would be an order of magnitude more complex, because of 'memory reclamation'. So yes, I think the OP makes a good point.

[0] [https://www.amazon.com/Art-Multiprocessor-Programming- Revise...](https://www.amazon.com/Art-Multiprocessor-Programming-Revised- Reprint/dp/0123973376)

<comment><USER3> I picked this book up from the library and it is definitely a useful book. About 2/3rds of the book is actual runnable example code.

Also agree totally on Java making concurrency way easier with GC. Russ Cox describes one of these problems here [https://research.swtch.com/lockfree](https://research.swtch.com/lockfree)

</comment></comment><comment><USER4> I've found that a lot of the tricky edge cases in lock free programming can be reduced to the following case:

Imagine that a thread reads a pointer, then immediately (before it dereferences it) gets scheduled out and frozen for arbitrarily long.

To keep the thread from crashing or performing incorrect logic when it wakes up, to have to make sure this pointer remains valid for arbitrarily long.

You have to accommodate the fact that a thread can get frozen basically forever.

<comment><USER5> Why would you ever free an object if something else might be pointing at it?

<comment><USER6> >Why would you ever free an object if something else might be pointing at it?

Hi, welcome to programming /s

This is the crux of the entire issue for high-performance multi-threaded programs: how to tell when memory can safely be freed without introducing expensive synchronization?

The simple solutions are obvious:

1\. Don't share memory 2\. Use a lock

The real tricks are in forms of reference counting or garbage collection that avoid taking locks as much as possible. For really high performance you also need to avoid atomic operations and fences as much as possible. A "pause the world" garbage collector is easy (relatively) to get right and you can be confident it will work. Doing a concurrent pauseless GC is another matter entirely. Inserting a memory fence on every write is not great for performance.

For both GC and reference counting schemes weak references are an additional wrinkle. Swift's original weak reference scheme solved this by inverting control and maintaining parallel reference counts: when the last strong reference is released it ran deinit and set a flag in the object header but otherwise left the memory allocated. Only once every weak reference was touched (or itself deallocated) was the memory actually freed. That's trading greater high-water memory usage for performance. (I don't know off-hand why the implementation was changed though).

<comment><USER5> > 1\. Don't share memory 2. Use a lock

3\. Have a concept of ownership and make sure all your code follows some basic rules?

E.g. if a consumer reads a pointer from a look free queue, it is then responsible for freeing that memory. OP seems to be saying let some other thread free it on some racy assumption that the consumer will be done with it within N nanoseconds.

That's not how I would code it.

<comment><USER4> The problem is _inside_ the lock-free queue. How do you remove something from a lock-free queue? Usually by reading a pointer to the queue node, then doing a CAS to remove the node from the queue. But another thread can remove that same node and free it before you can do the CAS!

If you're just _using_ a lock-free queue, then the hardest part of the problem has been solved for you already. But the person who _wrote_ the lock-free queue had to think about and solve these really tricky problems.

<comment><USER5> So how did they solve it?

<comment><USER4> There are a number of techniques for solving this:

        1. use a GC'd language
        2. hazard pointers
        3. epoch-based GC
        4. collect nodes when a user destroys the structure
           (user is required to guarantee that destruction is
           single-threaded).

There are probably others.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I came to use an epoch based reclamation approach where a token is passed between all threads in the system. Since this chain involves only relaxed read/writes, it has practically zero overhead. The only downside is the relatively high latency between retiring and recycling the memory. That and all participating threads must occasionally process their epoch.

I hadn't seen this exact approach used elsewhere, all the other epoch approaches were more complex and required atomic operations at certain points.

<comment><USER8> This is quiescent-state-based reclamation, other implementations exist that are cheap. I have seen the technique you're talking about used in K42 (after I had also thought I invented something novel, when I used the same approach as you :-P).

<comment><USER9> Doesn't the strict definition of QBSR require a thread to keep no references to shared data when it is in quiescent state, whereas epoch-based reclamation allows threads to simply retain no references to older versions of shared data when it advances its epoch?

<comment><USER8> I'm referring to the FIFO implementation. On the definition of QSBR though, frankly, I think the term gets overloaded in some of the more recent literature in this area. Both EBR and QSBR require that no hazardous references get carried over across "protected sections" (EBR is explicit read- side protected sections and in QSBR, across a quiescent point).

</comment></comment></comment></comment><comment><USER10> The last time I had to write a lock-free algorithm (in this case, a multi- writer, multi-reader queue), the memory reclamation strategy was straightforward:

Make _2_ lock-free queues. Pre-allocate all the memory into message-sized chunks, and post them to the "upwards" queue. A writer would read/consume from the upwards queue, write into the received buffer, and then post the same buffer in the _other_ queue. Everything is passed by reference, so it is zero- copy.

I guess I don't understand the reason for all the complexity. Perhaps for more complicated algorithms than queues?

<comment><USER11> If you preallocate memory, you're not reclaiming it, are you?

<comment><USER10> Sure, I'm reclaiming it for future writers.

</comment></comment></comment><comment><USER12> huh. I expected this to be a discussion about the ABA problem, probably would have been worth at least a mention

edit ref: [https://en.wikipedia.org/wiki/ABA_problem](https://en.wikipedia.org/wiki/ABA_problem)

</comment><comment><USER13> They claim there are no lock-free or wait-free GCs. But Azul have had a pauseless one for the best part of a decade: [http://www.artima.com/lejava/articles/azul_pauseless_gc.html](http://www.artima.com/lejava/articles/azul_pauseless_gc.html)

<comment><USER14> C4 (the GC implementation you are referring to) is not truly pauseless. It does enormous amount of work with the assist of the "user" threads and has a concept of local (instead of VM-wide) safepoints, but it still (rarely) pauses.

[http://dl.acm.org/citation.cfm?id=1993491&dl=ACM&coll=DL](http://dl.acm.org/citation.cfm?id=1993491&dl=ACM&coll=DL)

[http://static.usenix.org/events/vee05/full_papers/p46-click....](http://static.usenix.org/events/vee05/full_papers/p46-click.pdf)

<comment><USER13> So they are wrong to repeatedly call it pauseless? Or are you making a distinction between their implementation and their algorithm? Or are there different definitions of pauseless?

<comment><USER9> To quote their earlier paper:

"HotSpot supports a notion of GC safepoints, code locations where we have precise knowledge about register and stack locations [1]. The hardware supports a fast cooperative preemption mechanism via interrupts that are taken only on user-selected instructions, allowing us to rapidly stop individual threads only at safepoints. Variants of some common instructions (e.g., backwards branches, function entries) are flagged as safepoints and will check for a pending per-CPU safepoint interrupt. If a safepoint interrupt is pending the CPU will take an exception and the OS will call into a user-mode safepoint-trap handler. The running thread, being at a known safepoint, will then save its state in some convenient format and call the OS to yield. When the OS wants to preempt a normal Java thread, it sets this bit and briefly waits for the thread to yield. If the thread doesn't report back in a timely fashion it gets preempted as normal.

The result of this behavior is that nearly all stopped threads are at GC safepoints already. Achieving a global safepoint, a Stop-The-World (STW) pause, is much faster than patch-and-roll-forward schemes [1] and is without the runtime cost normally associated with software polling schemes. While the algorithm we present has no STW pauses, our current implementation does. Hence it's still useful to have a fast stopping mechanism."

To quote their later paper:

"The C4 algorithm is entirely concurrent, i.e. no global safepoints are required. We also differentiate between the notion of a global safepoint, where are all the mutator threads are stopped, and a checkpoint, where individual threads pass through a barrier function. Checkpoints have a much lower impact on application responsiveness for obvious reasons. Pizlo et al [16] also uses a similar mechanism that they refer to as ragged safepoints.

The current C4 implementation, however, does include some global safepoints at phase change locations. The amount of work done in these safepoints is generally independent of the size of the heap, the rate of allocation, and various other key metrics, and on modern hardware these GC phase change safepoints have already been engineered down to sub-millisecond levels. At this point, application observable jitter and responsiveness artifacts are dominated by much larger contributors, such as CPU scheduling and thread contention. The engineering efforts involved in further reducing or eliminating GC safepoint impacts will likely produce little or no observable result."

<comment><USER13> Thank you. My reading of that is that the algorithm is theoretically pauseless, but the implementation has a fixed sub millisecond pause that doesn't scale with heap size or allocation rate. So they could make the implementation truly pauseless, but it wouldn't make any practical impact because of other factors like CPU scheduling jitter dominating. So to all intents and purposes it is pauseless.

</comment></comment></comment></comment></comment><comment><USER15> I recall explaining to a guy that the lock free hashmap was very easy to use as long as you never free()'d anything you put in it, in which case I had some literature and code on Hazard Pointers for him to take a look at...

</comment><comment><USER8> Great write-up! A few notes worth mentioning (IMO) below:

Garbage collection: This is only true in absence of garbage collection. If you're paying garbage collection cost to begin with, this is not an issue. Also, note things such as [http://web.mit.edu/willtor/www/res/threadscan- spaa-15.pdf](http://web.mit.edu/willtor/www/res/threadscan-spaa-15.pdf)

This only applies to dynamic lock-free data structures: Or, data structures requiring memory allocation. If you're using bounded buffers and don't require memory allocation, this isn't an issue.

Taxonomy: Not all passive schemes are quiescent-state-based. In QSBR, quiescent points are a first-class entity while that is _not_ the case in EBR (you have only 3 distinct states). Absent extensions you are unable to differentiate one quiescent point from another, which has real implications on being able to implement things like deferred / non-blocking reclamation efficiently. There are some advantages to this, a while ago Paul Khuong contributed a reference counting scheme to epoch reclamation allowing for overlapping protected sections (bounded epoch makes reference counting practical, something you can't do with unbounded quiescent points). It's pretty great and note, it doesn't require a strict notion of quiescence! You'll find this in Concurrency Kit.

It is also worth noting the HP, etc... (pointer-based schemes) can be used to implement QSBR.

For these reasons, I prefer to classify these techniques into two primary families (based on the semantics of the interface rather than the implementation): "passive schemes" and "active schemes". Passive schemes do not require cooperation from the algorithms requiring safe memory reclamation (EBR, QSBR, etc...) while "active schemes" do (HP, PTB, etc... in their textbook form require modification to the algorithm).

On blocking for passive schemes: It is worth noting that QSBR, EBR and other "passive schemes" do have "non-blocking" (informally) interfaces (rcu_call, text-book EBR utilizes limbo lists, etc...) such that writers do not have to block on the fast path, but of course, there is the cost of memory accumulating until a grace period is detected (so, not non-blocking in the formal sense but if you've the memory to spare and sufficient forward progress, becomes a non-issue). In my implementations, I typically use a dedicated thread for forward progress / epoch detection, ensuring the writer has forward progress.

You have much higher granularity and the lock-free progress guarantee in hazard pointers, because it is pointer-based (tied to the forward progress guarantees of the underlying algorithm).

Under-appreciated recent development: An interesting thing to note here is there are schemes such as [https://www2.seas.gwu.edu/~seotest/publications/eurosys16ps....](https://www2.seas.gwu.edu/~seotest/publications/eurosys16ps.pdf) which do not necessitate the same heavy-weight barriers in the presence of invariant TSC+TSO and with a sufficiently high granularity TSC, can provide the same forward progress guarantees as hazard pointers.

On hazard pointers being slow: One interesting thing to note is hazard pointers can also be used to implement "passive" schemes such as proxy collection, to give similar performance properties as EBR and QSBR.

On real world implementations: It is worth mentioning [http://concurrencykit.org](http://concurrencykit.org) :-P

<comment><USER16> I'm having trouble understanding your point about GC. The post points out that GC solves some of these problems, at the expense of creating waits. Do you think there's something wrong with the way it describes the issue?

<comment><USER17> Not GP, but I think what he's getting at is that the GC cost is already paid and doesn't get paid again for reclaiming memory with lock-free algorithms.

</comment></comment></comment><comment><USER18> the best way to do it: don't require memory reclamation in your design.

I coded a lock free IPC interface from standard C to C#. Luckily in my case the data I was moving originated on the stack. So all I do is copy from stack to shared IPC buffer and obviously keep using that same buffer until exit.

HOWEVER, if you're competent enough to handle raw threads and lock free design to begin with, you shouldn't have the slightest issue with queuing up your calls to free(). My workstation is old, but I still have 6 cores/12 threads @ 4.2 GHz. That's more than enough headroom to have a dedicated GC thread that has zero effect on performance, and a barely noticeable effect on memory.

Proper concurrency is not that difficult.

<comment><USER19> The difficulty isn't calling free, it's to know when it's safe to do so, without incurring significant overhead.

</comment></comment><comment><USER20> > Btw, even if you have a GC, no known GC is lock-free (much less wait-free)

There are lots of lock-free memory allocators for C (and C++).

They're not at all hard to write, I've written them myself.</comment>


The history of documented Unix facilities - <AUTHOR> https://dspinellis.github.io/unix-history-man/ <comment><USER2> Fun stuff. My one contribution was the libc function getsubopt() which originated in what was the first release of Solaris (code named Zeus) and picked up in the Net-2 release.

I was the engineer responsible for harmonizing the 'mount' command between SunOS (aka BSD 4.2+) and SysV R3.2. The way that worked _usually_ is that the command would get options from both sides of the tree and we would argue about the ones that overlapped, but in the case of mount the AT&T System engineer was totally appalled that mount had a -all option to mount everything in the /etc/fstab file. AT&T was pushing a new script named 'mountall' what would mount all file systems. They also hated multi-letter options like '-o rw,noatime'. Their argument was that there wasn't a subroutine in the C library to parse multi-letter options like we had for the mount command.

So I invented getsubopt which, with Bill Shannon's sign off, we made a 'standard part of SunOS'. And then we added it as something to be included in the consolidated lib C.

Going through that exercise of trying to harmonize System V and SunOS into the one true UNIX was the weirdest thing. AT&T had 'system engineers' who never wrote code, and Sun just had engineers who actually wrote code. Some of the technical disagreements were settled at the 'VP' level (Eric Schmidt at the time) where Eric and his AT&T counter part would 'trade' concessions that had escalated to that level. Like I said, very weird.

</comment><comment><USER3> I was hoping this would answer a recent question about the origin of the `unlink(1)` command. [1] The table says it appeared in FreeBSD 3.5.0, but in digging I found that FreeBSD introduced it after NetBSD, who introduced it "for XCU5's sake, and due to popular demand." [2] So `unlink(1)` must have existed in some even earlier Unix variant.

So the history of these things remains murky. Part of that is it's difficult to find old ("superseded") versions of the XCU / XOpen specs, let alone trace the new things each revision introduced to the sometimes-now-extinct Unix variants they first appeared in.

I do love the `unix-history-repo` and applaud the ongoing work there!

[1] [https://twitter.com/alangrow/status/966081208487575552](https://twitter.com/alangrow/status/966081208487575552)

[2] [https://github.com/NetBSD/src/commit/54af00c6ee446afe395f319...](https://github.com/NetBSD/src/commit/54af00c6ee446afe395f319015194e6946276523)

<comment><USER4> According to the HISTORY section at the bottom of the OpenBSD man page for unlink() , it first appeared in Version 1 AT&T UNIX. [1]

FWIW, all OpenBSD man pages have a history section at the bottom that notes when the command first appeared.

[1] [https://man.openbsd.org/unlink](https://man.openbsd.org/unlink)

<comment><USER5> OpenBSD doesn't have the "unlink" command-line tool.

The manpage you pointed to is about the "unlink" system call.

<comment><USER4> Sorry, I missed that.

</comment></comment></comment></comment><comment><USER6> For those interested, here is a relevant link: [http://bhami.com/rosetta.html](http://bhami.com/rosetta.html)

Personally, I tend to focus on GNU coreutils on the gnu/linux side.([https://www.gnu.org/software/coreutils/manual/coreutils.html](https://www.gnu.org/software/coreutils/manual/coreutils.html))

I can't find my list of non-gnu linux kernel utilities at the moment. I think it's in the older kernel documentation.

</comment><comment><USER7> This looks like this only traces the original Unix and the BSD lines. I assume that's because that's what the sources are available for. It would be cool to see what came from the SysV side of things over time, but, one would have to get the sources for a SysV-derived Unix. I'd think Illumos would count, having come from Solaris. But that doesn't help much either, does it, since Illumos is a modern Unix, and not a historic version?

</comment><comment><USER8> Ah looks interesting. Contains my two favorite things: unix history, and slickgrid.

</comment><comment><USER9> How do I read this?</comment>


New imagery shows brain neurons are arranged in 2D sheets - <AUTHOR> http://medicalxpress.com/news/2012-03-brain-wiring-no-brainer-scans-reveal.html?

<comment><USER2> Does anyone know what they mean by a "grid"? Different neurons can have different numbers of connections and they connect all over the place, not just to their immediate neighbors.

I read and reread the first page of this paper and I can't figure out what they're saying. What's new here?

<comment><USER3> I'm no domain expert, but I think by talking about individual neurons your comment is focused a bit too spatially small. The pathways described in the paper involve numerous axons hooking up widely separated neuron sets.

I.e. for a computer analogy, this isn't showing the scale of internal wiring for a chip, or even cables on the scale of hooking the motherboard to a hdd. It is showing the wiring on the scale of 'from one rack in a sever room to another across the room'. Or, for a highway analogy, not the housing subdivisions, more the freeways.

I just got answered over on reddit by someone who did a thesis on tractography; they seem to be open to more questions: [http://www.reddit.com/r/science/comments/rl1y7/diffusion_spe...](http://www.reddit.com/r/science/comments/rl1y7/diffusion_spectrum_imaging_reveals_an_orderly/c46qbdg)

</comment></comment><comment><AUTHOR> The article hasn't been liberated yet, but here's the abstract: <https://www.sciencemag.org/content/335/6076/1628.abstract>

A bit more on diffusion imaging, though you'll have to hit google scholar to find more up-to-date information on the signal processing:

[http://www.metafilter.com/114373/What-a-beautiful-mind- you-h...](http://www.metafilter.com/114373/What-a-beautiful-mind-you- have#4268116)

<https://en.wikipedia.org/wiki/Diffusion_MRI>

<https://en.wikipedia.org/wiki/Tractography>

</comment><comment><USER4> Supplemental data at [http://www.sciencemag.org/content/suppl/2012/03/28/335.6076....](http://www.sciencemag.org/content/suppl/2012/03/28/335.6076.1628.DC1/Wedeen- SOM.pdf)

I haven't completely read it, but that data looks more noisy than that medical express link. That makes me trust it more. I (did?) wonder whether Science would do April fool's jokes, or whether the authors made a deal to do so, with the article itself being real.

</comment><comment><USER5> So all this time Cray has been doing it right:

<http://en.wikipedia.org/wiki/File:Cray-3_processor_brick.jpg>

</comment><comment><USER6> Sounds like what this guy was talking about a little. <http://www.youtube.com/watch?v=48r-IeYOvG4>

</comment><comment><USER7> So it's true what they say about the fabric of the mind. Consider mine blown!

</comment><comment><USER8> Intelligent Design</comment>


My PlayMesh Fishies iPhone App Scam Story - <AUTHOR> http://www.rohdesign.com/weblog/archives/003193.html

<comment><USER2> Since you don't have comments enabled on your blog -- I have to ask; why do you think these purchases were "unauthorized"?

There was another article about this on HN. Do you not know what an in-app purchase is and how it works?

<comment><AUTHOR> Sorry, I'm not Mike Rohde. I kept the story submission the same as his post title on his blog and didn't realize that it would be confusing considering my username here is similar to this guy's name.

Personally, my understanding is that these in-app purchases require you to enter your iTunes username/password. Is that not correct? His 7 year old didn't have the username/password and the app purchases went through without authorization.</comment></comment>


Ask HN: very qualified but can't find a decent job. What do I do wrong? - <AUTHOR> (using a throwaway account)
I'm in the middle of a very painful job search in London and here for help. My background is Java, I used it for 10 years in a very latency- and performance-critical environments, so I can say I'm very familiar with the nuts and bolts of language and the JVM. As any HN oldie, I know that just doing your job is not often enough, so in parallel I launched my own iPhone app (which as of today grew to 20 KLOC of C and Objective-C) that was covered by major news outlets and featured by Apple themselves in the Education category. I'm very proud of the work I've done. I can do Python (wrote a Twisted-based backend for collaborative app) and Haskell (when asked, can code on a whiteboard). I did Andrew Ng's course online last year. I REALLY can deliver.
At the moment, I work for a major bank in a position that drives me nuts. Everything about this job is wrong but most important is that I don't feel that I use my skills at all. I started my job hunt this spring, applied to all attractive companies I know of in London and pinged every available contact in my network.
The results were underwhelming. Google UK rejected me after an on-site interview. Twitter UK were hiring for a very relevant position but listed Scala as a requirement — I wrote a small RE matcher in Scala in a few hours and sent the code and my resume directly to their engineering manager whose contact I got from my network. No reply. Facebook UK and Amazon UK didn't want to even do a screening interview with me. 90% of other companies didn't bother replying. As a net result I got one offer from a startup I liked but refused it because I didn't feel we're on the same wavelength with the founder who interviewed me.
I'm pretty desperate at this moment and feel that I'm doing something wrong. If you're running a cool software company, what do you think a senior guy from a major bank must write in his resume to stop you from shredding it on the spot? Thank you for any advice. <comment><USER2> You're an old-skool developer on paper but every place you mentioned sounds more like an environment of younger developers. We don't know anything about you but you may or may not physically appear to fit with the culture for these places. For instance if you show up in a suit and a tie looking like, well, a programmer at a bank, the younger devs may not feel like they would have fun hanging with you for the whole 14 hours days that you'll be working. The management may see your experience, do the math and figure out your age, and assume that you're likely to grumble about working 180 hours per week, sleeping in the lounge and eating pizza in order to "change the world" with/for them.

Assuming you truly want to work in an environment of a fast-moving startup and all that entails... Perhaps try some A/B testing on your resume. Remove some of your experience and omit the years of graduation, etc so that it isn't obvious you've been working in the field for 15 years. For example, just list your iPhone accomplishments and your work with Python. Maybe even re-send it to the same places. My guess is that you'll get more interviews. Then when you show up make sure you don't shave, wear some skinny jeans and a plaid shirt, get some dark-rimmed glasses and put stickers of underground bands on your macbook. Optionally get some tattoos. I bet you'll have better luck.

<comment><AUTHOR> Being fit into the culture is easily fixable — surely you don't go to Google interview wearing suit. I did the opposite once though.

A/B testing sound like an interesting idea to try, thanks.

<comment><USER2> As a dinosaur in this industry myself, it's a bizarre feeling when your skills suddenly becomes _too much_ experience! It can be a positive though because you have the luxury of being selective with the skills you present and still be 100% truthful. I personally try to customize my resume for each job and leave out any parts that I don't think will be relevant for the interview.

Good luck!

</comment></comment></comment><comment><USER3> Work on your network. Your _social_ network. Most companies hire based on the following priority:

1) Can we hire someone internally? 2) Can we hire someone we know via a connection? 3) Who has the best resume?

9 times out of 10, someone is found in the first two options. So, the first step should be getting on the radar of companies you'd like to work at, then let the resume be the ammo to help seal the deal.

<comment><USER4> I recognize that you're trying to be helpful, but "work on your network" is an over-used trope heard on the job-hunt. It's about as useful as telling a depressed person to "snap out of it."

Better advice would be given by a local in OP's job market. "Come to such and such event, which is every Thursday at X pub – many tech folks mingle there and it would be a good first step."

Absent such concrete guidance, "work on your network" is stating the obvious.

<comment><USER5> I'd disagree. "Work on your social network" is not obvious to many people. I've mentored people who explicitly told me they did not think of it. Nor is specific information necessary. If you know what to search for, such meetups might be a web search away.

London Java User Group. <http://www.meetup.com/Londonjavacommunity/>

London Python User Group <http://wiki.python.org/moin/LondonFinancialPythonUserGroup>

</comment></comment></comment><comment><USER6> Did you look into Microsoft? I know we're supposed to think they're uncool, but being less hipster they might find your background interesting. Ditto Nokia (yeah, they're supposed to die Real Soon (which I don't believe), but does that really matter to you?)

You might want to split your move out of banking into a cool company into two phases: first move out the bank, then move to one of the "cool" companies.

I'm kinda in a similar boat as yourself, and afaik, except for enlightened pockets, our industry suffers from a deep suspicion of experience and expertise in anything except the rage of the day.

In a black humour sort of way, at least you're a Java expert. Imagine plight of the C++ expert. :)

<comment><USER7> C++ experts actually have it good (in London at least). Almost without exception, low latency trading systems are built in C++ and being an expert will get you an exciting _and_ lucrative job pretty easily.

<comment><USER8> There actually a lot of low latency stuff being done in Java now. Using the Azul Zing JVM and tricks like the Disruptor you can do some amazing stuff.

</comment></comment></comment><comment><USER9> Perhaps you could help me out here, your quest is to find a 'decent job', what does that mean to you? Clearly you pay your rent, clothe and feed yourself on the bank job so by some definitions it is 'decent', no doubt it has some sort of retirement plan you can contribute to and some days of paid vacation.

What you don't say is what _you_ want to do. What are you passionate about? You know that "just doing your job is not enough" so you start a side project, great how did you pick it? Are you more passionate about it than your current job, if not why not? You had complete freedom to work on any side project you wanted. Do you even enjoy programming? Why do you do it? Why not gardening, or auto repair, or architecture?

People who are passionate about what they are doing are 10x better employees than ones who are doing it for some externally generated reason. Ask yourself what you really like doing and pursue that. You've got a job (great) and if you discover your passion is something else use your job as a springboard to cover expenses why you develop enough runway to leap into what your passionate about. Don't try to do that at a start-up though, its really really hard to be passionate about something other than the start-up's mission and be successful.

<comment><AUTHOR> As I wrote below, working in a engineering-driven company with product would tick all boxes. This is the goal of a whole quest. What you're saying about passion was reiterated on HN countless times and something to be passionate about is the main thing I lack in a job.

<comment><USER9> I'll try again, starting with this:

 _"... something to be passionate about is the main thing I lack in a job."_

This is backwards. A job generally won't give you something to be passionate about, passion comes from _inside_ of you. Passion is the thing you choose to do when you can do anything, passion is the thing you invest in when there is no obvious 'reason' for doing so, investing in your passions is its own reward.

Small anecdote, worked with another engineer at Sun who was struggling, and he asked me why it seemed so easy for everyone else and so hard for him. We talked about passion and its not 'easy' for someone who is passionate about something but it is 'fun' so they exude happiness digging into the problem not pain. At its root there is a attitude difference, just like people who are passionate about fitness aren't excited about doing exercise, they are being excited about how this exercise is giving them new capabilities in fitness. They look past the means and luxuriate in the ends. That is following your passion [1].

The engineer I knew realized his passion was helping folks get ahead in life, he was always happy seeing someone get past a challenge an on to something more fulfilling. He ended up following that passion and last time I heard was living in Mexico helping folks build sustainable communities without the stigma of 'technology backwardness.'

Ok so back to your observation, there are lots of 'engineering driven companies' they make all sorts of things from sex toys to intercontinental ballistic missiles. Its a wide range and 'engineering driven' doesn't say a whole lot about passion other than solving problems. But if solving problems in an engineering context is what you like to do, then you might start looking at jobs for program manager rather than engineer. I don't know of course, I'm not you. But its a way to approach your question which I suspect would get you further down the path.

[1] A litmus test might be, imagine you've been in a car accident and you're paralyzed from the neck down. What thing did you wish you were doing yesterday before the accident? Lots of self help books suggest pretending today is the last day of your life, what do you want to spend it doing? Etc etc. The bottom line is people with passion make a difference, and folks can tell that in an interview from a mile away if you're pursuing your passion or just marking time.

</comment></comment></comment><comment><USER10> 1) Contribute to, or publish, open source, the more the merrier (it's a very good way to get judged by coders)

2) Keep a technical Blog and write about interesting stuff you did. Try to offer a service for your readers covering topics and explaining things to help them along, attracting an audience.

3) Get a twitter account to tweet about technical things that interest you, get followers that like what you tweet.

4) Participate in other coding communities (like stackoverflow) where you can help people along.

5) Make sure that your entire presentation is geared towards steering people towards your blog and your software.

6) Forget resumes. Nobody reads them. Polish yours leaving everything but the bare essentials out, try to smuggle in your blog and open source software links.

7) Cultivate a larger network, go to local or nearby meetups of the crowd doing stuff you're interested in.

8) Publish more software on the app-store (or anywhere), write about your software on your blog.

9) Participate in standard bodies.

10) Freelance and/or run your mini company besides, be sure to write about the awesome stuff you did while doing that on your blog.

In short, get known for doing things. Don't think people read the resume and show an interest.

And if at all possible, let people come to you with offers. Not the other way around, if they come, you already know they're interested.

<comment><USER11> This is all really great advice.

</comment></comment><comment><USER12> First, it is very hard to hired by just applying - you need to find somebody in the company to introduce you. In relatively long career as a dev manager in a big corporation, I have not hired a single engineer via job post (HR will forward resumes that were never even near match - it was so bad that before I left VP hired a special recruiter just for his team).

Second, find a good recruiter. They do help to find an exact match.

Third, you probably need to be looking into Informatica, Microsoft, Oracle, etc. - companies which are "product development" oriented. It seems like Facebook, Amazon, Google, and Twitter are really not "product development" oriented companies: they use technology but technology is not their product. So my feeling is that they are looking for more "very very smart and sharp people" than "I can ship people" (I read somewhere how it is easier to get hired in these companies if you are "smart and did nothing" then "smart and here is what I did"). [ I'm just saying that they weight candidate characteristics differently - nothing wrong with that approach ]

<comment><AUTHOR> Thanks for the advice. Recruiters are a specific pain point. When looking for a bank job, they help a lot because they push candidates ahead and because bank jobs are all alike. During the current job hunt, I encountered recruiters that were trying to place me as an IT person at Heathrow Airport. I don't apply to positions advertised by recruiters any more — descriptions are always misleading and they care very little about what you actually looking for. Do you think it's a wrong thing to do?

</comment></comment><comment><USER13> Meant constructively:

1\. You didn't say how old you are. After 30 you should rely on relationships and reputation more than your ability to describe skills. Tech employers want malleable underpaid wage slaves.

2\. Perhaps working at a bank makes you look unattractive. I wouldn't want to hire anyone that was brain damaged from working at a bank.

3\. Perhaps you are too narrow and apply for broad jobs.

4\. Perhaps the inverse of 3. Consider what job you are applying to and customize your approach to that.

5\. It's a numbers game. Keep on trying!

<comment><AUTHOR> 1\. I'm 31, this is not stated in my resume, but can easily be concluded from my education info, etc.

2\. What can fix this image in your eyes? Github account?

3\. Maybe this is the case. When I was searching for a job last time (and landed this job in a bank) I noticed how differently banks and non-banks react to my resume. In short, for banks I have worked in a company they know and did the things they want to do too. For a software companies, I worked in a boring BigCo and did some things they never will deal with. It's all great but it's not clear how to fix this — I wouldn't say there's loads of attractive tech firms in London compared to SV, so if I'll narrow my search to try to find better suited companies, I'll be left with that Twitter opening.

5\. Thanks for that!

</comment></comment><comment><USER14> I never had experience interviewing someone with your background, but I will try to give my thoughts.

They are two steps here, first to get the on-site interview and then to pass the interview. You talked about problems in both of them.

First, how to get the interview. For me, the trick is to get a reference and apply to the right position. You have specific background in some languages and environment. It is hard for the companies to decide where to put you. If possible, start with networking with people in your target companies. Get to them to know you first, they will help you on finding the right position to apply to.

About the Twitter manager who didn't reply. Try again, with other methods. Find a direct reference instead of simply email him. Or you can hang out with some other Twitter engineers first and they may help you out.

Second, for the interview part, there is little description here so I am not sure if you did anything wrong. Generally, solve the problem by working and discussing with the interviewer; showing your passion; and relate yourself to the company. It is hard for the interviewer to see the value of your project and weigh them during the interview, solving the problems they give is more important.

Also, there might be a bias since you have the major bank background. I cannot elaborate or back that up though.

<comment><AUTHOR> Thanks for the advice. I think I have less trouble passing the interview (Google — I hope — is the case where false negative has happened) compared to getting there. On the HN I read a lot about smaller companies looking for all- rounders and I try to position myself as such when I apply. The trouble here is that I see very little positions of that sort being advertised. Startups seem to like RoR and Django juniors the most. I guess, networking is the answer here, as you point out.

Finance industry in London is very insulated (i.e. people never leave banks except for other banks because of the huge salary difference banks able to offer), so networking is a hard thing to crack quickly. I'm working on it though, so at least this I do right.

<comment><USER15> > Startups seem to like RoR and Django juniors the most.

Then why aren't "Django junior" and "RoR junior" on your resume, with links to your portfolio? Never mind faking it, it's not hard to _become_ a gonzo Rails artisan who knocks out agile websites more often than most people wash their car. And you get to the interview and they are pleasantly surprised to find you are a hardcore backend engineer as well.

</comment></comment></comment><comment><USER11> I don't believe you have really given us any points that would help us give you any advice.

From my past experience interviewing java developers with LONG runs developing java such as yourself was extremely boring. All of their resume's looked the same. Full of java related keywords. All with the same experience. None of them had soul. None of them seemed to develop anything out of their comfort zone. NONE of them knew what github was nor had an account.

Out of 300 people, over about 6 months we found only 2 java developers that seemed to be worth anything outside of their extremely large teams they were used to working in.

Now I don't know anything about you nor have I seen a resume of yours but I will say that when I see Java developer with 10 years experience writing java, it sort of already puts a negative connotation on the experience right away.

If your trying to sell yourself for a startup, your going to have to do some major overhaul of your selling points.

You are really going to have to highlight your experience with other technologies and things you are doing to keep yourself current with the times. What have you done in the past 10 years besides java? A lot has changed since 2002 in the world of development!

Last but not least, I can't believe you turned down an opportunity to work in a new environment. If all you have is years and years of java and someone (even if your personalities don't match) offers you a job doing something else and you don't take it! Its obvious that times are really not that tough in your current position.

Your going to have to suck up your pride a little and get some relevant experience in the job type you want before you can become picky about personality matching. You should be happy for the opportunity to even get considered.

Knock that AOL syndrome out of your nose and dig in. If you really want out of the banking industry, get a job for the experience. NOT to meet your new best friend or be on extremely hipster wavelengths with your boss...

To me you don't really sound all that desperate if your passing up job offers.

<comment><AUTHOR> I can't comment on me refusing startup offer here without revealing too many details so I won't.

Regarding your other points: I think from the description it's clear that I was doing something meaningful after 2002 (Haskell and Python should be at least noticeable).

Regardless of that, during that 10 years I did lots of stuff. I implemented a blazingly fast key-value storage backed by file-based B-tree from scratch. I wrote a concurrent distributed pool. I'm not a J2EE/Spring/whatever guy. Now one thing I hope is that people reading resumes prefer this type of experience to 20 line Node.js hacks.

<comment><USER11> I'm just not sure what sort of position you are looking for, which is why its going to be near impossible to tell you the magic word that will keep your resume out of the trash bin.

I will tell you from personal experience, its a daunting task reviewing resumes.

I believe that most have it right, if you want into a big player your going to have to figure out the inner workings of the company to figure out how your resume gets to the people in charge.

Its really a numbers game, don't get discouraged and send your resume out a hundred times over. Tailor it to each position you are trying to get. If you want a backend dev position, then make sure your resume looks like your a backend dev. Also try to figure out what recruiter companies the business are working with. Every company uses recruiters, figure out who they are using and get in the door with them first. find out how many people they have placed at said company. If they havent placed anyone there then you probably don't have that big of a chance. However, if they have placed someone there before, then try to get some inside info as to what the managers are looking for.

Hiring managers are more likely to give feedback to recruitment managers than directly to the candidate. Candidates tend to get emotional when told they don't have the position. No one wants to deal with that.

Another thing to do is to work with a professional tech resume writer. Your a professional developer, not a professional writer. Have a professional take a look at your resume to make it clear, concise and to the point and seriously nobody reads a 10 page resume!

</comment></comment></comment><comment><USER16> Hi, feel free to mail me direct.

B2B telecoms, highly available low latency systems. Zero brand name but fantastic engineering driven culture. Small enough for individual impact but big enough to have some very interesting projects and clients. London based.

</comment><comment><USER17> I can't speak for the people who have interviewed you and rejected; but a couple comments spring to mind:

1) You're in London. Most of the companies you're thinking about are based in the San Francisco bay area, and this is where all the truly exciting stuff goes on. Now, I'm sure there's a technical community in London; but there are very few places in the world where technical people are in demand and where there is a lack of supply. And those places each have different prominent industries. In New York City, the smartest minds become Wall Street Quants. In San Francisco, they make web-technology startups. I imagine in London, the default is in the financial industry.

Concluding my point; this may not be a possibility for you, but if it is, you may want to look outside of London. You'd probably get something in a heartbeat in San Francisco, and I'm sure you'd do fine in NYC, too.

2) You're an "old school" guy; as you said. I'm doing a startup in SF which has grown tremendously (now >30people and barely a year old) and the growth has put us in a situation where we're desperate to hire more smart and skilled people. I have interviewed and rejected many people (including Googlers) who were much smarter than myself, having experience with Big Data, Java, C++, and even artificial intelligence. Pure skill is nowhere near as important as your mindset, and how you will fit within the company culture. People who come from an environment where they sling Java for a big company have a tendency to not fit well with the way we all take responsibility for our projects, iterate and release fast and often, etc.

Now you may be looking for a change of pace. You may be into the idea of switching methodologies and toolset; but that's something you need to make clear to your interviewers. Your experience is like a background check. It tells us that you're a good & smart programmer. But the hiring decision is going to come down to the question: "How well do we think this guy is going to fit in here?"

That said, if you're looking for something in San Francisco, we're hiring. Shoot me an email at firstname.lastname@example.com.

<comment><USER18> There's a huge startup community in London. Huge community of VC's, angels, accelerators and startups. The government is aggressively pushing startups through TechCity and is redeveloping apart of the city for startups. <http://www.techcityuk.com/#!/home>

Most major US startups are basing their international offices in London.

Of course you are right, until a few years ago most development was for the financial industry but it's all changing.

</comment></comment><comment><USER19> Couple of thoughts:

Build your physical network: The best way is to attend User Group meetings and Conferences. With time try to get involved as a speaker and with the organization of these groups.

Built your online network: I would recommend contributing regularly to an open source project or two. Also you can blog to help build your online presence.

Code outside of your work more: Glad to hear you launched your iPhone app. I think working on another project is not a bad idea. This is not to say that what you have already done is not enough, just more of a 'always be delivering code that is not necessarily on your employers schedule'. You seem to have a background in 'big data' projects - I would try to build something on a similar topic but using some of the open source projects (like Hadoop, or Twitter Storm).

Type of company: You seem to be a little in between. Good coders want to work for software companies (as opposed to being part of an 'Enterprise IT' shop). Your bank background might mean that people in 'Software Companies' will not pay as much attention to you. You can make the transition, but it is not as easy.

Headhunters: Try talking to one or two of them. They can help find you a company that is a good fit.

There are lots of points above, just choose the ones most in line with you.

</comment><comment><USER20> Are you tailoring your job application process to each company? If I'm at Amazon see a bunch of Java I might think "Ok, I can find 20 people with these Java skills." Instead of showing Amazon why YOU are indispensable for THEM.

Also, I'm guessing that Google, Twitter, Facebook & Amazon get several applicants a day. So having a contact on the inside might be more helpful.

A somewhat similar story was I tried to work at a consulting company here in town, and got turned down. Two years later I had worked with a couple of their consultants at another job, spoke at a user group meeting (where the leader was another of their consultants). When I left my job for a different one I had 2 people from the agency talk to me about applying with them.

I had already accepted the offer from another place, but in that time I was able to showcase my skills to the point they were at least interested in talking to me. Whereas 2 years prior they weren't.

The lesson? Network, if you're as good as you say you are, do some user group speaking or showcase your code to some people. Hit a couple local/regional conferences and start talking to people. As they get to know you, not only might they hire you, but they might also pitch your name to someone else.

</comment><comment><USER21> Perhaps other HNers will correct me, but I can't think of too many startups that are Java shops. In fact, I can't think of _any_. Java's a big corporation language and it just doesn't map well on a hacky nature startups.

Another thing is not the resume itself, but its _format_. The most effective resumes I've seen (those that get the interviews) were quirky one- or two- pagers. Can you perhaps strip yours of all personal info and post here?

<comment><USER22> Java as a language, maybe, but Java as JVM - lots of interesting stuff going on there that many other people leverage - big data plays, big search (solr, elasticsearch, pure lucene), mobile (android), alt.java stuff (jruby, clojure, groovy, etc).

Someone who is 100% just a Java-the-language developer may be stuck at a bank or other bigcorp. Someone who's got a lot of Java experience and can use the best aspects of the JVM ecosystem while also leveraging other non-Java tech should be able to do much better than the OP is saying he's doing.

<comment><AUTHOR> Thanks — that's exactly somethig I wanted to reply with.

<comment><USER22> Thanks. Good luck to you. Have you considered going independent/freelance? You may find there's a market for someone with your skills, but there's no full- time employment options for someone with your skills, drive and experience.

</comment></comment></comment></comment><comment><USER23> Have you tried <http://hackerjobs.co.uk/> \-- it's ran by a HN user.

<comment><AUTHOR> Looks good, but:

\- Java: 0 results \- iOS: 3 very junior positions, only 1 London based \- Python: 5 results, 3 of which are very junior + 1 discloses zero info about the opening.

</comment></comment><comment><USER24> Update your LinkedIn profile. I am getting something like 1-2 proposals each day there and some of them are really really interesting ones. If I'd be looking for any new roles or contracts that would be a really nice source of leads.

</comment><comment><USER25> Please drop me a line on firstname.lastname@example.com. I am CEO of a UK start up that uses Java.

</comment><comment><USER26> First thing that comes to mind is maybe you're underselling your successes in your resume. In particular, if you've been working a long time in the banking sector and you _don't_ mention sufficiently prominently that you have experience outside of that domain, then you could get pigeonholed.

Second would be that there is something about your non-technical skill-set that is sending up red flags. What feedback did google UK give you after the rejection? Was it a bad fit technically or culturally?

</comment><comment><USER27> I think the issue must lie in your CV - usually they're just way too long! You should be making it to at least initial interview stage every time, especially with your experience.

If you'd like to do an interesting A/B test, I'll gladly re-write your CV for you, set up an extra e-mail address & see which gets you best results! If it gets you a job you can give me great feedback.

</comment><comment><USER28> Without seeing your CV or code examples, it's difficult to tell where the main areas of concern may be. And that's if there are any areas of concern at all, you could just have hit a streak of bad luck. But, I will tell you something I've learned about when selling yourself to potential companies.

A while back I ran across a TEDx video titled How Great Leaders Inspire Action given by Simon Sinek.You can watch it at the TED website, but the summary of the talk is "People don't buy what you do, they buy why you do it."

The idea is what can you do to make the hiring person get excited about you? You're a Java developer - there are a lot of those. You have a lot of experience - so do a lot of other candidates. Education - others have it to. Basically, what makes you a unique and memorable candidate?

You even said it yourself - you didn't take the job with the startup because you didn't feel you and the founder were on the same wavelength. Well, that's what the hiring company wants to get from you. They want to know you're on their wavelength. You can't communicate that by telling them what you can do, or how good you are at it. You communicate that you're on the same wavelength by telling them why you do what you do. You have to give them something that gets them excited about you as an individual, something that makes them forget about the other candidates.

That's my perspective, and it's worked out fairly well for me. Especially now that I'm a senior developer, I rarely talk about what I do. I've had years of experience, it's just expected at this point that I have the skills. I wouldn't have been so consistently recruited or promoted if I didn't have the skills. That means the skills I have aren't worth talking about at all. On my own site, and how I present myself in general, I don't talk about my capabilities. I talk about the WHY.

Note: "to get a paycheck" will not suffice as an answer to why you do what you do. You have to have a real answer for this question, and it is a problem. A lot of people don't know why they do what they do, which is why there are a lot more people who can't figure out how to get to the top. This may even require you figuring out what it is you really want to do, and switching job types or careers completely. Any company that hires someone who just wants to collect a paycheck isn't a company where anyone is going to be happy. You'll just be in a cubicle next to dozens of other unhappy people who only showed up that morning so they can continue to collect their paycheck.

</comment><comment><USER29> When I was searching for a job, I made a CV that looked different and would maybe catch the eye of the poor guy flipping through hundreds of resumés. Worked great for me. Make a great first page/impression, and a regular second page. <http://dl.dropbox.com/u/2938449/CV.pdf>

</comment><comment><USER30> That description sounds like exactly who Twitter would want to hire. Knowing Scala beforehand isn't a requirement; I certainly didn't. It's possible that by sending the resume only to a specific engineering manager, it got lost in the shuffle. Have you tried following up, and/or contacting recruiting?

<comment><AUTHOR> Do you work for Twitter? Can I email you privately (there's no email in your profile)?

</comment></comment><comment><USER31> Are you stating current salary on your application letter/CV or anything else that might make them think you might want banking-level remuneration? Remember that the City-startup transition is likely to halve your annual income or more, especially if you're quite senior at the bank.

<comment><AUTHOR> I don't state my salary but I heard from tech firms something in the vein of "we can't match a City salary". Sure, I'm ready to take a salary cut for an interesting opportunity.

<comment><USER32> But do you say that you are willing to take a non-City salary?

<comment><AUTHOR> Only after a discussion starts (i.e. not in my resume). Salaries are usually not stated for the positions anyway, so this seems like a fair game to me.

<comment><USER31> Sorry to resurrect after three days... I think it might be worth saying something upfront. I agree that you shouldn't be precise and say how much you're looking for, there's no need to throw away a negotiating point early. But something in the cover letter that hand-wavingly made it clear that you understand that startup salaries are lower might help.

For example, "I'm looking for something that pays me back in work I enjoy, rather simply financially like my current high-boredom, high-remuneration City job".

...OK, that's pretty terrible. But something along those lines, maybe?

</comment></comment></comment></comment></comment><comment><USER33> Anecdotally, I know some recruiters who are timid on recruiting technical people for engineering roles under the premise that after being in industry this long the person should have become a manager or a VP of Eng. type or CTO type more than a senior engineer.

</comment><comment><USER34> I don't know if you have any TDD etc? I'm looking for good people right now: [http://www.linkedin.com/jobs?viewJob=&jobId=3652085&...](http://www.linkedin.com/jobs?viewJob=&jobId=3652085&trk=job_nov&_mSplash=1)

</comment><comment><USER35> I wonder if some of the issue is that maybe that a lot of the people running startup type companies are perhaps younger and maybe less experienced than you.

So in a sense it might be frightening hiring someone with more experience, they might also be worried about your salary demands.

There also seems to be a (probably unfair) stigma that banks are where mediocre programmers go to die. So there may be a fear that you have been hopelessly tainted by Enterprise SOAP or whatever and need a 2000 page spec document to get anything done.

If you have skills writing performance sensitive code there is a market to be exploited in terms of contracting/freelancing as this might be a gap that can't be easily filled by more general programmers?

</comment><comment><USER36> I'd suggest going through a reference rather than to push your way in the front door. If someone is told by someone they already trust that you can deliver that's going to be a lot more effective than you telling them yourself.

</comment><comment><USER37> tl;dr: Bank guys are not cool, hey they caused the GFC! - how would you in with the team at a "cool software company" (your words).

Without even digging in, I wouldn't hire you for the following reasons:

1\. We don't use Java, it's too enterprise based

2\. You've worked in banks for 10 years? Can you be creative?

3\. Banks pay very well, you salary expectations are unrealistic.

4\. Whilst you appear to be very capable, you also come across as having a huge ego.

I would recommend going after a job in one of the big consulting firms. You would be a far better fit for them. Oh, wait! It appears, that's not what you want to do.

</comment><comment><USER18> Go to Silicon Drinkabout (<http://silicondrinkabout.com> or Hacker News London and talk to some startups. There are many highly funded startups that would love to have you on board. There are a number of big web startups in London with hundreds of employees and many of these founders go to these events.

As another user said <http://hackerjobs.co.uk> is also a great resource. Look past Twitter, Facebook, Google.

<comment><AUTHOR> I've been to all the meetups you mention. Some of the contacts I got there were incredibly useful, but nothing led to an interesting opportunity.

I see you're very integrated in the community, could you maybe mention couple of companies you think are interesting? Maybe they went past my radar.

<comment><USER18> Here's some: Lyst, Songkick, Box, Moshimonsters, Peerindex, Smarkets, GoSquared, Nuji, Hailo, StylistPick, Duedil, GoCardless, Moo, Huddle and GroupSpaces

</comment></comment></comment><comment><USER38> In terms of networking, go to web dev type meetups Rails, Django etc they tend to have a lot of people hiring or looking to hire. You also gona meet a lot of independent contractors who tend to have large networks, tell people you can make iPhone apps.. profit

Big problem might be that bank in UK pay A LOT, so people do not expect you want to take a pay cut. Pay cuts suck.

</comment><comment><USER39> Nowadays just having java and or .net or your resume can get you turned down, specialy at hipster startups.

<comment><USER32> Those hipster startups will probably fail then. That is an amazingly bad criteria.

Check for creativity? No. Check for passion? No. Check for problem solving ability? No.

No experience in the dominate internet development language for the last 15 years: Awesome!

</comment></comment><comment><USER40> Why do you want to work at a startup?

<comment><USER41> OP applied to Google and Facebook. He's not looking for work at a startup. He's desperate for a place of work, and that's it.

<comment><USER11> He isn't desperate for a place to work. He already has a job. Like everyone else, he wants to be feel like his work matters. After developing for a long time, I feel like thats what you crave the most. Working with other passionate people, hopefully most can be smarter than you and working on something that is meaningful that you can be passionate about.

</comment></comment></comment><comment><USER42> If you want to drop me your CV I can probably give you some feedback.

If you're happy with Java I'd recommend applying to the big data startups in London (Datasift, Acunu, Causata, Plantir, etc.) as they're probably be most compatible with your skill-set.

</comment><comment><USER43> The problem with IT people is that they expect a recruitment process to be like a set of algorithms...Your attitude / sense of entitlement probably irritates people...work on your personable side.

</comment><comment><USER44> Have you contacted any recruiters? If your resume is as rich as you say it is, I can't imagine it taking much more than a week or two for a recruiter to find you a suitable position.

</comment><comment><USER45> FWIW we are a Java-based startup that just hired our first London engineer, so there is stuff out there.

He was someone that had actually contracted with us awhile back.

</comment><comment><USER46> Hi there, please drop me an email (firstname.lastname@example.com), we're looking for a Java dev now for Timetric for data crunching/visualization.

</comment><comment><USER47> Hey - I'd be interested to chat about jobs. Could you do me a favour and drop me your email address at firstname.lastname@example.com ?

</comment><comment><USER48> You don't network enough. It's not just about skill or resume, you have to come across to someone in a good way.

</comment><comment><USER49> Move to SFBA?

<comment><AUTHOR> I'm not a US citizen</comment></comment>


Optimizing Lisp Some More - <AUTHOR> http://nklein.com/2009/06/optimizing-lisp-some-more/

<comment><USER2> If he's really going for optimization, he might consider passing in the 'ret' array rather than creating a new one each time. (Or even better, using multiple-values return to pass them stack allocated).

It also might be good to use a macro or compiler macro to unroll the loops, then you don't have to worry about manipulating 2 looping pointers. All you'd end up with is a bunch of constant arefs and addition/multiplication.

He also might want to set debug to 0, although I don't have any way to test that (or any of this) at the moment.

Then you get something that looks like this:

<http://paste.lisp.org/display/120946>

I haven't tested it (I don't even know if it works!), but the disassembly looks faster...

/rampant speculation.

</comment><comment><USER3> The only difference between the SBCL decls + noopt version and the decls + optimizations version, at least when I compiled it with SBCL 22.214.171.124, is the number of generated nops used to align the beginning of the inner loop which really shouldn't be noticeable at all. I'm guessing the 60ms difference between the two is just noise rather than the appearance of a difference in code generation.

</comment><comment><USER4> I think the author can make the loops faster by adding (the ...) forms where he adds and multiplies numbers. Also, he should declare the types of his loop control variables. Just a theory, though: I haven't run the code or looked at its disassembly output.

</comment><comment><USER5> why is clisp so slow? design decisions? has development stagnated?

<comment><USER6> Last I knew, CLISP was based on a bytecode VM while SBCL and Clozure generate machine code. I think there may be some work on adding a JIT to CLISP but as far as I know it's still experimental.

<comment><USER5> That would probably explain it. Seems like it might be a good use for GNU Lightning.

<comment><USER7> CLISP uses GNU Lightning in some superficial sense, but it's a compile-time option not normally built into release binaries.</comment></comment></comment></comment>