The Rust std lib HashMap is powered by the hashbrown crate which is also a port of Swiss Tables. At a brief glance Ruby/Python don’t use this approach but I don’t see any reason why they couldn’t.
Python's hash table type, dict, promises that it remembers insertion order. If you put the mapping 5 => "dog" in first, then when we ask what is in the dict we'd get told 5 => "dog" first, duh.
Historically Python had a more conventional but very, very badly implemented hash table type, the "I can't believe it can sort"† of hash tables. Somebody wanted a hash table type which remembers insertion order because Python programmers have a bad habit of writing "Golden tests" in which that order matters even though in a good modern hash table type it's not guaranteed, so they built one. But because the built-in hash table type was garbage, this new OrderedDict type was much faster and much smaller despite solving a more difficult problem.
For a little while it was unclear if Python would decide to rewrite their dict type to have decent performance or just embrace this new better alternative and then they decided that because it's beginner friendly they will just embrace the OrderedDict and require that this type has ordering.
However, a good hash table doesn't inherently have this property, and that goes for the Swiss Table the same as other common designs. So they can't swap dict out for a Swiss Table without breaking their own promise that the dict type preserves insertion order.
If you're used to a language where this doesn't happen such as Rust, or C++ or Java or any number of other programming languages, that insertion ordering rule seems crazy, but if you've never used a programming language at all before and have never even wondered how dict works it seems obvious that this is how it should work.
Yes, Ruby also has the same self-imposed constraint on insertion order. I agree it makes it more complicated to change the hash table implementation but it seems it wouldn’t be impossible to adapt Swiss Tables to support this. For example, by storing the “insertion number” (an incrementing integer) in each bucket, and possibly using table groups (as Go does) so that you only need to sort the buckets in a group, not the whole table, in order to yield entries in order. But this is just a naive sketch and I am not an expert on hash tables!
ihtabs preserve iteration order and have performance competitive with swiss tables (while not requiring as high a load factor): https://github.com/vnmakarov/ihtab
GoCardless (YC S11) | London | DevOps, Data, Backend and Frontend Engineers | Onsite | Full-time | Visa
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our wheelchair-accessable office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: an intro call, one coding challenge, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
applied here. Got a call from hr. Submitted a tech assignment. Then they reply with -other candidates are better ...
They didn't even evaluate the assignment.
GoCardless (YC S11) | London | DevOps, Data, Backend and Frontend Engineers | Onsite | Full-time | Visa
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our wheelchair-accessable office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: an intro call, one coding challenge, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless (YC S11) | London | DevOps, Data, Backend and Frontend Engineers | Onsite | Full-time | Visa
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our wheelchair-accessable office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: an intro call, one coding challenge, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless (YC S11) | London | DevOps, Data, Backend and Frontend Engineers | Onsite | Full-time | Visa (full-time only)
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our wheelchair-accessable office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: an intro call, one coding challenge, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless (YC S11) | London | Frontend, Backend, SRE, Data Engineer | Onsite | Full-time & Interns | Visa
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our wheelchair-accessable office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: a couple of phone screens, one take home test, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless (YC S11) | London | Frontend, Backend, SRE, Data Engineer | Onsite | Full-time
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: a couple of phone screens, one take home test, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless (YC S11) | London | Frontend, Backend, SRE, Data Engineer | Onsite | Full-time
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can[1] and regularly host meetups and hackathons at our office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: a couple of phone screens, one take home test, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can and regularly host meetups and hackathons at our office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: a couple of phone screens, one take home test, then a couple of onsite interviews (pair programming and some chats - no whiteboards!)
For more info and to apply: https://gocardless.com/jobs.
If you've got any questions, drop me an email (it's in my profile).
GoCardless is building a payments network for the internet. Since 2011 we've been focused on simplifying Direct Debit for small and medium companies (who previously had no access to it) and we're now expanding to serve the largest companies (think newspapers, utilities) and connect with existing payment systems in countries all over the world. We already support the UK and Europe and are aiming to expand to more countries over the next year.
As an engineering team at GoCardless we care most about stable, reliable, understandable code. We rely on testing and code review and a culture of frequent constructive feedback. We define and manage our own roadmap and run projects in whatever way works best for us.
Our stack: Rails, Angular, Postgres, Elasticsearch, Docker, Chef.
We also have a bit of Go and Python knocking around.
We love learning new things and contributing back to the community. We open source everything we can and regularly host meetups and hackathons at our office in Angel. We have a weekly bookclub within the team and give internal (and external) talks about things that interest us.
Interview process: a couple of phone screens, one take home test, one onsite interview (pair programming and some chats - no whiteboards)