-
Netflix is responsible for about 1/3 of downstream traffic in NA
-
Responsible team in the company is called "edge engineering"
- Apart from resiliency/scaling, also cares about high velocity product innovation and real time health insights
-
Basic architecture:
- end-user devices make requests to ELBs, which delegates to zuul, which routes to origin servers serving APIs
Spurred by recent events (https://news.ycombinator.com/item?id=8244700), this is a quick set of jotted-down thoughts about the state of "Semantic" Versioning, and why we should be fighting the good fight against it.
For a long time in the history of software, version numbers indicated the relative progress and change in a given piece of software. A major release (1.x.x) was major, a minor release (x.1.x) was minor, and a patch release was just a small patch. You could evaluate a given piece of software by name + version, and get a feeling for how far away version 2.0.1 was from version 2.8.0.
But Semantic Versioning (henceforth, SemVer), as specified at http://semver.org/, changes this to prioritize a mechanistic understanding of a codebase over a human one. Any "breaking" change to the software must be accompanied with a new major version number. It's alright for robots, but bad for us.
SemVer tries to compress a huge amount of information — the nature of the change, the percentage of users that wil
BEARER='...' | |
def load_tweets(query,since_id=nil,lang="en",page=1,rpp=100) | |
res=RestClient.get('https://api.twitter.com/1.1/search/tweets.json', | |
{:params=> {:q=>query, :lang=>lang,:count=>rpp,:result_type=>:recent,:since_id=>since_id}, | |
:accept=>:json, | |
:Authorization => "Bearer #{BEARER}"}) | |
puts "query '#{query}'\n since id #{since_id} result #{res.code}" | |
return [] unless res.code==200 | |
data=JSON.parse(res.to_str) |
Answering an Stackoverflow Question.
I am learning Neo4j and decided to take one of the sample queries and add a twist to it. I took this example http://docs.neo4j.org/chunked/stable/cypher-cookbook-co-favorited-places.html and wanted to say what if there was an additional attribute that you could use to filter the results by. My test I put together was to have tags in the graph as well and then I wanted to search by overlapped favorites desc then by overlapping tags desc.
Here is the sample data I am using:
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
extension Array { | |
func first() -> Element? { | |
if isEmpty { | |
return nil | |
} | |
return self[0] | |
} | |
func last() -> Element? { |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>Styled Select</title> | |
</head> | |
<style> | |
* { |
JSON, MessagePack, and Google's Protocol Buffers are all awesome. Here's how they're awesome on different client environments and how to use them on your rails env.
Some links:
- JSON: http://json.org/
- MsgPack: http://msgpack.org/
- ProtoBufs: https://code.google.com/p/protobuf/
Output from Ruby Client:
- Write functions() in lower case, KEYWORDS in upper.
START
each keyword clause
ON
a new line.- Use either
camelCase
orsnake_case
for node identifiers but be consistent. - Relationship type names should use
UPPER_CASE_AND_UNDERSCORES
. - Label names should use
CamelCaseWithInitialCaps
. MATCH (clauses)-->(should)-->(always)-->(use)-->(parentheses)-->(around)-->(nodes)
- Backticks `cân éscape odd-ch@racter$ & keyw0rd$` but should be a code smell.
MATCH (n1:node { n.id = "1234" }) | |
MATCH (n0)-[r1]->(n1)-[r2]->(n2) | |
DELETE r1, n1, r2 | |
MERGE (n0)-[:NEXT]->(n2) |