HN user

wikwocket

833 karma
Posts4
Comments493
View on HN

Say what you will about Twitter, but is a globally distributed database with trillions of entries, which has to add and sort and display billions of those entries in real-time for 100+ million daily active users. And it has to resist nation-state bad actors doing everything they can to corrupt it.

As a result, I would guess a lot of Twitter's engineers are working on infrastructure, internal tooling, and moderation.

Regarding your example, doubling the size of a tweet, that was probably more work than one dev writing ALTER TABLE tweets MODIFY tweet_text VARCHAR(280). In fact, I don't know if you were around 20 years ago or so, but there was a similarly scoped project to double the number of digits we were storing the year in. ;)

Would you want to date someone who seemed desperate to get into a relationship? Who seemed like they were having trouble getting a relationship at all, let alone a good healthy one? Same principle.

Since these are riffs on fizzbuzz, the goal is just to evaluate whether a candidate can use programming to solve these at all, i.e. whether they can 1) think through how to accomplish a basic task with some data and code, and 2) implement it in a language they know.

The goal of fizzbuzz in a phone screen should not be to see if someone can solve it in an optimal memory-efficient framework-idiomatic way. Clever syntax and data structure use is lovely, but these are really about finding whether someone can use a 'for' loop and an 'if' condition.

For what it's worth, protected branches are pretty clearly listed as a "Github Pro" feature in their pricing page.

I agree that it'd be nice if they warned you about features you're using that will be turned off, but I don't think it's unreasonable to expect that people requesting downgrades understand which features are in which plan.

Maybe this could be suggested to GitHub's Paperclips project, to avoid future confusion?

I get your analogy, but I think there are tons of hammer conferences.

There are conferences for most any language with wide adoption. There's also a Slack conference (not "TeamChatConf," but a "Slack Frontiers"). There's a GitHub conf (not "OpenSourceDevCon," but "GitHub Universe"). There is a Datadog conference, and so on and so on.

Maybe C just doesn't have one big company, or an ecosystem of smaller ones, that stand to benefit from gathering a bunch of C devs in one place.

I'm sure lots of e-commerce companies feel this pressure. Where I work, an Additional Revenue team was created for this kind of thing - sponsored results, ads, cross-sells, etc. It's viewed as free money on the table, since it is relatively easy to estimate the income and the dev work required, but much harder to measure user experience and customer loyalty.

Random unsolicited internet advice: never decide not to apply because you don't feel good enough. We all experience imposter syndrome, and most job postings are just wishlists of unrealistic qualifications copy-pasted by HR anyway (this posting excepted!).

In general, don't disqualify yourself. That's the hiring manager's job. Your job is to qualify yourself: present your best self, and demonstrate professional confidence and competence.

The inability to filter explicit songs out is maddening! And it's a glaring omission to anyone with young children. I have seen it skip from a My Little Pony song to an explicit Patton Oswalt standup bit (perhaps because he voiced a character once... I have no clue) while my daughter was listening.

Another annoying one is how you can choose an exact song to play on tablet or on PS4, but not from your phone - you can only shuffle play there. Try explaining that to a 5 year old.

As a parent, I agree. One should not shy away from talking about "advanced" topics. Kids are naturally curious and bright and I think we should encourage their desire to learn and understand complex things.

I worry that if you try to dumb down things for kids, they might become interested in dumb things. :)

Also, as the OP mentions, it can be a fun "pedagogical challenge" to try to explain free theorems or turing completeness or MySQL sharding to a young child. And you may find a clever way to describe it, that they can easily understand, which is satisfying for both of you.

Nothing really prevents this; a company I work with does something similar, and as long as you engineer your use of the platforms to be flexible and not rely on platform-specific features (for example MailChimp and SendGrid use slightly different templating approaches, and support different amounts of logic in the templates), it's doable.

This is the same idea as making your system work across availability zones/datacenters/cloud providers. At a certain scale it becomes a good idea.

