Are you over 18 and want to see adult content?
More Annotations
![A complete backup of bestcasinosites.net](https://www.archivebay.com/archive2/7047644f-60df-4e36-a0d1-69a2bacf9718.png)
A complete backup of bestcasinosites.net
Are you over 18 and want to see adult content?
![A complete backup of golfhomeslisted.com](https://www.archivebay.com/archive2/7e761170-0469-421e-a513-73b602e07f60.png)
A complete backup of golfhomeslisted.com
Are you over 18 and want to see adult content?
![A complete backup of jewishbookweek.com](https://www.archivebay.com/archive2/3e7f09c5-133a-4188-808d-467e2ebe5672.png)
A complete backup of jewishbookweek.com
Are you over 18 and want to see adult content?
![A complete backup of azsolarcenter.org](https://www.archivebay.com/archive2/7182db34-39a8-4115-ba13-d4911c9b8494.png)
A complete backup of azsolarcenter.org
Are you over 18 and want to see adult content?
![A complete backup of aspenmeadows.com](https://www.archivebay.com/archive2/85e65f00-fb47-45c3-a519-cee6b04aba5e.png)
A complete backup of aspenmeadows.com
Are you over 18 and want to see adult content?
![A complete backup of onlinedatingcollection.com](https://www.archivebay.com/archive2/4056dbc9-13fa-4321-a4ee-572b0a3d7493.png)
A complete backup of onlinedatingcollection.com
Are you over 18 and want to see adult content?
Favourite Annotations
![A complete backup of https://tysonsgalleria.com](https://www.archivebay.com/archive6/images/151595b5-4c73-4f05-95c2-f02aa3b588ee.png)
A complete backup of https://tysonsgalleria.com
Are you over 18 and want to see adult content?
![A complete backup of https://presspage.com](https://www.archivebay.com/archive6/images/5c07b2c0-729d-40f3-afcf-1067c325e48e.png)
A complete backup of https://presspage.com
Are you over 18 and want to see adult content?
![A complete backup of https://playbuzz.com](https://www.archivebay.com/archive6/images/c7dabd4c-973f-414b-b24e-c9fe1f8f507b.png)
A complete backup of https://playbuzz.com
Are you over 18 and want to see adult content?
![A complete backup of https://deainc.com](https://www.archivebay.com/archive6/images/d455e1ae-8e64-4c59-84f1-38e5f853592f.png)
A complete backup of https://deainc.com
Are you over 18 and want to see adult content?
![A complete backup of https://definitionmagazine.com](https://www.archivebay.com/archive6/images/54ba2b69-49db-4f59-a1fe-91a5fdc736f2.png)
A complete backup of https://definitionmagazine.com
Are you over 18 and want to see adult content?
![A complete backup of https://dorseydesigns.com](https://www.archivebay.com/archive6/images/afa72d79-0751-41ef-81b0-4d9ae3b34ef0.png)
A complete backup of https://dorseydesigns.com
Are you over 18 and want to see adult content?
![A complete backup of https://bristolpound.org](https://www.archivebay.com/archive6/images/2c0a0264-a6cb-4838-a691-e2f4063e6304.png)
A complete backup of https://bristolpound.org
Are you over 18 and want to see adult content?
![A complete backup of https://theactorsstudio.org](https://www.archivebay.com/archive6/images/0c948bc2-1fd7-4b33-93e2-5c2d2d8dc7c6.png)
A complete backup of https://theactorsstudio.org
Are you over 18 and want to see adult content?
![A complete backup of https://jaywaytravel.com](https://www.archivebay.com/archive6/images/ee9c4b6e-dc46-43c1-8434-518731718863.png)
A complete backup of https://jaywaytravel.com
Are you over 18 and want to see adult content?
![A complete backup of https://kappaalphaorder.org](https://www.archivebay.com/archive6/images/3dd6abcb-9893-4a55-bf4b-04d093f5b9ba.png)
A complete backup of https://kappaalphaorder.org
Are you over 18 and want to see adult content?
![A complete backup of https://webmerge.me](https://www.archivebay.com/archive6/images/8a8da653-658a-4235-aacd-e40ef15e15f8.png)
A complete backup of https://webmerge.me
Are you over 18 and want to see adult content?
![A complete backup of https://cfsd16.org](https://www.archivebay.com/archive6/images/c0470b94-4c6a-42b4-a2a0-f7aa9424fb78.png)
A complete backup of https://cfsd16.org
Are you over 18 and want to see adult content?
Text
SIGNAL V. NOISE
Strong opinions and shared thoughts on design, business, and tech. By the makers (and friends) of Basecamp . Since 1999. QUOTE: HOW YOU DO ANYTHING IS HOW YOU DO Quote: How you do anything is how you do everything. – Signal v. Noise. How you do anything is how you do everything. Your “character” or “nature” just refers to how you handle all the day-to-day things in life, no matter how small. Quoted by Matt Linderman on June 3 2009. There are 14 comments . REMOTE WORKING: THE HOME OFFICE DESKS OF BASECAMP March 20, 2020 / 53 Comments. on Remote Working: The home office desks of Basecamp. People are always curious about work-from-home (WFH), remote working setups. So, I posted a Basecamp message asking our employees to share a photo of their home office, desk, table, whatever. Here’s what came in. WHAT DID YOU LEARN AT WORK TODAY? The magic of these check-ins is two-fold. First, it almost completes nixes the need for those awful status meetings. Second, it allows everyone to keep a diary of their thoughts, interests, and work. Before Basecamp, I worked at a few other tech companies where I went to an office and worked with colleagues in-person. QUOTE: ALL TRUTH PASSES THROUGH THREE STAGES. FIRST Noise. All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. Quoted by Jamie on February 20 2010. There are 16 comments . There’s an important inversion to keep humbly in mind, which is that not every thing that is ridiculed is truth. HIRING PROGRAMMERS WITH A TAKE-HOME TEST Hiring programmers with a take-home test. There’s no perfect process for hiring great programmers, but there are plenty of terrible ways to screw it up. We’ve rejected the industry stables of grilling candidates in front of a whiteboard or needling them with brain teasers since the start at Basecamp. But you’re not getting aroundshowing
AMAZON.COM IDEA: EASILY SEND SOMEONE A GIFT THEY DON'T OweBoat 28 Mar 05. Add something from their wishlist, then add the item that you really want to send. When it comes time to review theorder, remove the
QUOTE: WE HAVE BEEN PRIVILEGED TO HAVE HAD THE OPPORTUNITY Quote: We have been privileged to have had the opportunity. – Signal v. Noise. We have been privileged to have had the opportunity to work with Volkswagen for the past four years and are extremely proud of all that we have accomplished together. As a rule, we do not participate in reviews for current accounts and this will not be an exception. THE DEAL JEFF BEZOS GOT ON BASECAMP posted on. July 27, 2017. In 2006, Jeff Bezos bought a minority, no-control stake of Basecamp from Jason and me. We didn’t need any money to run the company, as we’d been profitable from the get-go, so none of it went to fund “our incredible journey”. As the Valley players say, we took money off the table. It was an unusual deal for a THE BACKSTORY TO WALTER IOOSS' PHOTO OF "THE CATCH" AND Digital Journalist has a great collection of photos from Sports Illustrated photographer Walter Iooss along with explanations of how he got the shots. Neat backstory to this photo of “The Catch” (Joe Montana to Dwight Clark TD pass in 1982 Championship Game), the most famous picture he’s ever taken.. Walter Iooss Jr. had set up in the end zone and snapped a soaring Dwight Clark in whatSIGNAL V. NOISE
Strong opinions and shared thoughts on design, business, and tech. By the makers (and friends) of Basecamp . Since 1999. QUOTE: HOW YOU DO ANYTHING IS HOW YOU DO Quote: How you do anything is how you do everything. – Signal v. Noise. How you do anything is how you do everything. Your “character” or “nature” just refers to how you handle all the day-to-day things in life, no matter how small. Quoted by Matt Linderman on June 3 2009. There are 14 comments . REMOTE WORKING: THE HOME OFFICE DESKS OF BASECAMP March 20, 2020 / 53 Comments. on Remote Working: The home office desks of Basecamp. People are always curious about work-from-home (WFH), remote working setups. So, I posted a Basecamp message asking our employees to share a photo of their home office, desk, table, whatever. Here’s what came in. WHAT DID YOU LEARN AT WORK TODAY? The magic of these check-ins is two-fold. First, it almost completes nixes the need for those awful status meetings. Second, it allows everyone to keep a diary of their thoughts, interests, and work. Before Basecamp, I worked at a few other tech companies where I went to an office and worked with colleagues in-person. QUOTE: ALL TRUTH PASSES THROUGH THREE STAGES. FIRST Noise. All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. Quoted by Jamie on February 20 2010. There are 16 comments . There’s an important inversion to keep humbly in mind, which is that not every thing that is ridiculed is truth. HIRING PROGRAMMERS WITH A TAKE-HOME TEST Hiring programmers with a take-home test. There’s no perfect process for hiring great programmers, but there are plenty of terrible ways to screw it up. We’ve rejected the industry stables of grilling candidates in front of a whiteboard or needling them with brain teasers since the start at Basecamp. But you’re not getting aroundshowing
AMAZON.COM IDEA: EASILY SEND SOMEONE A GIFT THEY DON'T OweBoat 28 Mar 05. Add something from their wishlist, then add the item that you really want to send. When it comes time to review theorder, remove the
QUOTE: WE HAVE BEEN PRIVILEGED TO HAVE HAD THE OPPORTUNITY Quote: We have been privileged to have had the opportunity. – Signal v. Noise. We have been privileged to have had the opportunity to work with Volkswagen for the past four years and are extremely proud of all that we have accomplished together. As a rule, we do not participate in reviews for current accounts and this will not be an exception. THE DEAL JEFF BEZOS GOT ON BASECAMP posted on. July 27, 2017. In 2006, Jeff Bezos bought a minority, no-control stake of Basecamp from Jason and me. We didn’t need any money to run the company, as we’d been profitable from the get-go, so none of it went to fund “our incredible journey”. As the Valley players say, we took money off the table. It was an unusual deal for a THE BACKSTORY TO WALTER IOOSS' PHOTO OF "THE CATCH" AND Digital Journalist has a great collection of photos from Sports Illustrated photographer Walter Iooss along with explanations of how he got the shots. Neat backstory to this photo of “The Catch” (Joe Montana to Dwight Clark TD pass in 1982 Championship Game), the most famous picture he’s ever taken.. Walter Iooss Jr. had set up in the end zone and snapped a soaring Dwight Clark in what SIGNAL V. NOISE BY BASECAMP It’s with great honor that we’re announcing our latest addition to the programming team at 37signals: Pratik Naik. I’ve worked with Pratik through the Ruby on Rails core team for almost two years. He’s been a top contributor with about 400 commits since 2007.. We first started working with Pratik as a contractor on Haystack, which he built the backend for. SIGNAL V. NOISE BY BASECAMP This is a guest post by Mike Rohde.We hired Mike to illustrate original art for REWORK.Each one of the 90 essays in REWORK is accompanied by an illustration that captures the key message of the essay. We asked Mike to share the illustration process with you here on Signal vs. Noise. REMOTE WORKS: BEBANJO, SPAIN Name: Jorge Gómez Sancha Title: Founder and Managing Director Company: BeBanjo Based in: Madrid, Spain Established: 2008 Jorge Gómez Sancha What does BeBanjo do? We build software for the video-on-demand industry. Basically, a video-on-demand service is something like Netflix. All of the oper QUOTE: ALL TRUTH PASSES THROUGH THREE STAGES. FIRST Noise. All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. Quoted by Jamie on February 20 2010. There are 16 comments . There’s an important inversion to keep humbly in mind, which is that not every thing that is ridiculed is truth. THE MAJESTIC MONOLITH Then there are other patterns that are less about the code and more about how the code is being written, by whom, and within which organization. The Majestic Monolith is one of those patterns. But before we dive into all its glory, let’s first examine its THE 10 MOST POPULAR NEWSPAPER TYPEFACES The 10 most popular typeface families in American newspapers according to a study by Ascender Corporation: 1. Poynter 2. Franklin Gothic 3. Helvetica 4. Utopia 5. Times 6. Nimrod 7. Century Old Style 8. Interstate 9. Bureau Grotesque 10. Miller Related: Ne TEN DESIGN LESSONS FROM FREDERICK LAW OLMSTED, THE FATHER Frederick Law Olmsted (1822-1903), the father of American landscape architecture, may have more to do with the way America looks than anyone else. Beginning in 1857 with the design of Central Park in New York City, he created designs for thousands of landscapes, including many of the world’s most important parks. INTRODUCING BOOSTS: AN ALL-NEW WAY TO SHOW YOUR SUPPORT IN Sometimes Likes are called Faves, Hearts, Reactions, Claps, or something else, but the basic idea is the same: they’re a small, quick way to express your feelings about something, usually accompanied by a count of other people who had that same feeling.. Until today, we had exactly this sort of feature in Basecamp 3.We called it Applause.If you liked a post, you’d clap for it. HOW I GOT HIRED BY BASECAMP December 17, 2019 / 18 Comments. on How I got hired by Basecamp. I saw the Senior Programmer offer one day before going to bed. I decided I wasn’t going to apply. I had tried four times since 2013, and I never got to pass the first filter. Each attempt took me a good amount of time and energy, and I didn’t want to go through that pain again. NINTENDO SWITCH DOES MULTIPLE ACCOUNTS RIGHT Nintendo Switch Does Multiple Accounts Right. Multiple Accounts in a product is a difficult to design for. It’s not a typical thing, though. Most have just one Google, Apple, Instagram account. However, some might want to share an iPad or HomePod with family. Since those don’t support multiple accounts, the owner’s profile ends upoverrun
REMOTE WORKING: THE HOME OFFICE DESKS OF BASECAMP March 20, 2020 / 53 Comments. on Remote Working: The home office desks of Basecamp. People are always curious about work-from-home (WFH), remote working setups. So, I posted a Basecamp message asking our employees to share a photo of their home office, desk, table, whatever. Here’s what came in. WHAT DID YOU LEARN AT WORK TODAY? The magic of these check-ins is two-fold. First, it almost completes nixes the need for those awful status meetings. Second, it allows everyone to keep a diary of their thoughts, interests, and work. Before Basecamp, I worked at a few other tech companies where I went to an office and worked with colleagues in-person. INTRODUCING SPROCKETS: JAVASCRIPT DEPENDENCY MANAGEMENT For a long time we’ve been struggling to manage the growing presence of JavaScript at 37signals. We needed a way to share common JavaScript components and behaviors across our applications and web sites. And we wanted the ability to organize our JavaScript source code intomultiple files and
WHAT ARE QUESTIONS?
What an insight. He continued to talk about the power of questions. Questions are your mind’s receptors for answers. If you aren’t curious enough to want to know why, to want to ask questions, then you’re not making the room in your mind for answers. If you stop asking questions, your mind can’t grow. That day had a profoundimpact on me.
AMAZON.COM IDEA: EASILY SEND SOMEONE A GIFT THEY DON'T OweBoat 28 Mar 05. Add something from their wishlist, then add the item that you really want to send. When it comes time to review theorder, remove the
WHATEVER INTERESTS YOU NATURALLY IS THE MOST IMPORTANT Below, David talks about motivation. Excerpted from Episode #26 of the 37signals Podcast (listen or read the transcript). I have a very hard to impossible time forcing myself to do things that I don’t want to do. When I feel that lack of motivation, there’s always a reason. Iinst
BERN HILL RAILROAD POSTERS Some beautiful 1950s railroad posters from the cover of Railway Age Magazine. Illustrations by Bern Hill. You can check out the collection on Antiques Roadshow. Jason Fried wrote this on Nov 10 2009 There are 13 comments . Brad. on 10 Nov 09. Wow. These are QUOTE: MY MOTHER MADE ME A SCIENTIST WITHOUT EVER @GeeIWonder – it’s generally attributed to an article in the September 1993 issue of Parents Magazine entitled “Great minds start with questions”. Many online sources cite it with the same phrasing as coming from that article, though I will admit that I’m having a hard time finding a copy of the original article. INSIGHT: SO MUCH COMPLEXITY IN SOFTWARE COMES FROM So much complexity in software comes from trying to make one thing do two things. Realized by Ryan on May 5 2010. There are 16 comments . James. on 05 May 10. It depends on the perspective. Re-usability in code can be created by doing more than one thing with the same objects (a good thing, imo, as long as you don’t try to Swiss Army knife it THE DEAL JEFF BEZOS GOT ON BASECAMP posted on. July 27, 2017. In 2006, Jeff Bezos bought a minority, no-control stake of Basecamp from Jason and me. We didn’t need any money to run the company, as we’d been profitable from the get-go, so none of it went to fund “our incredible journey”. As the Valley players say, we took money off the table. It was an unusual deal for a REMOTE WORKING: THE HOME OFFICE DESKS OF BASECAMP March 20, 2020 / 53 Comments. on Remote Working: The home office desks of Basecamp. People are always curious about work-from-home (WFH), remote working setups. So, I posted a Basecamp message asking our employees to share a photo of their home office, desk, table, whatever. Here’s what came in. WHAT DID YOU LEARN AT WORK TODAY? The magic of these check-ins is two-fold. First, it almost completes nixes the need for those awful status meetings. Second, it allows everyone to keep a diary of their thoughts, interests, and work. Before Basecamp, I worked at a few other tech companies where I went to an office and worked with colleagues in-person. INTRODUCING SPROCKETS: JAVASCRIPT DEPENDENCY MANAGEMENT For a long time we’ve been struggling to manage the growing presence of JavaScript at 37signals. We needed a way to share common JavaScript components and behaviors across our applications and web sites. And we wanted the ability to organize our JavaScript source code intomultiple files and
WHAT ARE QUESTIONS?
What an insight. He continued to talk about the power of questions. Questions are your mind’s receptors for answers. If you aren’t curious enough to want to know why, to want to ask questions, then you’re not making the room in your mind for answers. If you stop asking questions, your mind can’t grow. That day had a profoundimpact on me.
AMAZON.COM IDEA: EASILY SEND SOMEONE A GIFT THEY DON'T OweBoat 28 Mar 05. Add something from their wishlist, then add the item that you really want to send. When it comes time to review theorder, remove the
WHATEVER INTERESTS YOU NATURALLY IS THE MOST IMPORTANT Below, David talks about motivation. Excerpted from Episode #26 of the 37signals Podcast (listen or read the transcript). I have a very hard to impossible time forcing myself to do things that I don’t want to do. When I feel that lack of motivation, there’s always a reason. Iinst
BERN HILL RAILROAD POSTERS Some beautiful 1950s railroad posters from the cover of Railway Age Magazine. Illustrations by Bern Hill. You can check out the collection on Antiques Roadshow. Jason Fried wrote this on Nov 10 2009 There are 13 comments . Brad. on 10 Nov 09. Wow. These are QUOTE: MY MOTHER MADE ME A SCIENTIST WITHOUT EVER @GeeIWonder – it’s generally attributed to an article in the September 1993 issue of Parents Magazine entitled “Great minds start with questions”. Many online sources cite it with the same phrasing as coming from that article, though I will admit that I’m having a hard time finding a copy of the original article. INSIGHT: SO MUCH COMPLEXITY IN SOFTWARE COMES FROM So much complexity in software comes from trying to make one thing do two things. Realized by Ryan on May 5 2010. There are 16 comments . James. on 05 May 10. It depends on the perspective. Re-usability in code can be created by doing more than one thing with the same objects (a good thing, imo, as long as you don’t try to Swiss Army knife it THE DEAL JEFF BEZOS GOT ON BASECAMP posted on. July 27, 2017. In 2006, Jeff Bezos bought a minority, no-control stake of Basecamp from Jason and me. We didn’t need any money to run the company, as we’d been profitable from the get-go, so none of it went to fund “our incredible journey”. As the Valley players say, we took money off the table. It was an unusual deal for aSIGNAL V. NOISE
Strong opinions and shared thoughts on design, business, and tech. By the makers (and friends) of Basecamp . Since 1999. REMOTE WORKS: BEBANJO, SPAIN Name: Jorge Gómez Sancha Title: Founder and Managing Director Company: BeBanjo Based in: Madrid, Spain Established: 2008 Jorge Gómez Sancha What does BeBanjo do? We build software for the video-on-demand industry. Basically, a video-on-demand service is something like Netflix. All of the oper SIGNAL V. NOISE BY BASECAMP It’s with great honor that we’re announcing our latest addition to the programming team at 37signals: Pratik Naik. I’ve worked with Pratik through the Ruby on Rails core team for almost two years. He’s been a top contributor with about 400 commits since 2007.. We first started working with Pratik as a contractor on Haystack, which he built the backend for. SIGNAL V. NOISE BY BASECAMP This is a guest post by Mike Rohde.We hired Mike to illustrate original art for REWORK.Each one of the 90 essays in REWORK is accompanied by an illustration that captures the key message of the essay. We asked Mike to share the illustration process with you here on Signal vs. Noise. QUOTE: HOW YOU DO ANYTHING IS HOW YOU DO Saw this quote elsewhere a few weeks ago and I’ve been thinking about it on and off since then here’s what I’ve put together as a response: “How you do anything by which you define yourself is how you do everything by which you define yourself.” Anecdote: I’m meticulous when it comes to upkeep of my tech hardware or the precision of my woodworking, but I drive a P.O.S. car that INTRODUCING SPROCKETS: JAVASCRIPT DEPENDENCY MANAGEMENT For a long time we’ve been struggling to manage the growing presence of JavaScript at 37signals. We needed a way to share common JavaScript components and behaviors across our applications and web sites. And we wanted the ability to organize our JavaScript source code intomultiple files and
THE VISUAL PRINCIPLES OF STORYBOARDING “An artist emphasizes some things and de-emphasizes other things to make a statement.” There’s a lot of inspiration about visual principles to be had at Temple Of The Seven Golden Camels, Mark Kennedy’s site about the art of storyboarding.The main topic is animation and drawing, but the visual principles discussed — what makes things blend together, group, separate, create interestWHAT ARE QUESTIONS?
What an insight. He continued to talk about the power of questions. Questions are your mind’s receptors for answers. If you aren’t curious enough to want to know why, to want to ask questions, then you’re not making the room in your mind for answers. If you stop asking questions, your mind can’t grow. That day had a profoundimpact on me.
WHATEVER INTERESTS YOU NATURALLY IS THE MOST IMPORTANT Below, David talks about motivation. Excerpted from Episode #26 of the 37signals Podcast (listen or read the transcript). I have a very hard to impossible time forcing myself to do things that I don’t want to do. When I feel that lack of motivation, there’s always a reason. Iinst
HOW WE STRUCTURE OUR WORK AND TEAMS AT Each Big Batch project is assigned a team. So if we take on two Big Batch projects during a cycle, we’d have one team working on one of the projects and another team working on the other project. Small Batch projects are all done by one team. Teams stay together for the full cycle. A team is two or three people, depending on the type ofwork.
Skip to content
Signal v. Noise
* Greatest Hits
* Rework Podcast
Search SvN Subscribe menu* Greatest Hits
* Rework Podcast
Search SvN
Subscribe to SvN
SIGNAL V. NOISE
Strong opinions and shared thoughts on design, business, and tech. By the makers (and friends) of Basecamp . Since1999.
Rosa Gutiérrez / posted on January 14, 2020 / 15 Comments on My polyglot Advent of Code MY POLYGLOT ADVENT OF CODE At Basecamp we have an internal project called _“Your proudest moments”_. My colleague Dan set it up so that people at Basecamp could share anything we’re proud of. So far people have shared impressive, really feel-good accomplishments, such as performing complicated house renovations without professional help, writing books, or taking their parents on an unforgettable vacation. This post comes from my first contribution to this project. As I told them, it went to _“Your proudest moments”_ because we don’t have a _“Your most useless and pointless self-inflicted programming hours”_ project, that would have been the best fit. Still, this quite a ridiculous thing to do made me super proud, and I also had a lot of fun doing it.All the 50 stars!
Advent of Code is an advent calendar of programming puzzles that’s been happening since 2015, made by Eric Wastl. Every day from 1st to 25th December a new puzzle with 2 parts gets released and for each part solved you get a star. The goal is to collect all 50 stars to save Christmas. All the problems follow a story normally involving the space, a spaceship, elves, reindeers and Santa. The difficulty increases as the days pass. First ones are simpler, but then they start getting complicated and laborious. Some of them are pretty tricky! They aren’t necessarily super hard algorithmically, binary search, BFS, Dijkstra, Floyd–Warshall, A*… might be all you need but I can easily take several hours to finish each one. This year there was also a bit of modular arithmetic that I loved and a little bit of trigonometry. The problems are quite amazing. This year for example included things like a Pong game in Intcode, a made-up assembly language (you had to program the joystick movements and feed them to the program) and a text-based adventure game in Intcode as well. It’s seriously cool. I’ve done it in 2016, 2017 and 2018, the first time in Ruby, then the last 2 years in Elixir. I never finish on the 25th December because for me it’s impossible to work, take care of life stuff and also spend several hours programming these puzzles every day 😅I normally finish around 27th or 28th December. This year I was moving to a new apartment in the middle of December, and since that wasn’t stressful enough, I took on a new challenge with Advent of Code and finished just this Sunday: doing A POLYGLOT VERSION, THAT IS, EVERY DAY IN A DIFFERENT PROGRAMMING LANGUAGE! I was inspired by a friend who had done this in 2018. I thought I’d give up, but the more I solved, the more invested I was and the less willing to give up! This is the list of languages I ended up using:Day 1 in awk
Day 2 in Prolog (SWI)Day 3 in Haskell
Day 4 in Common LispDay 5 in Kotlin
Day 6 in Swift
Day 7 in Lua
Day 8 in Perl
Day 9 in Go
Day 10 in C
Day 11 in Rust
Day 12 in OCaml
Day 13 in Julia
Day 14 in Erlang
Day 15 in Dart
Day 16 in Dylan
Day 17 in Scala
Day 18 in Python
Day 19 in CrystalDay 20 in Nim
Day 21 in Ruby
Day 22 in R
Day 23 in Elixir
Day 24 in C++
Day 25 in JavaScript Every year there’s some sort of made up assembly code that you have to write an interpreter for, and then it reappears in subsequent problems, so you reuse your code, enhance it, etc. In the past, there had been a handful of problems using this assembly language. This year, however, 12 PROBLEMS INVOLVED INTCODE PROGRAMS (the name of 2019’s made up assembly). Doing a polyglot challenge meant I had to rewrite the interpreter every time. I almost go mad 😆- _hystericallaughter_.
A very important part of the challenge for me was trying to write code as good as possible, even for languages I had never seen. I didn’t want to complete problems by learning how to declare variables, loops and if-else and force my Ruby or Elixir solution into the language. This meant looking at style guides so I could follow the naming conventions and that, but also getting familiar with idioms and structures, and looking at official repos and examples if possible, so my code was at least a little idiomatic. This took a lot of time in some cases, and I’m not sure I achieved my goals, but I did my best! What I didn’t do was to learn and use some features from some languages as I couldn’t really fit them in this kind of problems (like macros to manipulate AST nodes in Crystal or Nim, concurrency stuff in Erlang…). Some fun things I learnt and other anecdotes from doing thischallenge:
* Programming languages with array indexes starting at 1 are stressful. In my case, this was Lua, R and Julia. Off-by-one errors are twice as fun here. * Rust is as cool as I had imagined it to be, but it has this complex and interesting memory management system that I only scratched the surface of. _Ownership_, _borrowing _and memory safety. Errors were ridiculously cryptic if you didn’t understand this very well, and yes, the hour I spent looking into it wasn’t enough to understand itwell.
* I always forget how much I like Golang and this made me remember. It’s so neat ❤️ * Erlang was such a nice surprise. I had never used it and had this unfounded idea it was tough and unpleasant. It’s not, it’s lovely! 💘 This must be a false rumour spread by Erlang programmers so they can remain in their exclusive club. * Julia was also a nice surprise, easy to pick up, at least for the basics, and I imagined it being pretty good for scientists. * I also remembered how much I love C, it was the first language I learnt. I’m lucky I don’t write C code professionally, though. It’s seriously scary. One obscure, edge error and someone will get root in your machine. * I used Kotlin and Swift too soon for too simple problems! Same for Common Lisp and Prolog. I wasted them when I still thought I wouldn’t finish the challenge. * I skipped PHP and Java! Two languages I know and have even used professionally, but dislike them so much that I preferred to learn new ones! There’s already been enough PHP and Java in my life. * Nim was a language I didn’t even know it existed, and I’m quiteglad I chose it.
* Crystal’s syntax is so similar to Ruby that I felt I was cheating by using it in the challenge. Still, I made the rules, so…🤷🏻♀️ * Dylan was impossible to find documentation and examples for, in the regular ways programmers search for stuff nowadays, at least. Whenever I’d google how to do something, all I’d find was _someone named Dylan_ explaining how to do whatever I wanted to do in another language like Java. I ended up using a really good book from the 90s that I found available online in PDF. * Naming conventions in R are famously anarchic! 5
naming conventions to choose from, and multiple conventions used simultaneously in the same packages, style guides and tutorials 🤣In my code I went for the _period.separated_ one: e.g. cut.cardssimply because I wasn’t going to have the chance of using this convention in any other language. Of course, I threw in some naming inconsistencies as well to comply with the chaos! ✌️ I hope you enjoyed reading this. If you’re interested, here are allmy solutions
for 2019
and the previous years. I’ll be forever grateful to Eric Wastl for creating Advent of Code, and I’m sure many other programmers share this gratitude. Now I need to think of a new challenge for next year! Jason Fried / posted on January 12, 2020 / 39 Comments on I went to see a movie, and instead I saw the future I WENT TO SEE A MOVIE, AND INSTEAD I SAW THE FUTURE A few days ago my wife and I went to see Uncut Gems at a Regal theaterin Chicago.
We booked our ticket online, reserved our seats, showed up 15 minutes ahead of time, and settled in. After the coil of previews, and jaunty, animated ads for sugary snacks, the movie started. About 20 minutes in, a loud, irritating buzzing started coming from one corner of the theater. No one was sure what to make of it. Was it part of the movie? We all just let it go. But it didn’t stop. Something was wrong with the audio. It was dark, so you couldn’t see, but you could sense people wondering what happens now. Was someone from the theater company going to come in? Did they even know? Is there anyone up in the booth watching? Did we have to get someone? We sent a search party. A few people stood up and walked out to go get help. The empty hallways were cavernous, no one in sight. Eventually someone found someone from the staff to report the issue. Then they came back into the theater to settle in and keep watchingthe movie.
No one from the theater came into the theater to explain what was going on. The sound continued for about 10 more minutes until the screen abruptly went black. Nothingness. At least the sound was gone. Again, no one from the theater company came in to say what was going on. We were all on our own. The nervous, respectfully quiet giggle chatter started. Now what? A few minutes later, the movie started again. From the beginning. No warning. Were they going to jump forward to right before they cut it off? Or were we going to have to watch the same 25 minutes again? No one from the theater company appeared, no one said anything. The cost of the ticket apparently doesn’t include being in the loop. Eventually people started walking out. My wife and I included. As we walked out into the bright hallway, we squinted and noticed a small congregation of people way at the end of the hall. It felt like finally spotting land after having been at sea for awhile We walked up. There were about eight of us, and two of them. They worked here. We asked what was going on, they didn’t know. They didn’t know how to fix the sound, there was no technical staff on duty, and all they could think of was to restart that movie to see ifthat fixed it.
We asked if they were planning on telling the people in the theater what was going on. It never occurred to them. They dealt with movies, they didn’t deal with _people_. We asked for a refund. They pointed us to the box office. We went there and asked for a refund. The guy told us no problem, but he didn’t have the power to do that. So he called for a manager. The call echoed. Everyone looked around. Finally a manager came over. We asked for a refund, he said he could do that. We told him we purchased the tickets through Fandango, which complicated things. Dozens of people lined up behind us. The refund process took a few minutes. Never a sorry from anyone. Never even an acknowledgment that what happened wasn’t supposed to happen. Not even a comforting “gosh, that’s never happened before” lie. It was all purely transactional. From the tickets themselves, to the problem at hand, to the refund process. Humanity nowhere. We left feeling sorry for the whole thing. The people who worked at the theater weren’t trained to know how to deal with the problem. They probably weren’t empowered to do anything about it anyway. The technical staff apparently doesn’t work on the premises. The guy at the box office wanted to help, but wasn’t granted the power to do anything. And the manager, who was last in the line of misery, to have to manually, and slowly, process dozens of refunds on his own. No smiles entered the picture. This is the future, I’m afraid. A future that plans on everything going right so no one has to think about what happens when things go wrong. Because computers don’t make mistakes. An automated future where no one actually knows how things work. A future where people are so far removed from the process that they stand around powerless, unable to take the reigns. A future where people don’t remember how to help one another in person. A future where corporations are so obsessed with efficiency, that it doesn’t make sense to staff a theater with technical help because things only go wrong sometimes. A future with a friendlier past. I even imagine an executive somewhere looking down on the situation saying “That was well handled. Something went wrong, people told us, someone tried to restart it, it didn’t work. People got their refunds. What’s the problem?” If you don’t know, you’ll neverknow.
John Williams /
posted on January 10, 2020 / 21 Comments on AWS S3: You’re out oforder.
AWS S3: YOU’RE OUT OF ORDER. Back in November, we noticed something odd happening with large uploads to Amazon S3. Uploads would pause for 10 seconds at a time and then resume. It had us baffled. When we started to dig, what we found left us with more questions than answers about S3 and AWS networking. We use Amazon S3 for file storage. Each Basecamp product stores files in a primary region, which is replicated to a secondary region. This ensures that if any AWS region becomes unavailable, we can switch to the other region, with little impact to users uploading anddownloading files.
Back in November, we started to notice some really long latencies when uploading large files to S3 in us-west-2, Basecamp 2’s primary S3 region. When uploading files over 100MB, we use S3’s multipart API to upload the file in multiple 5MB segments. These uploads normally take a few seconds at most. But we saw segments take 40 to 60 seconds to upload. There were no retries logged, and eventually the file would be uploaded successfully. For our applications that run on-premise in our Ashburn, VA datacenter, we push all S3 traffic over redundant 10GB Amazon Direct Connects. For our Chicago, IL datacenter, we push S3 over public internet. To our surprise, when testing uploads from our Chicago datacenter, we didn’t see any increased upload time. Since we only saw horrible upload times going to us-west-2, and not our secondary region in us-east-2, we made the decision to temporarily promote us-east-2 to our primary region. Now that we were using S3 in us-east-2, our users were no longer feeling the pain of high upload time. But we still needed to get to the bottom of this, so we opened a support case. Our initial indication was that our direct connections were causing slowness when pushing uploads to S3. However, after testing with mtr , we were able to rule out direct connect packet loss and latency as the culprit. As AWS escalated our case internally, we started to analyze the TCP exchanges while weupload files to S3.
The first thing we needed was a repeatable and easy way to upload files to S3. Taking the time to build and set up proper tooling when diagnosing an issue really pays off in the long run. In this case, we built a simple tool that uses the same Ruby libraries as our production applications. This ensured that our testing would be as close to production as possible. It also included support for multiple S3 regions and benchmarking for the actual uploads. Just as we expected, uploads to both us-west regions were slow. irb(main):023:0> S3Monitor.benchmark_upload_all_regions_via_ruby(200000000) region user system total real us-east-1: 1.894525 0.232932 2.127457 ( 3.220910) us-east-2: 1.801710 0.271458 2.073168 ( 13.369083) us-west-1: 1.807547 0.270757 2.078304 ( 98.301068) us-west-2: 1.849375 0.258619 2.107994 (130.012703) While we were running these upload tests, we used tcpdump to output the TCP traffic so we could read it with Wiresharkand TShark
.
$ tcpdump -i eth0 dst port 443 -s 65535 -w /tmp/S3_tcp_dump.log When analyzing the tcpdump using Wireshark, we found something very interesting: TCP retransmissions. Now we were getting somewhere!TCP Retransmissions
Analysis with TShark gave us the full story of why we were seeing so many retransmissions. During the transfer of 200MB to S3, we would see thousands of out-of-order packets, causing thousands of retransmissions. Even though we were seeing out-of-order packets to all US S3 regions, these retransmissions compounded with the increased round trip time to the us-west regions is why they were so much worse than the us-east regions. # tshark -r S3_tcp_dump.log -q -z io,stat,1,"COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission","COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack","COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment","COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission","COUNT(tcp.analysis.out_of_order) tcp.analysis.out_of_order" Running as user "root" and group "root". This could be dangerous. =================================================================================== | IO Statistics | | | | Duration: 13.743352 secs | | Interval: 1 secs | | | | Col 1: COUNT(tcp.analysis.retransmission) tcp.analysis.retransmission | | 2: COUNT(tcp.analysis.duplicate_ack)tcp.analysis.duplicate_ack | | 3: COUNT(tcp.analysis.lost_segment) tcp.analysis.lost_segment | | 4: COUNT(tcp.analysis.fast_retransmission) tcp.analysis.fast_retransmission | | 5: COUNT(tcp.analysis.out_of_order) tcp.analysis.out_of_order | |---------------------------------------------------------------------------------| | |1 |2 |3 |4 |5 | | | Interval | COUNT | COUNT | COUNT | COUNT | COUNT | | |--------------------------------------------------| | | 0 <> 1 | 28 | 11 | 0 | 0 | 0 | | | 1 <> 2 | 3195 | 0 | 0 | 0 | 5206 | | | 2 <> 3 | 413 | 0 | 0 | 0 | 1962 |...
| 13 <> Dur| 0 | 0 | 0 | 0 | 0 | | =================================================================================== What’s interesting here is that we see thousands of our-of-order packets when transversing our direct connections. However, when going over the public internet, there are no retransmissions or out-of-order packets. When we brought these findings to AWS support, their internal teams reported back that “out-of-order packets are not a bug or some issue with AWS Networking. In general, the out-of-order packets are common in any network.” It was clear to us that out-of-order packets were something we’d have to deal with if we were going to continue to use S3 over our direct connections. “You’re out of order! You’re out of order! This whole network isout of order!”
Thankfully, TCP has tools for better handling of dropped or out-of-order packets. Selective Acknowledgement (SACK) is a TCP feature that allows a receiver to acknowledge non-consecutive data. Then the sender can retransmit only missing packets, not the out-of-order packets. SACK is nothing new and is enabled on all modern operating systems. I didn’t have to look far until I found why SACK was disabled on all of our hosts. Back in June, the details of SACK Panicwere
released. It was a group of vulnerabilities that allowed for a remotely triggered denial-of-service or kernel panic to occur on Linux and FreeBSD systems. In testing, the benefits of enabling SACK were immediately apparent. The out-of-order packets still exist, but they did not cause a cascade of retransmissions. Our upload time to us-west-2 was more than 22 times faster than with SACK disabled. This is exactly what we needed! irb(main):023:0> S3Monitor.benchmark_upload_all_regions_via_ruby(200000000) region user system total real us-east-1: 1.837095 0.315635 2.152730 ( 2.734997) us-east-2: 1.800079 0.269220 2.069299 ( 3.834752) us-west-1: 1.812679 0.274270 2.086949 ( 5.612054) us-west-2: 1.862457 0.186364 2.048821 ( 5.679409) The solution would not just be as simple as just re-enabling SACK. The majority of our hosts were on new-enough kernels that had the SACK Panic patch in place. But we had a few hosts that could not upgrade and were running vulnerable kernel versions. Our solution was to use iptables to block connections with a low MSS value. This block allowed for SACK to be enabled while still blocking the attack. $ iptables -A INPUT -p tcp -m tcpmss --mss 1:500 -j DROP After almost a month of back-and-forth with AWS support, we did not get any indication why packets from S3 are horribly out of order. But thanks to our own detective work, some helpful tools, and SACK, we were able to address the problem ourselves. DHH / posted on January 6, 2020 / 18 Comments on The last tracker was just removed fromBasecamp.com
THE LAST TRACKER WAS JUST REMOVED FROM BASECAMP.COM Can you believe we used to willingly tell Google about every single visitor to basecamp.com by way of Google Analytics? Letting them collect every last byte of information possible through the spying eye of their tracking pixel. Ugh. But 2020 isn’t 2010. Our naiveté around data, who captures it, and what they do with it has collectively been brought to shame. Most people now sit with basic understanding that using the internet leaves behind a data trail, and quite a few people have begun to question just how deep that trail should be, and who should have the right tofollow it.
In this new world, it feels like an obligation to make sure we’re not aiding and abetting those who seek to exploit our data. Those who hoard every little clue in order to piece of together a puzzle that’ll ultimately reveal all our weakest points and moments, then sell that picture to the highest bidder. The internet needs to know less about us, not more. Just because it’s possible to track someone doesn’t mean we should. That’s the ethos we’re trying to live at Basecamp. It’s not a straight path. Two decades of just doing as you did takes a while to unwind. But we’re here for that work. Every request is now served from our own domains Keep reading “The last tracker was just removed from Basecamp.com” Jason Fried / posted on January 3, 2020 / 2 Comments on The Basecamp Guide to InternalCommunication
THE BASECAMP GUIDE TO INTERNAL COMMUNICATION We just published “The Basecamp Guide to Internal Communication“. It’s a
collection of philosophies and day-to-day practices that help guide the way we communicate with each other at Basecamp. We cover when to write stuff up in detail vs. when to chat about it. Why meetings are a last resort, not a first option. How companies don’t have communication problems, they have miscommunication problems. Why a single central source of truth is better than different versions all over the place. Why writing benefits everyone, but speaking only benefits those who were there. We hope you find it useful. Check it out.
Jason Fried / posted on December 24, 2019 / 8 Comments on No one’s complaining NO ONE’S COMPLAINING I’ve heard this one before. I’ve used this one before. “No one’s complaining” so it fine. “No one” really means “no one _has complained to you_“. It doesn’t mean no one is complaining to someone else, somewhere else. In fact, if the thing you make/sell isn’t meeting someone’s expectations, there’s a good chance you’re the last one who’dhear the complaint.
Contacting the company to complain is pretty far down the list. At the top are friends, family, colleagues. If you aren’t hearing the complaint it’s likely because it’s directed elsewhere. People typically talk truth behind backs, not to faces. Reputation erodes in the shadows before it comes to light. It’s not all that different from a manager or CEO eventually discovering something was wrong but “no one told me sooner”. The higher up you are, you’re often the last to know. Out of everywhere someone will complain, you’re close to nowhere. “I haven’t heard anyone complain about that to me” is a moreaccurate statement.
So next time you say “no one’s complaining” you may be right, but you’re probably wrong. Doesn’t mean you need to do anything about it – not all complaints are worth acting on – but it should serve as a reminder that there’s a lot you don’t know. Rosa Gutiérrez / posted on December 19, 2019 / 2 Comments on Basecamp now supports security keys for two-factor authentication thanks to WebAuthn BASECAMP NOW SUPPORTS SECURITY KEYS FOR TWO-FACTOR AUTHENTICATIONTHANKS TO WEBAUTHN
Back in October, we announced our own two-factor authenticationsolution
,
dropping the requirement for having a Google account to benefit from this necessary level of protection for your account. This solution is based on TOTP (Time-based One Time Password Algorithm): you configure a special _authenticator_ app with a secret we provide and then your app generates codes depending on the time that we can verify on our side after you have entered your credentials, as the second step before login you in. This kind of second-factor authentication is very convenient and easy to use, but it has weaknesses. A sophisticated phishing page could trick you into entering your username and password and then your second-factor code and use it right away to log in into your Basecamp account. This is where FIDO2: Web Authentication (WebAuthn) comes in. I’m happy to announce WE NOW SUPPORT WEBAUTHN for security keys and other authenticators as an alternative 2FA method. WebAuthn is the newer standard for secure authentication on the web and is more widely adopted and supported by browsers and authenticators than itspredecessor, U2F.
With WebAuthn we can offer a 2FA method resilient to fancy phishing attacks because authentication relies on public-key cryptography to prove to Basecamp that it’s indeed _you_ who is logging in, and this proof only works for https://launchpad.37signals.com/ and not for a fake phishing page that copies perfectly our own Launchpad. WebAuthn is currently supported by all modern browsers in desktop andmobile platforms :
* Desktop: Chrome 67, Firefox 60, Opera 54, Safari 13, Edge 18 * Mobile: Chrome for Android 78, Firefox for Android 68, Safari foriOS 13.3
Another cool aspect of WebAuthn is that it opens the door to new kinds of authentication devices and you no longer need to own special hardware keys. You’ll be able to use your phone or laptop and authenticate with a PIN, or use a fingerprint reader or facial recognition. For example, you can use your Android phone’s fingerprint reader in Chrome, Apple’s Touch ID in Chrome for macOS, and facial recognition, fingerprint reader or PIN via Windows Helloin
Edge. Of course, you can also use specific security keys like Yubico’s YubiKeys , which is what I use. Older keys based on the U2F standard work too as WebAuthn is backwards compatible with U2F authenticators, so if you have one of these, you can register it in your Basecamp account as well.Read more
about
how to register your security keys and start using this as your second-factor step for your Basecamp account, and, if you haven’t already, please, please enable 2FA for your Basecamp account now.
------------------------- 🔐👩🏻💻IMPLEMENTING WEBAUTHN AND 2FA FOR YOUR OWNAPPLICATION
Providing your users with modern authentication mechanisms is a reasonably easy task thanks to a variety of open-source libraries in multiple languages. For WebAuthn, we relied on the excellent webauthn-rubyby Cedarcode
. They also have a great Rails demo appto show how to
use this gem. I encourage checking this out if you want to support WebAuthn in your Rails app, it’s super useful. For the client-side code, we ended up using the webauthn-json wrapper by GitHub that handles all encoding, decoding and building the different JSONobjects.
We’ve got questions by some people about how we implemented our 2FA solution based on TOTP, and this is also fairly easy! We again took advantage of an open-source gem, rotpby Mark Percival
, although initially, we had implemented the algorithm described in the RFC for HOTP and the TOTP extension. It’s simple and
totally doable if you prefer not to use an external library. If you do this, I recommend testing your implementation using the provided test vectors . We’ve also followed the security considerations detailed in the RFC:
* We store secrets for TOTP (and recovery codes) encrypted usingAES-256-GCM.
* To account for time drift between the server and clients and transmission delays, we accept one code generated in the time window before and after the current one and use the recommended time-stepsize of 30 seconds.
* We need to ensure a one-time only use of a code, which means we can’t accept the second and subsequent submissions of a code within the same time window. We use Redis to “quarantine” a valid code after it’s been accepted and take advantage of its key expirationmechanisms,
I hope you find this useful! DHH / posted on December 18, 2019 / 14 Comments on Only 1514 of the Basecamp operations budget isspent on Ruby
ONLY 15% OF THE BASECAMP OPERATIONS BUDGET IS SPENT ON RUBY We spend about $3 million every year to run all the versions of Basecamp and our legacy applications. That spend is spread across several on-premise data centers and cloud operations. It does not include the budget for our 7-person strong operations team, this is just the cost of connectivity, machines, power, and such. There’s a lot of spend in that bucket. The biggest line item is the million dollars per year we spend storing 4.5 petabyte worth of files. We used to store these files ourselves, across three physical data centers for redundancy and availability, but the final math and operational hassle didn’t pan out. So now we’re just on S3 with a multi-region redundancy setup. After that, it’s really a big mixed bag. We spend a lot of money on databases, which all run on MySQL. There’s ElasticSearch clusters that power our search. A swarm of Redis servers providing caching. There’s a Kafka pipeline and a Big Query backend for analytics. We have our own direct network connections between the data centers andthe cloud.
Everything I’ve talked about so far is infrastructure we’d run and pay for regardless of our programming language or web framework. Whether we run on Python, PHP, Rust, Go, C++, or whatever, we’d still need databases, we’d still need search, we’d still need tostore files.
So let’s talk about what we spend on our programming language and web framework. It’s about 15%. That’s the price for all our app and job servers. The machines that actually run Ruby on Rails. So against a $3 million budget, it’s about $450,000. That’s it. Let’s imagine that there was some amazing technology that would let us do everything we’re doing with Ruby on Rails, but it was TWICE AS FAST! That would save us about ~$225,000 per year. We spend more money than that on the Xmas gift we give employees at Basecamp every year. And that’s if you could truly go twice as fast, and thus require half the machines, which is not an easy thing to do, despite what microbenchmarks might delude you into thinking. Now imagine we found a true silver bullet. One where the compute spend could be reduced by an order of magnitude. So we’d save about $400,000/year, reducing everything we spend running our app and job servers to an unrealistically low $45,000/year. That reduction wouldn’t even pay for two developers at our average all-in cost atBasecamp!
Now let’s consider the cost of those savings. We spend more money on the 15-strong developer team at Basecamp than our entire operations budget! If we make that team just 15% less productive, it’ll cost us more than everything we spend to run Ruby and Rails at Basecamp! Working with Ruby and Rails is a luxury, yes. Not every company pay their developers as well as we do at Basecamp, so maybe the rates would look a little different there. Maybe some companies are far more compute intensive to run their apps. But for most SaaS companies, they’re in exactly the same ballpark as we are. The slice of the total operations budget spent running the programming language and web framework that powers the app is a small minority of the overall cost. For a company like Basecamp, you’d be mad to make your choice of programming language and web framework on anything but a determination of what’ll make your programmers the most motivated, happy, and productive. Whatever the cost, it’s worth it. It’s worth it on a pure cost/benefit, but, more importantly, it’s worth it in terms of human happiness and potential. This is why we run Ruby. This is why we run Rails. It’s a completebargain.
Jorge Manrubia /
posted on December 17, 2019 / 18 Comments on How I got hired byBasecamp
HOW I GOT HIRED BY BASECAMP I saw the Senior Programmer offerone
day before going to bed. I decided I wasn’t going to apply. I had tried four times since 2013, and I never got to pass the first filter. Each attempt took me a good amount of time and energy, and I didn’t want to go through that pain again. That feeling didn’t last much: the next day, I was already working on my application. I knew I had made a mistake in the past: a too long cover letter. So this time I decided to fit it into two pages: * The letter itself on one page. * A distilled list of my relevant projects and articles on another. The self-imposed two-pages constraint was arbitrary but served its purpose: reducing my big initial dump of assorted ideas and projects into something essential and easy to digest. I decided to add a third page with a “Basecamp timeline” of my previous attempts. I wanted to highlight my genuine motivation, as well as referring to a demoI
prepared years ago. I considered this secondary, so I placed it as a light appendix at the end. I tried to make the application look nice with my limited design skills. They asked for a PDF, but I didn’t want to deliver a boring document. This was the version I sent.
They liked the application, and I was asked to do a technical exercise. Not too big, but interesting and fun. I could solve it on my own terms, and it let me show some technical and communication skills. Then I had three interviews: one with Andrea , the Head of People Ops; another with members of the team: Rosa , Jane, and Justin
; and a final one with Jeremy , the team lead. Each interview left some candidates out, and I always knew how many of us were left. Interviews were not hard. No difficult questions or puzzles.
They felt like chatting about my background and Basecamp with colleagues. They tried to make me feel comfortable and gave me their full attention, which was a big contrast with other past experiences I have had. I listened to this episode about how Basecamp hires many times during the process, and it is a pretty good depiction of what to expect. Because I imagined how good other candidates would be, I always thought it wasn’t going to be me. At first, that worked as a self-defense mechanism against the likely rejection. But the final interviews, when I knew I had a chance, were incrediblynerve-wracking.
I hate describing rare fantastic outcomes as just the logical consequence of some actions. I am proud of the job I did but, when it comes to selecting people, there is no _best_ or _right_, and I was very lucky to be the one. Said that, I hope sharing my cover letter and experience can inspire other future candidates, like I was inspired by others Basecampers before.
Claire Lew / posted on December 16, 2019 / 1 Comment on 6 mistakes to avoid during your first 30 days as a new manager 6 MISTAKES TO AVOID DURING YOUR FIRST 30 DAYS AS A NEW MANAGER YOU’RE BOUND TO MAKE MISTAKES AS A NEW MANAGER – BUT HERE ARE THE BIGGEST, MOST COMMON PITFALLS TO AVOID IN YOUR FIRST 30 DAYS AS A NEWMANAGER.
I’ve never quite known the proper word to describe the feeling of being simultaneously elated _and_ terrified – but your first 30 days as a new manager is that feeling. You don’t want to mess this up. You’ve been reading The EffectiveExecutive
and High
Output Management
,
googling “management 101” and “first 30 days as a new manager”, and talking to mentors about the “should’s” and “should not’s” of leadership… all in hopes that you won’t make any egregious blunders during your first month on the job. But quite frankly, it’s bound to happen. You’re going to make a mistake, or two, or twenty. When we’re new as leaders, we operate out of instinct. It’s an instinct formulated from what our former bosses have done, honed by our own value system of what we personally prefer, and our best guess for “So I think this will work?” But we don’t _really_ know if it’ll work. That’s where I can help 🙂 Keep reading “6 mistakes to avoid during your first 30 days as a newmanager”
1 2 3
… 91
Next »
GET SVN DELIVERED STRAIGHT TO YOUR INBOX. One email per week. All the latest posts. No spam, ever.Email Address
Signal v. Noise
* Greatest Hits
* Rework Podcast
Search for:
Hosted by Pressable
and proudly powered by WordPress . 1999 – 2020 Basecamp . Privacy policy.
Details
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0