Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Square Corner Blog

    corner.squareup.com · Company blog · on HN since 2010

    Square's engineering team writes about mobile development, open source tools, databases and hiring practices at the payments company.

    Visit blogHN submissions
    Mobile & AppleOpen Source & LinuxProgramming
    What HN says

    HN commenters cite it for the Shift MySQL migration tool and especially the Android Fragments post, which they use to argue the Android lifecycle is painful.

    Stats for nerds
    93HN people shared it
    102linked in comments
    2.5Kstory points
    Aug 2016last shared
    2010people per year2016

    Top posts on HN

    1. 1
      Square Market Accepts Bitcoin
      1 person · 319 points · first shared 2014 · 129 comments on HN
    2. 2
      PonyDebugger: Chrome Developer Tools for Native iOS Apps
      1 person · 278 points · first shared 2012 · 44 comments on HN
    3. 3
      Square open-sources its Vim repo, Maximum Awesome
      1 person · 245 points · first shared 2013 · 141 comments on HN
    4. 4
      Reversing Bits in C
      1 person · 216 points · first shared 2013 · 89 comments on HN
    5. 5
      A Comparison of Go Web Frameworks
      3 people · 203 points · first shared 2014 · 35 comments on HN
    6. 6
      Square Releases Open Source WebSocket Client for Objective-C
      2 people · 175 points · first shared 2012 · 19 comments on HN
    7. 7
      Logging can be tricky
      2 people · 138 points · first shared 2014 · 74 comments on HN
    8. 8
      IOS Integration Testing by Square
      3 people · 133 points · first shared 2011 · 27 comments on HN
    9. 9
      Ember and D3: Building responsive analytics
      2 people · 104 points · first shared 2012 · 16 comments on HN
    10. 10
      LeakCanary: Detect all Android memory leaks
      1 person · 101 points · first shared 2015 · 11 comments on HN

    What HN people wrote when they linked it

    • cmdrkeeneAug 2010

      To your issues:

      1) Yeah, organization is crazy. I think the method comparison is a bit unfair though. In theory, each step should be easily identifiable (like a method) but this is rarely the case given that most steps have complex regex matching (sometimes for grammatical niceness - e.g. (a vs. an), sometimes for other crazy town reasons). This makes not only automated indexing difficult (RubyMine tries...) but trying to keep hundreds of steps in your head is pretty hard. Especially one's you probably didn't write.

      The cool thing about steak is that helpers and "reusable steps" are actually just methods! Hello ctags :D

      b) Our case was:

      And the user "212-555-1234" should receive a text with:
      | Some "double quoted" and 'single quoted' text |

      Definitely possible in cucumber, but I prefer a string equality assertion:

      text.should == "..." (you have to do this anyway in the step_definition)

      c) Ben Maeby's email_spec is awesome and provides some steps for clicking on links in email. I still use the library in steak (just the raw rspec matchers though).

      The trouble is you have a url:

      http://coolsite.org/something/abcde22424aw3324234

      The matcher provided says:

      I click on the link "Link Title or URL". Since the token is random every time (unless you stub it, which is kinda out of the spirit of acceptance testing, but that's another debate) it's hard to say "Click on the link with the big ass token in it".

      You can definitely write a step like:

      And I visit the…

    • allencDec 2011

      As someone who does a lot of interviews and has switched jobs six months ago, I understand how it feels, on both sides. I've written my fair amount on the topics too (http://allenc.com/2011/04/how-to-score-a-google-onsite-interview/ and http://corner.squareup.com/2011/10/why-we-pair-interview.html).

      I think a part of it is ego, especially nowadays - some really good engineers are doing their own startups now, and when these companies start hiring they're looking for people just as good as they are, which means taking a page out of the Google/Facebook style interview process. I've met and worked with people who, while with great intentions, think great software engineering comes from graduate-level CS studies.

      That said, resumes and achievements aren't great indicators of success because so many people have good-looking job histories and many can also sound good just talking about their experience. For me, front-end web eng. has become a pain to hire for; too many candidates put down things they don't know enough about, and unless they have fully-viewable source online it's hard to tell whether they accomplished much of anything in their past projects.

      I do think our current standard of heavy whiteboard interviews is misleading, though, which is why I prefer pairing interviews when given a choice. Working with an engineer is a great way to measure cultural fit.

      And finally, companies are super careful with filling a position because while firing someone is at-will, the…

    • ezlSep 2013

      Thanks, FWIW the link I linked to was an implementation I did a week or so ago.

      I'm actually using a similar browser based curve implementation (I'm using the bezier rendering thing instead of a quadratic) -- https://github.com/ezl/signature-pad/blob/master/jquery.signaturepad.js#L787,790

      The first pad is the original that just draws lines between the sampled points.

      The second 2 actually take points and compute a cubic spline that runs through all the sampled points. The problem I have though is that it takes 4 points to compute a bezier curve, which means there are at least 4 sampled points worth of lag in determining what curve to render on the canvas.

      For example, 4 sampled points on a line should render a totally linear segment between the points, but then if the 5th points goes off the line, it actually impacts the preceding points -- so you have to lag even further to make draw the right curve.

      Even if you wait every 3 points to determine a quadratic that canvas's built-in can render, it creates some lag between the current mouse position and the rendered curve.

      If you keep rendering quadratics every 3 points, you'll get funny cusps where you join each of the quadratics (solution seemed to me to compute the spline for the fully determined segments of the curve).

      My janky solution is "draw linear segments until I have enough data, then restroke it with pretty curves". I didn't really understand the full implementation under the "responsiveness" section on…

    • glineApr 2013

      I'm not totally sure it will have been the right choice in retrospect but it was effectively this blog post:

      http://corner.squareup.com/2012/04/building-analytics.html

      that lead me to prototype using ember. I believe Square's analytics platform - not a "full" web app but a pretty substantial one - is still in production deployment based on ember. Of course, they're probably using whatever version of ember was around 18 months ago, and there have been radical changes since...

      It feels very likely to me that these javascript frameworks represent a substantial component of the future of this kind of development. People smarter than I am seem to feel that angular is 'better technology' than ember, or at least that in looking like extensible html it has more in common with the eventual future than ember does.

      I'm actually surprised, in this spate of MVC framework posts, that Meteor hasn't gotten more of a mention. In some ways it's younger than the others, and it has some idiosyncrasies (it doesn't actually require that the client and the serve both be written in javascript but you'd never know if from the web site). But the meteor team is incredibly smart and the company is well financed - and they're spending a lot of time and energy on one of the most interesting aspects of the problem, something ember and angular have not worked out: how to synchronize models and data between the client and the server. Meteor has a special protocol for handling this, such that when…

    • pdevrMay 2015

      These are some of the top sites' engineering blogs which I collected over a period of time - I removed those which have already been posted:

      Google: http://googledevelopers.blogspot.com/ http://google-engtools.blogspot.com/ http://googleresearch.blogspot.com/

      YouTube: http://youtube-eng.blogspot.com/

      Baidu: http://usa.baidu.com/category/baidutechblog/

      Yahoo: http://yahooeng.tumblr.com/ http://yahoodevelopers.tumblr.com/

      Wikipedia (closest I could find): https://blog.wikimedia.org/c/technology/

      Amazon: https://aws.amazon.com/blogs/aws/

      Twitter: https://engineering.twitter.com/

      eBay: http://www.ebaytechblog.com/

      Microsoft: http://microsoftengineering.com

      FourSquare: http://engineering.foursquare.com/

      Apple (closest): https://developer.apple.com/

      Paypal: https://www.paypal-engineering.com/ https://devblog.paypal.com/

      Dropbox: https://blogs.dropbox.com/tech/

      Edit: More (collected from this link: http://www.quora.com/What-are-the-top-startup-engineering-blogs):

      Yelp: http://engineeringblog.yelp.com/

      Quora: http://engineering.quora.com/

      Yammer: http://eng.yammer.com/blog/

      AirBnB: http://nerds.airbnb.com/

      Square: https://corner.squareup.com/

      Flickr: http://code.flickr.net/

      Soundcloud: https://developers.soundcloud.com/blog/

      Cloudera: http://blog.cloudera.com/blog/

      Slideshare: http://engineering.slideshare.net/

      Heroku: http://engineering.heroku.com/

      Pinterest: http://engineering.pinterest.com/

    • bradleylandOct 2014

      I get that you like Go, but you can't run Go in a web browser. Ultimately, whatever you write will have to be evaluated in a web browser, which means it will be JavaScript at some point. Just like you've observed with CoffeeScript, writing in a different language is just a layer of abstraction on top of JavaScript.

      Web apps have a back-end and a front-end. You can definitely write the back-end without touching JavaScript. You can even write it in Go. Square did a nice writeup comparing several:

      http://corner.squareup.com/2014/05/evaluating-go-frameworks.html

      When it comes to browser side, you're stuck with JavaScript though. Trying to avoid it will only bring more pain and frustration than attacking the problem head-on.

      I would point out that programming languages don't make errors, programmers do. I'm no fan of JavaScript. I too avoid it when I can. It's absolutely necessary if you want to write web apps though. As you become more familiar with JavaScript, your error rate will go down.

      If JavaScript really puts you off, maybe consider going another direction, like mobile app development. Both iOS and Android applications are developed using compiled languages. You may find them more suitable to your programming style.

    Related

    Foursquare Engineeringengineering.foursquare.com47 people

    Building a recommendation engine, foursquare style

    Foursquare Engineering
    Company · last shared 2018
    Square Open Sourcesquare.github.io63 people

    Keywhiz: Square's system for distributing and managing secrets

    Square Open Source
    Company · last shared 2022
    Square Developer Blogdeveloper.squareup.com47 people

    RBS, Ruby’s new type signature language

    Square Developer Blog
    Company · last shared 2026
    Uber Engineering Blogeng.uber.com525 people

    Why Uber Engineering Switched from Postgres to MySQL

    Uber Engineering Blog
    Company · last shared 2025
    Android Developers Blogandroid-developers.blogspot.com277 people

    Android Studio 1.0

    Android Developers Blog
    Company · last shared 2016
    Daring Fireballdaringfireball.net1.8k people

    Facebook is an attack on the open web

    Daring Fireball
    Personal · last shared 2026
    HubSpot Product Blogdev.hubspot.com72 people

    How to Learn Complex Things Quickly: A Guide

    HubSpot Product Blog
    Company · last shared 2026
    Airbnb Engineeringnerds.airbnb.com110 people

    We've Open-sourced Rendr

    Airbnb Engineering
    Company · last shared 2017