Based on comments on HN, people are surprised that a company that "just runs a website" can employ "so many people." But this is a platform processing hundreds of millions of dollars among hundreds of thousands of users.

Here's a rough sketch of possible headcount. I'm making these numbers up, but maybe you can see how it does take a lot of work to make a business like this work.

    - Engineering
    - 5 - frontend dev/QA (web, tablet, responsive, A/B tests)
    - 5 - backend dev/QA (app logic, video/content hosting, scaling up & out)
    - 5 - payments dev/QA (payments is huge and complicated, probably a few payment processor partners)
    - 5 - app dev/QA (iOS and Android)
    - 5 - product owners (web, 2 apps, email, internal tools for agents etc)
    - 5 - management (cto, engr manager, director etc)
    - Business
    - 5 - creator experience, patron experience, outreach, community
    - 5 - marketing, advertising, lifecycle email and email campaigns
    - 5 - partnerships, relations with big creators, collaborations
    - 5 - fraud detection and remediation (fraud is huge, chargebacks are expensive, and the ability to charge $1 to test cards attracts fraudsters)
    - Operations
    - 20 - agents handling creator/patron requests/issues (more if 24/7 or multiple languages)
    - 5 - ops/systems (keep everything running, downtime means less income)
    - 5 - HR, recruiting, accounting, etc
This is probably under-representing the business side since I am from the engineering side. Also it looks like they are hiring more people for all these teams. If you want more info, you can always look up Patreon's job openings: https://angel.co/patreon/jobs https://boards.greenhouse.io/patreon#.WcFitC-6z-Y https://www.glassdoor.com/Jobs/Patreon-Jobs-E915057.htm

They did not do hard research, since they are still designing their game, but they did present it to playtesters. I think this is an appropriate level of diligence for a product early in the design phase, it's the equivalent of the "hallway usability testing" recommended for agile teams.

It may be impossible to say right now whether this change helps kids get better at programming faster, but presumably, more kids will play a game that they feel is more approachable, similar to how the playtesters responded.

Absolutely. "Programming" with cute icons may not make you a "great" programmer, but that's not the goal. It's to get you interested in the idea of telling a computer to do cool things.

As an example, my daughter had no real interest in doing anything with a computer until we showed her she could move Moana's raft around with some Scratch/Blockly code in a Disney Hour of Code game. Therefore, I think these games are absolutely worthwhile. Let kids start learning the "hard parts" of programming after we've got them hooked!

One micro-solution to the "what's deployed right now" problem is to have a health-check url for your app, which includes info like what git commit was used to create the current build, when it was deployed, and some basic application health info.

You can monitor this for basic uptime monitoring and refer to it to sanity check which version is deployed. We do this at my place and it's super convenient.

I wouldn't lose sleep over it. Deep Learning is great at making recommendations or classifications, given petabytes of data, but not even close to automatically solving general-purpose computing problems.

For example, I can type an error message into Google, and get sent to the solution, since thousands of others before me have provided the training data. But can I just describe my task to Google and have it produce the solution? Not even close.

For what it's worth, Groovy does have types. It is not dynamically typed, but optionally typed. Throw a @CompileStatic annotation on your classes (or use a global withConfig) and it is very nicely typed, using Java's type system.

I think this is a good point. There's a real risk that a homework you think is simple is a little more complicated because you're making assumptions. I think it's good to have a few current team members actually code it up (not just whiteboard it), and also to talk with a few candidates to see how long it took them, to calibrate this.

It's also better to aim small (a la FizzBuzz) and walk up the complexity slowly, as opposed to starting with "Solve this ticket from our prod JIRA queue, with tests please" (which I have actually been given as a test!)

