523 karma · joined December 27, 2008
The idea of Glamorous Toolkit is that it’s a collection of tools you use to solve software problems by making little explanatory tools. You might start out with some bigger problem like “I need to make this service fast”, come up with a question like “what does the flow of data I care about look like through the service?” and then try to answer that question by making tools that could analyze/visualize logging output or a stack trace or whatever makes sense in your software’s context.
The technique of “making little tools that explain to help answer a question” is Moldable Development, similar to how Test Driven Development is “make a failing big feature test loop, write little tests and make them pass until the big one passes”.
You can make little tools to explain away questions you have while you’re working with plugins or shell scripts or whatever you’re comfortable with and that’s “Moldable Development”. The Glamorous Toolkit just happens to be a nice system of tools that make it easy to make more little tools to help explain away problems.
Hope that helps! Lmk if you want to see some examples.
Source and bias: I worked closely with the developers before I had to take a break from work and computer stuff.
Shopify is the best platform for online stores, as well as a diverse company of happy polyglots who hack on everything between UX, data warehouses, and low-level CRuby VM performance issues. We value personal growth, and developer quality of life in a huge way and show it by having safe deployment systems anyone can trigger; facilitated retrospectives + off-sites with Corey Haines; GitHub and PRs for everything; small, mixed teams of folks with 0 to 30 years of experience, and encouragement from the still-hacking CEO to give back to open source on company time.
http://shopify.com/careers – apply to any dev/ops job and mention HN and I’ll give you a hand.
Here’s a sampler of the current teams at work:
Reports
High throughput + realtime tools for customers; we hired the author of SkyDB to continue making it more awesome. People on this team have backgrounds in low-level kernel work, Smalltalk VM development, and deployment of national wireless systems.
Stack
The right thing to do should be the easiest thing to do; this team works on things like implementing Kafka across the entire Shopify system to let anyone pub/sub to any call-site, opening the door for easy instrumentation/experimentation.
Performance
We’re in the process of sharding Shopify in order to isolate and better service stores experiencing $3000000+/hour flash sales. People working on IBM’s specialized JVM are now hacking here, while also contributing context threading patches to CRuby off the side of their desk for fun.
Point of Sale
If you like making beautiful hardware + beautiful software that you can see used by customers who tell you this is the Holy Grail of retail systems, then you go here.
Operations
Engineers here work on projects like Chef, distributed cloud+iron failover systems, DDOS mitigation stuff and our new datacenters.
More teams
Data (giant, columnar data-stores + PhD withbackgrounds in finance and astrophysics)
Admin (Batman.js + UX professionals + designers who code)
Self help (machine learning for people learning)
Apps (JS SDKs for seamless iframes + APIs)
Checkout (provide low-latency experiences while dealing with high-latency payment gateways; don’t drop any of the zillion$$$ going by)
Platform + Growth (biz dev science + gamification of ecommerce education)
Internal tools (Fast Company-covered staff bonus system aka “Unicorn”, Bayesian classification of customer questions assigned to support experts, hand-made phone queueing systems wrapped around Twilio, etc., etc.)
Billing (hard-core testers need only apply)
Payments (integrations with Stripe + fraudster f-ing)
Core/API (everything not here)
(more but secret)
Seeking full-time programmers, and data analysts to work in Toronto, Montreal, and Ottawa, Canada. We’ll help with visas. Seeking operations staff anywhere (remote friendly).
http://shopify.com/careers – apply to any dev/ops job and mention HN and I’ll give you a hand.
Have you tried filing a radar ticket for this issue?
This bonus/props thing is really just for fun and recognition more than anything else. Performance reviews and salary adjustments have their own separate process.
There’s an email/newsletter that’s auto-generated every few weeks that summarizes what’s going on and makes it easy to remember to spread some unicoin around.
We anticipated the need to see this kind of behaviour, so there's clear auditing trails for everything that HR and Accounting can see where the bonus money's going.
Having said that, we haven't seen this problem appear yet.
Backstory: Shopify.com was recently ripped off as Shopqi.com – the job was pretty impressive! They copied our brochure, wiki, theme store, and from the look of their Rails app, a good chunk of our domain models too. Nice to see the Chinese version of Active Merchant as well.
The author of the ripoff posted the source on http://github.com as open source: https://github.com/saberma/shopqi
Tobi, Shopify CEO, decided to make a pull request in response.
Looking around the C&C rooms that had “X millions of casualties” on maps of blast epicentres really makes you think about what living during the Cold War must have felt like.
The first version of Batman was written in plain Javascript, but Shopify has really been falling in love with CoffeeScript, so we decided to rewrite it before it was released.
Batman.coffee is more correct but sure doesn’t have the same ring to it…
Shopify would use this to write the client-side parts. We can now save on a lot of server-side rendering of pages every time a request happens; instead we just send back JSON and Batman.js knows how to change the page accordingly.
We’re already using it internally for non-core projects like our phone support system (Batman.js + Faye + Adhearsion) – it makes for a really responsive web app that’s easy to maintain.
Expect to see this in the core Shopify product very soon :)
Encoding.default_internal = Encoding.default_external = "UTF-8"
but as JEG states in http://blog.grayproductions.net/articles/ruby_19s_three_defa..., this throws warnings and may still not fix things.Encoding issues rank up there with Array.to_s pains when moving to 1.9
Was there any code borrowed?
While you’re researching, check out Montreal’s Foulab: http://www.foulab.org/ http://makekw.org/montreals-foulab-featured-documentary-shor...
Rhodia [http://www.rhodiapads.com/] and Whitelines [http://www.whitelines.se/en/] are great for sit-down work.
-Edward from Shopify (around the corner from you guys)