I like to aim for a very simple task, like proposed above, with maybe one non-obvious part or edge case (which the spec mentions, so it's not a trick question). Just enough to demonstrate a) clean coding for the simple parts, and b) ability to solve something without using a completely naive solution.

I think this is good advice. It's better to see first-hand pain points that businesses experience as opposed to looking for an "idea" i.e. dreaming of a solution and then trying to find a matching problem that it solves.

If you start up with an "Uber for X"-tier idea, you may spend half your time educating people that they could use your solution.

On the other hand, it is difficult to watch a non-techie business worker perform their daily tasks for a few hours without seeing something that could be improved. A macro here, some workflow automation there, etc. Find a theme and you may be able to build something that solves a lot of problems.

I think many of us do enjoy complexity (when it works), and have a bias for complex systems that seem cool. After all, one of the reasons many of us are in engineering is that we aren't afraid of complexity, and indeed have an aptitude for it.

I'd like to say more about how we can recognize and manage this bias, but first I want to finish my general purpose AI-driven comment reply engine. I just need to finish migrating the front-end from Angular 2 to React and the backend from Ruby to Go, and then it should be pretty streamlined.

Location: Chicago suburbs

Remote: Yes

Willing to relocate: No

Technologies: Java, HTML, JavaScript, web services, REST, Docker, Hadoop, SQL

Résumé/CV: https://www.dropbox.com/s/sidaefy4pmf9xbm/Resume%20-%20Hacke...

Email: wikwocket@gmail.com

I'm a software engineer with years of experience coding for desktop, web, and server. I've built enterprise web apps and internal tools. I've taken rough mockups and turned them into full-stack cloud-hosted solutions. I currently lead a team building a next-generation business intelligence portal web application.

I love architecture and software design. I work in Java, but I like to be proficient in everything from JavaScript frameworks to big data databases.

I am working on Neal Stephenson's REAMDE. I say "working on" as opposed to "finishing" since it's more of a side job than a casual read. You don't really make progress, you just sort of periodically put another hundred pages between you and the front cover, without really budging how far down the binding your bookmark is.

REAMDE is sort of like if someone looked at the average globe-spanning complicated plot and action scenes of a Bond movie, and said, "I guess it's alright, you know, for a short story."

To answer your question, I am changing my metric from "books read per trip the library" to "trips to the library (to renew my loan) per book."

An hour seems a good compromise, since one reason you may want to change your vote would be if the post was edited after you voted.

An hour provides enough time for the edit to happen, and for you to see it and change your vote.

If this is not a target use case and you only want people to be able to undo misclicks, then 5-10 minutes may be adequate.

Thanks for the video link - the slides are great, but the video is even better, since a bunch of the slides are animated. Actually, 'animated' describes the whole presentation pretty well. :) Clearly a thought-out and well-crafted presentation, and lots of insights.

Make a backup NOW 10 years ago

In a timely note, World Backup Day is March 31st: http://www.worldbackupday.com/en/

Sadly, in my experience, we only back stuff up after personally seeing a big loss. And there's a strong cobbler's-children effect: we who are technical and should have the best backups often forget to, because we're confident in the technology, or have too many other tasks on our lists.

If you ever charged $250 an hour (even if that was the "I hate you go away" rate), then congrats, that's your new hourly rate. Everyone paying less is getting a screaming deal on the friends and family plan.

Try charging more for new clients, and walking your rate up each year for existing clients. In my experience this results in one awkward phone call/email exchange a year and approximately zero negative side effects.

This is how I brought my rate from $30 an hour to $90, also in the Midwest.

If you have played your cards right, your last day should not be anything special, as you should have started wrapping most things up weeks to months ago. Then your last day can simply be doing any last-minute cleanup, administrivia, anything your boss specifically requests, and taking a nice lunch with colleagues.

If this is not the case, then the usual list of recommendations for leaving a job apply, just applied faster and more selectively. :)

If it is no longer common to do this, you have the potential to stand out all the more for performing this social courtesy.

This is not one of those things like wearing a suit to a shorts-and-sandals startup, where they say "Oh what a dweeb, he's totally a not a culture fit here." No one thinks badly of sending a simple thank you note. Don't write them a love letter or anything, but spend the 2 minutes to write a sincere custom note, and snail mail it if possible, or email it otherwise.