jm + coding   310

Regexp Disaster
Course notes from Gerald Jay Sussman's "Adventures in Advanced Symbolic Programming" class at MIT. Hard to argue with this:
The syntax of the regular-expression language is awful. There are various incompatable forms of the language and the quotation conventions are baroquen [sic]. Nevertheless, there is a great deal of useful software, for example grep, that uses regular expressions to specify the desired behavior.

Although regular-expression systems are derived from a perfectly good mathematical formalism, the particular choices made by implementers to expand the formalism into useful software systems are often
disastrous: the quotation conventions adopted are highly irregular; the egregious misuse of parentheses, both for grouping and for backward reference, is a miracle to behold. In addition, attempts to
increase the expressive power and address shortcomings of earlier designs have led to a proliferation of incompatible derivative languages.


(via Rob Pike's twitter: https://twitter.com/rob_pike/status/755856685923639296)
regex  regexps  regular-expressions  functional  combinators  gjs  rob-pike  coding  languages 
6 days ago by jm
Rubular
'a Ruby regular expression editor and tester'. Great for prototyping regexps with a little set of test data, providing a neat permalink for the results
regex  regexp  ruby  tools  coding  web  editors  testing 
22 days ago by jm
IMDB on automation
quotable: "I spend a lot of time on this task. I should write a program automating it!"
ifttt  quotes  automation  coding  hacks  reality 
22 days ago by jm
Koloboke Collections
Interesting new collections lib for Java 6+; generates Map-like and Set-like collections at runtime based on the contract annotations you desire. Fat (20MB) library-based implementation also available
collections  java  koloboke  performance  coding 
8 weeks ago by jm
Lamport timestamps
'The algorithm of Lamport timestamps is a simple algorithm used to determine the order of events in a distributed computer system. As different nodes or processes will typically not be perfectly synchronized, this algorithm is used to provide a partial ordering of events with minimal overhead, and conceptually provide a starting point for the more advanced vector clock method. They are named after their creator, Leslie Lamport.'

See also vector clocks (which I think would be generally preferable nowadays).
vector-clocks  distributed  programming  algorithm  clocks  time  leslie-lamport  coding  distcomp 
9 weeks ago by jm
GitLab Container Registry
GitLab continue to out-innovate Github, which is just wanking around with breaking the UI these days
gitlab  github  git  ci  cd  containers  docker  deployment  coding 
9 weeks ago by jm
uber-common/infer-plugin
Gradle plugin that allows easy integration with the infer static analyzer
infer  java  static-analysis  bugs  coding  null 
10 weeks ago by jm
Go best practices, six years in
from Peter Bourgon. Looks like a good list of what to do and what to avoid
go  golang  best-practices  coding  guidelines 
12 weeks ago by jm
Darts, Dice, and Coins
Earlier this year, I asked a question on Stack Overflow about a data structure for loaded dice. Specifically, I was interested in answering this question: "You are given an n-sided die where side i has probability pi of being rolled. What is the most efficient data structure for simulating rolls of the die?"

This data structure could be used for many purposes. For starters, you could use it to simulate rolls of a fair, six-sided die by assigning probability 1616 to each of the sides of the die, or a to simulate a fair coin by simulating a two-sided die where each side has probability 1212 of coming up. You could also use this data structure to directly simulate the total of two fair six-sided dice being thrown by having an 11-sided die (whose faces were 2, 3, 4, ..., 12), where each side was appropriately weighted with the probability that this total would show if you used two fair dice. However, you could also use this data structure to simulate loaded dice. For example, if you were playing craps with dice that you knew weren't perfectly fair, you might use the data structure to simulate many rolls of the dice to see what the optimal strategy would be. You could also consider simulating an imperfect roulette wheel in the same way.

Outside the domain of game-playing, you could also use this data structure in robotics simulations where sensors have known failure rates. For example, if a range sensor has a 95% chance of giving the right value back, a 4% chance of giving back a value that's too small, and a 1% chance of handing back a value that's too large, you could use this data structure to simulate readings from the sensor by generating a random outcome and simulating the sensor reading in that case.

The answer I received on Stack Overflow impressed me for two reasons. First, the solution pointed me at a powerful technique called the alias method that, under certain reasonable assumptions about the machine model, is capable of simulating rolls of the die in O(1)O(1) time after a simple preprocessing step. Second, and perhaps more surprisingly, this algorithm has been known for decades, but I had not once encountered it! Considering how much processing time is dedicated to simulation, I would have expected this technique to be better- known. A few quick Google searches turned up a wealth of information on the technique, but I couldn't find a single site that compiled together the intuition and explanation behind the technique.


(via Marc Brooker)
via:marcbrooker  algorithms  probability  algorithm  coding  data-structures  alias  dice  random 
april 2016 by jm
A Guide to Naming Variables
good rules of thumb for variable naming, from ex-coworker Jacob Gabrielson
guidelines  rules  naming  variables  coding  style 
april 2016 by jm
Elias gamma coding
'used most commonly when coding integers whose upper-bound cannot be determined beforehand.'
data-structures  algorithms  elias-gamma-coding  encoding  coding  numbers  integers 
april 2016 by jm
US government commits to publish publicly financed software under Free Software licenses
Wow, this is significant:
At the end of last week, the White House published a draft for a Source Code Policy. The policy requires every public agency to publish their custom-build software as Free Software for other public agencies as well as the general public to use, study, share and improve the software. At the Free Software Foundation Europe (FSFE) we believe that the European Union, and European member states should implement similar policies. Therefore we are interested in your feedback to the US draft.
government  open-source  coding  licenses  fsf  free-software  source-code  us-politics  usa 
april 2016 by jm
GitHub now supports "squash on merge"
yay.

On the other hand -- http://www.thecaucus.net/#/content/caucus/tech_blog/516 is a good explanation of why not to adopt it. Pity GitHub haven't made it a per-review option...
github  code-reviews  squashing  merges  git  coding 
april 2016 by jm
A programming language for E. coli
Mind = blown.
MIT biological engineers have created a programming language that allows them to rapidly design complex, DNA-encoded circuits that give new functions to living cells. Using this language, anyone can write a program for the function they want, such as detecting and responding to certain environmental conditions. They can then generate a DNA sequence that will achieve it.
"It is literally a programming language for bacteria," says Christopher Voigt, an MIT professor of biological engineering. "You use a text-based language, just like you're programming a computer. Then you take that text and you compile it and it turns it into a DNA sequence that you put into the cell, and the circuit runs inside the cell."
dna  mit  e-coli  bacteria  verilog  programming  coding  biohacking  science 
april 2016 by jm
These unlucky people have names that break computers
Pat McKenzie's name is too long to fit in Japanese database schemas; Janice Keihanaikukauakahihulihe'ekahaunaele's name was too long for US schemas; and Jennifer Null suffers from the obvious problem
databases  design  programming  names  coding  japan  schemas 
march 2016 by jm
Javascript libraries and tools should bundle their code
If you have a million npm dependencies, distribute them in the dist package; aka. omnibus packages for JS
packaging  omnibus  npm  webpack  rollup  dependencies  coding  javascript 
march 2016 by jm
Uncle Bob on "giving up TDD"
This is a great point, and one I'll be quoting:
Any design that is hard to test is crap. Pure crap. Why? Because if it's hard to test, you aren't going to test it well enough. And if you don't test it well enough, it's not going to work when you need it to work. And if it doesn't work when you need it to work the design is crap.


Amen!
testing  tdd  uncle-bob  coding  design  testability  unit-tests 
march 2016 by jm
The Three Go Landmines
'There are three easy to make mistakes in go. I present them here in the way they are often found in the wild, not in the way that is easiest to understand. All three of these mistakes have been made in Kubernetes code, getting past code review at least once each that I know of.'
k8s  go  golang  errors  coding  bugs 
march 2016 by jm
Flow
a static type checker for Javascript, from Facebook
javascript  code-analysis  coding  facebook  types  strong-types 
march 2016 by jm
Cat-Herd's Crook
Nice approach from MongoDB:
we’ve recently gained momentum on standardizing our [cross-platform test] drivers. Human-readable, machine-testable specs, coded in YAML, prove which code conforms and which does not. These YAML tests are the Cat-Herd’s Crook: a tool to guide us all in the same direction.
mongodb  testing  unit-tests  yaml  multi-platform  coding 
march 2016 by jm
How to do distributed locking
A critique of the "Redlock" locking algorithm from Redis by Martin Kleppman. antirez responds here: http://antirez.com/news/101 ; summary of followups: https://storify.com/martinkl/redlock-discussion
distributed  locking  redis  algorithms  coding  distcomp  redlock  martin-kleppman  zookeeper 
february 2016 by jm
git integrity - Google Groups
It seems git's default behavior in many situations is -- despite communicating objectID by content-addressable hashes which should be sufficient to assure some integrity -- it may not actually bother to *check* them.  Yes, even when receiving objects from other repos.  So, enabling these configuration parameters may "slow down" your git operations.  The return is actually noticing if someone ships you a bogus object.  Everyone should enable these.
git  security  integrity  error-checking  dvcs  version-control  coding 
february 2016 by jm
The general birthday problem
Good explanation and scipy code for the birthday paradox and hash collisions
hashing  hashes  collisions  birthday-problem  birthday-paradox  coding  probability  statistics 
february 2016 by jm
Schema evolution in Avro, Protocol Buffers and Thrift
Good description of this key feature of decent serialization formats
avro  thrift  protobuf  schemas  serialization  coding  interop  compatibility 
january 2016 by jm
"So you have a mess on your hands" [png]
Excellent flowchart of how to fix common git screwups (via ITC slack)
git  reference  flowchart  troubleshooting  help  coding  via:itc 
january 2016 by jm
How open-source software developers helped end the Ebola epidemic in Sierra Leone
Little known to the rest of the world, a team of open source software developers played a small but integral part in helping to stop the spread of Ebola in Sierra Leone, solving a payroll crisis that was hindering the fight against the disease.

Emerson Tan from NetHope, a consortium of NGOs working in IT and development, told the tale at the Chaos Communications Congress in Hamburg, Germany. “These guys basically saved their country from complete collapse. I can’t overestimate how many lives they saved,” he said about his co-presenters, Salton Arthur Massally, Harold Valentine Mac-Saidu and Francis Banguara, who appeared over video link.
open-source  software  coding  payroll  sierra-leone  ebola  ccc 
january 2016 by jm
Introducing Netty-HTTP from Cask
netty-http library solves [Netty usability issues] by using JAX-RS annotations to build a HTTP path routing layer on top of netty. In addition, the library implements a guava service to manage the HTTP service. netty-http allows users of the library to just focus on writing the business logic in HTTP handlers without having to worry about the complexities of path routing or learning netty pipeline internals to build the HTTP service.

We've written something very similar, although I didn't even bother supporting JAX-RS annotations -- just a simple code-level DSL.
jax-rs  netty  http  cask  java  services  coding 
december 2015 by jm
The End of Dynamic Languages
This is my bet: the age of dynamic languages is over. There will be no new successful ones. Indeed we have learned a lot from them. We’ve learned that library code should be extendable by the programmer (mixins and meta-programming), that we want to control the structure (macros), that we disdain verbosity. And above all, we’ve learned that we want our languages to be enjoyable.

But it’s time to move on. We will see a flourishing of languages that feel like you’re writing in a Clojure, but typed. Included will be a suite of powerful tools that we’ve never seen before, tools so convincing that only ascetics will ignore.
programming  scala  clojure  coding  types  strong-types  dynamic-languages  languages 
november 2015 by jm
CiteSeerX — The Confounding Effect of Class Size on the Validity of Object-oriented Metrics
A lovely cite from @conor. Turns out the sheer size of an OO class is itself a solid fault-proneness metric
metrics  coding  static-analysis  error-detection  faults  via:conor  oo 
november 2015 by jm
Cache-friendly binary search
by reordering items to optimize locality. Via aphyr's dad!
caches  cache-friendly  optimization  data-locality  performance  coding  algorithms 
november 2015 by jm
PICO-8:
PICO-8 is a fantasy console for making, sharing and playing tiny games and other computer programs. When you turn it on, the machine greets you with a shell for typing in Lua commands and provides simple built-in tools for creating your own cartridges.


So cute! See also Voxatron, something similar for voxel-oriented 3D gaming
consoles  games  gaming  lua  coding  retro  2d  pico-8 
november 2015 by jm
GTA V - Graphics Study
how GTAV renders a single frame. this is amazingly detailed
games  graphics  coding  gta  gtav  3d  rendering  gfx 
november 2015 by jm
It's an Emulator, Not a Petting Zoo: Emu and Lambda
a Lambda emulator in Python, suitable for unit testing lambdas
lambda  aws  coding  unit-tests  dev 
october 2015 by jm
Twins denied driver’s permit because DMV can’t tell them apart
"The computer can recognize faces, a feature that comes in handy if somebody’s is trying to get an illegal ID. It apparently is not programmed to detect twins."

As Hilary Mason put it: "You do not want to be an edge case in this future we are building."
future  grim  bugs  twins  edge-cases  coding  fail  dmv  software  via:hmason 
october 2015 by jm
How Netty is used at Layer
pretty conventional HTTP/1.1, WebSockets and HTTP/2 front-end services with modern Netty practices
netty  http  api-services  coding  java  servers 
october 2015 by jm
Hologram
Hologram exposes an imitation of the EC2 instance metadata service on developer workstations that supports the [IAM Roles] temporary credentials workflow. It is accessible via the same HTTP endpoint to calling SDKs, so your code can use the same process in both development and production. The keys that Hologram provisions are temporary, so EC2 access can be centrally controlled without direct administrative access to developer workstations.
iam  roles  ec2  authorization  aws  adroll  open-source  cli  osx  coding  dev 
october 2015 by jm
Defending Your Time
great post from Ross Duggan on avoiding developer burnout
coding  burnout  productivity  work 
october 2015 by jm
_What We Know About Spreadsheet Errors_ [paper]
As we will see below, there has long been ample evidence that errors in spreadsheets are pandemic. Spreadsheets, even after careful development, contain errors in one percent or more of all formula cells. In large spreadsheets with thousands of formulas, there will be dozens of undetected errors. Even significant errors may go undetected because formal testing in spreadsheet development is rare and because even serious errors may not be apparent.
business  coding  maths  excel  spreadsheets  errors  formulas  error-rate 
october 2015 by jm
How IFTTT develop with Docker
ugh, quite a bit of complexity here
docker  osx  dev  ops  building  coding  ifttt  dns  dnsmasq 
october 2015 by jm
Retina
a regex-based, Turing-complete programming language. It's main feature is taking some text via standard input and repeatedly applying regex operations to it (e.g. matching, splitting, and most of all replacing). Under the hood, it uses .NET's regex engine, which means that both the .NET flavour and the ECMAScript flavour are available.


Reminscent of sed(1); see http://codegolf.stackexchange.com/a/58166 for an example Retina program
retina  regexps  regexes  regular-expressions  coding  hacks  dot-net  languages 
september 2015 by jm
httpbin(1): HTTP Client Testing Service
Testing an HTTP Library can become difficult sometimes. RequestBin is fantastic for testing POST requests, but doesn't let you control the response. This exists to cover all kinds of HTTP scenarios. Additional endpoints are being considered.
http  httpbin  networking  testing  web  coding  hacks 
september 2015 by jm
The Pixel Factory
amazing slideshow/WebGL demo talking about graphics programming, its maths, and GPUs
maths  graphics  webgl  demos  coding  algorithms  slides  tflops  gpus 
september 2015 by jm
You're probably wrong about caching
Excellent cut-out-and-keep guide to why you should add a caching layer. I've been following this practice for the past few years, after I realised that #6 (recovering from a failed cache is hard) is a killer -- I've seen a few large-scale outages where a production system had gained enough scale that it required a cache to operate, and once that cache was damaged, bringing the system back online required a painful rewarming protocol. Better to design for the non-cached case if possible.
architecture  caching  coding  design  caches  ops  production  scalability 
september 2015 by jm
Algorithmist
The Algorithmist is a resource dedicated to anything algorithms - from the practical realm, to the theoretical realm. There are also links and explanation to problemsets.


A wiki for algorithms. Not sure if this is likely to improve on Wikipedia, which of course covers the same subject matter quite well, though
algorithms  reference  wikis  coding  data-structures 
september 2015 by jm
Sorting out graph processing
Some nice real-world experimentation around large-scale data processing in differential dataflow:
If you wanted to do an iterative graph computation like PageRank, it would literally be faster to sort the edges from scratch each and every iteration, than to use unsorted edges. If you want to do graph computation, please sort your edges.

Actually, you know what: if you want to do any big data computation, please sort your records. Stop talking sass about how Hadoop sorts things it doesn't need to, read some papers, run some tests, and then sort your damned data. Or at least run faster than me when I sort your data for you.
algorithms  graphs  coding  data-processing  big-data  differential-dataflow  radix-sort  sorting  x-stream  counting-sort  pagerank 
august 2015 by jm
Someone discovered that the Facebook iOS application is composed of over 18,000 classes. : programming
_FBGraphQLConnectionStorePersistentPageLoaderOperationDelegate-Protocol.h
_FBReactionAcornSportsContentSettingsSetShouldNotPushNotificationsMutationCall.h
FBBoostedComponentCreateInputDataCreativeObjectStorySpecLinkDataCallToActionValue.h
FBEventUpdateNotificationSubscriptionLevelMutationOptimisticPayloadFactoryProtocol-Protocol.h


I just threw up a little.

See also https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920 , in which the FB Android devs happily reveal that they hot-patch the Dalvik VM at runtime to work around a limit -- rather than refactoring their app.
facebook  horrors  coding  ios  android  dalvik  hot-patching  apps 
august 2015 by jm
Preventing Dependency Chain Attacks in Maven
using a whitelist of allowed dependency JARs and their SHAs
security  whitelisting  dependencies  coding  jar  maven  java  jvm 
august 2015 by jm
Advantages of Monolithic Version Control
another Dan Luu post -- good summary of the monorepo's upside
monorepo  git  mercurial  versioning  source-control  coding  dependencies 
august 2015 by jm
Implementing Efficient and Reliable Producers with the Amazon Kinesis Producer Library - AWS Big Data Blog
Good advice on production-quality, decent-scale usage of Kinesis in Java with the official library: batching, retries, partial failures, backoff, and monitoring. (Also, jaysus, the AWS Cloudwatch API is awful, looking at this!)
kpl  aws  kinesis  tips  java  batching  streaming  production  cloudwatch  monitoring  coding 
august 2015 by jm
Testing without mocking in Scala
mocks are the sound of your code crying out, "please structure me differently!"


+1
scala  via:jessitron  mocks  mock-objects  testing  testability  coding 
july 2015 by jm
A Tour Through Random Ruby
turns out Ruby has a good set of random-text-generation gems on offer
random  ruby  coding  text-generation  markov-chain  gems 
july 2015 by jm
Java lambdas and performance
Lambdas in Java 8 introduce some unpredictable performance implications, due to reliance on escape analysis to eliminate object allocation on every lambda invocation. Peter Lawrey has some details
lambdas  java-8  java  performance  low-latency  optimization  peter-lawrey  coding  escape-analysis 
july 2015 by jm
ArnoldC
'A programming language based on the one liners of Arnold Schwarzenegger'. Presenting hello.arnoldc:

IT'S SHOWTIME
TALK TO THE HAND "hello world"
YOU HAVE BEEN TERMINATED

(via Robert Walsh)
via:rjwalsh  c  arnold-schwarzenegger  one-liners  funny  coding  silly  languages 
july 2015 by jm
Codeface
a good collection of coding fonts (via Tony Finch)
via:fanf  fonts  coding  ui 
june 2015 by jm
Git team workflows: merge or rebase?
Well-written description of the pros and cons. I'm a rebaser, fwiw.

(via Darrell)
via:darrell  git  merging  rebasing  history  git-log  coding  workflow  dev  teams  collaboration  github 
june 2015 by jm
Evidence-Based Software Engineering

Objective: Our objective is to describe how software engineering might benefit from an evidence-based approach and to identify the potential difficulties associated with the approach.
Method: We compared the organisation and technical infrastructure supporting evidence-based medicine (EBM) with the situation in software engineering. We considered the impact that factors peculiar to software engineering (i.e. the skill factor and the lifecycle factor) would have on our ability to practice evidence-based software engineering (EBSE).
Results: EBSE promises a number of benefits by encouraging integration of research results with a view to supporting the needs of many different stakeholder groups. However, we do not currently have the infrastructure needed for widespread adoption of EBSE. The skill factor means software engineering experiments are vulnerable to subject and experimenter bias. The lifecycle factor means it is difficult to determine how technologies will behave once deployed.
Conclusions: Software engineering would benefit from adopting what it can of the evidence approach provided that it deals with the specific problems that arise from the nature of software engineering.


(via Mark Dennehy)
papers  toread  via:markdennehy  software  coding  ebse  evidence-based-medicine  medicine  research 
june 2015 by jm
For a Good Strftime
'Easy Skeezy Ruby Date/Time Formatting' -- or indeed anywhere else strftime() is supported
strftime  time  date  formatting  coding  ruby  via:oisin 
june 2015 by jm
Facebook Infer
New static analysis goodnews, freshly open-sourced by Facebook:
Facebook Infer uses logic to do reasoning about a program's execution, but reasoning at this scale — for large applications built from millions of lines of source code — is hard. Theoretically, the number of possibilities that need to be checked is more than the number of estimated atoms in the observable universe. Furthermore, at Facebook our code is not a fixed artifact but an evolving system, updated frequently and concurrently by many developers. It is not unusual to see more than a thousand modifications to our mobile code submitted for review in a given day. The requirements on the program analyzer then become even more challenging because we expect a tool to report quickly on these code modifications — in the region of 10 minutes — to fit in with developers' workflow. Coping with this scale and velocity requires advanced mathematical techniques. Facebook Infer uses two such techniques: separation logic and bi-abduction.

Separation logic is a theory that allows Facebook Infer's analysis to reason about small, independent parts of the application storage, rather than having to consider the entirety of the memory potentially at every step. That would be a daunting task on modern processors with their large addressable virtual memories.

Bi-abduction is a logical inference technique that allows Facebook Infer to discover properties about the behavior of independent parts of the application code. By storing these properties between runs, Facebook Infer needs to analyze only the parts of the software that have changed, reusing the results of its previous analysis where it can.

By combining these approaches, our analyzer is able to find complex problems in modifications to an application built from millions of lines of code, in minutes.


(via Bryan O'Sullivan)
via:bos  infer  facebook  static-analysis  lint  code  java  ios  android  coding  bugs 
june 2015 by jm
Orbit Async
Orbit Async implements async-await methods in the JVM. It allows programmers to write asynchronous code in a sequential fashion. It was developed by BioWare, a division of Electronic Arts.


Open source, BSD-licensed.
async  await  java  jvm  bioware  coding  threading 
june 2015 by jm
Testing@LMAX – Aliases
Creating a user with our DSL looks like: registrationAPI.createUser("user");

You might expect this to create a user with the username ‘user’, but then we’d get conflicts between every test that wanted to call their user ‘user’ which would prevent tests from running safely against the same deployment of the exchange.

Instead, ‘user’ is just an alias that is only meaningful while this one test is running. The DSL creates a unique username that it uses when talking to the actual system. Typically this is done by adding a postfix so the real username is still reasonably understandable e.g. user-fhoai42lfkf.


Nice approach -- makes sense.
testing  lmax  system-tests  naming  coding 
june 2015 by jm
Buck
A high-performance java build tool, from Facebook. Make-like
android  build  java  make  coding  facebook 
june 2015 by jm
Three Questions to Answer When Reporting an Error
Very long, but tl;dr:
the trick to creating an effective error message is to answer the 3 Questions within your message: What is the error? What was the probable cause of the error? What is the probable remedy?
errors  ui  ux  reporting  logging  coding 
may 2015 by jm
repo
'The multiple repository tool'. How Google kludged around the split-repo problem when you don't have a monorepo.
kludges  git  monorepo  monorepi  google  android  aosp  repo  coding  version-control  dvcs 
may 2015 by jm
Input: Fonts for Code
Non-monospaced coding fonts! I'm all in favour...
As writing and managing code becomes more complex, today’s sophisticated coding environments are evolving to include everything from breakpoint markers to code folding and syntax highlighting. The typography of code should evolve as well, to explore possibilities beyond one font style, one size, and one character width.
input  fonts  via:its  typography  code  coding  font  text  ide  monospace 
may 2015 by jm
streamtools: a graphical tool for working with streams of data | nytlabs
Visual programming, Yahoo! Pipes style, back again:
we have created streamtools – a new, open source project by The New York Times R&D Lab which provides a general purpose, graphical tool for dealing with streams of data. It provides a vocabulary of operations that can be connected together to create live data processing systems without the need for programming or complicated infrastructure. These systems are assembled using a visual interface that affords both immediate understanding and live manipulation of the system.


via Aman
via:akohli  streaming  data  nytimes  visual-programming  coding 
may 2015 by jm
The Injector: A new Executor for Java
This honestly fits a narrow niche, but one that is gaining in popularity. If your messages take > 100μs to process, or your worker threads are consistently saturated, the standard ThreadPoolExecutor is likely perfectly adequate for your needs. If, on the other hand, you’re able to engineer your system to operate with one application thread per physical core you are probably better off looking at an approach like the LMAX Disruptor. However, if you fall in the crack in between these two scenarios, or are seeing a significant portion of time spent in futex calls and need a drop in ExecutorService to take the edge off, the injector may well be worth a look.
performance  java  executor  concurrency  disruptor  algorithms  coding  threads  threadpool  injector 
may 2015 by jm
Kappa
'a command line tool that (hopefully) makes it easier to deploy, update, and test functions for AWS Lambda.' much needed IMO -- Lambda is too closed
aws  lambda  mitch-garnaat  coding  testing  cli  kappa 
april 2015 by jm
'Microservice AntiPatterns'
presentation from last week's Craft Conference in Budapest; Tammer Saleh of Pivotal with a few antipatterns observed in dealing with microservices.
microservices  soa  architecture  design  coding  software  presentations  slides  tammer-saleh  pivotal  craft 
april 2015 by jm
ShellCheck
Static code analysis for shell scripts (via Tony Finch)
bash  cli  sh  linux  shell  coding  static-analysis  lint 
april 2015 by jm
AWS Lambda Event-Driven Architecture With Amazon SNS
Any message posted to an SNS topic can trigger the execution of custom code you have written, but you don’t have to maintain any infrastructure to keep that code available to listen for those events and you don’t have to pay for any infrastructure when the code is not being run. This is, in my opinion, the first time that Amazon can truly say that AWS Lambda is event-driven, as we now have a central, independent, event management system (SNS) where any authorized entity can trigger the event (post a message to a topic) and any authorized AWS Lambda function can listen for the event, and neither has to know about the other.
aws  ec2  lambda  sns  events  cep  event-processing  coding  cloud  hacks  eric-hammond 
april 2015 by jm
Rob Pike's 5 rules of optimization
these are great. I've run into rule #3 ("fancy algorithms are slow when n is small, and n is usually small") several times...
twitter  rob-pike  via:igrigorik  coding  rules  laws  optimization  performance  algorithms  data-structures  aphorisms 
april 2015 by jm
OG-Commons/Guavate.java
'Utilities that help bridge the gap between Java 8 and Google Guava. Guava has the {@link FluentIterable} concept which is similar to streams. In many ways, fluent iterable is nicer, because it directly binds to the immutable collection classes. However, on balance it seems wise to use the stream API rather than {@code FluentIterable} in Java 8.'
guava  java-8  java  fluentiterable  streams  fluent  coding 
april 2015 by jm
Stack Overflow Developer Survey 2015
wow, 52.5% of developers prefer a dark IDE theme?!
coding  jobs  work  careers  software  stack-overflow  surveys 
april 2015 by jm
« earlier      
per page:    204080120160

related tags

2d  3d  1980s  acceleration  acceptance-testing  acceptance-tests  actors  admin  adroll  advice  adwords  aes  age  agile  akka  alerting  algorithm  algorithms  alias  allan-klumpp  allocation  amazon  android  angular  annotations  anonymous  aosp  aphorisms  api  api-services  apis  apollo-program  apple  approximate  approximation  apps  archie-mcphee  architecture  architecture-astronauts  archival  arnold-schwarzenegger  arrays  articles  ascii  assembly  async  atomic  atscript  austerity  authorization  automation  autosave  avro  await  aws  backoff  backpressure  bacteria  bash  batch  batching  bazel  bdd  ben-hughes  benchmarking  benchmarks  best-practices  big-data  big-o  binary  binary-tree  biohacking  biology  bioware  birthday-paradox  birthday-problem  bitcoin  bitrot  bits  blaze  block-oriented  bloom-filter  bloom-filters  book  books  bpf  branch  branch-prediction  branching  breakage  brogrammers  bsd  bst  buffers  bug-tracking  bugs  build  build-tools  building  burnout  business  c  c++  c++11  c-i  c=64  cache  cache-friendly  caches  caching  calendar  callbacks  camry  cap  capn-proto  capnproto  cardinality  career  careers  cas  cask  causal-profilers  cbc  ccc  cd  cep  cheat-sheet  checklists  chef  children  chrome  chronon  ci  clean-code  clearcase  cli  client-side  clion  clocks  clojure  closures  cloud  cloudwatch  cms  code  code-analysis  code-digger  code-review  code-reviews  code-smells  code-validation  code-verification  code.org  coderdojo  coding  coding-standards  collaboration  collections  collisions  columnar  combinatorial  combinators  communication  community  compatibility  compilation  compile  compiler  compilers  complexity  compression  computation  computational-biology  computer-science  computing  concurrency  config-files  configuration  consistent-hashing  consoles  const  constraint-solving  containers  continous-integration  continuous-deployment  contracts  conversion  cork  corrupt  cost  counting-sort  craft  crash-only-software  crashing  crdts  cron  crypto  cryptography  cs  csail  csharp  css  ctr  cuckoo-filters  cucumber  cuda  culture  curator  currency  cyclomatic-complexity  cyoa  dalvik  dashcode  data  data-locality  data-oriented-programming  data-processing  data-structures  databases  date  dates  david-ungar  deadlocks  debt  debugger  debugging  decay  demos  dependencies  dependency-injection  deploy  deployment  deplyment  design  design-patterns  dev  dev-culture  development  devops  dice  differential-dataflow  disk  display  disruptor  dist-sys  distcomp  distributed  distributed-locks  distributed-systems  dithering  djb  dmitry-vyukov  dmv  dna  dns  dnsmasq  docker  docs  don-eyles  dot-net  doug-lea  download  dry  dsl  dsls  dublin  duct-tape  dvcs  dvr  dynamic  dynamic-languages  e-coli  ebola  ebooks  ebse  ec2  ecb  ecc  eclipse  economics  economy  edge-cases  editors  education  eiffel  elias-gamma-coding  elitism  embedded  embedded-systems  emulation  encapsulation  encoding  encryption  engineering  engines  entropy  eric-hammond  eric-veach  erlang  error-checking  error-detection  error-rate  errors  escape-analysis  essay  estimation  estonia  etcs  etsy  event-processing  event-sourcing  events  eventual-consistency  evernote  evidence-based-medicine  evolution  excel  exceptions  executor  executors  experts  exploits  exponential  exponential-backoff  extensions  facebook  fail  false-positives  fault-tolerance  faults  feature-team  feminism  file-formats  final  finance  findbugs  fingerprinting  firefighting  firefox  firmware  fixing  flake8  flatbuffers  flickr  float  floating-point  flow  flowchart  floyd-steinberg  fluent  fluent-interfaces  fluentiterable  font  fonts  formal-methods  formats  formatting  formulas  fortran  fp  free  free-software  frequency-tables  frp  fsf  fsm  functional  functional-programming  funny  future  futures  fuzzy-matching  g1  ga  games  gaming  garbage-collection  gc  gdb  gdocs  geek  gems  genetic-algorithms  gerrit  gfx  gil  gil-tene  giraph  girls  git  git-log  github  gitlab  gjs  gmail  go  golang  google  google-code-jam  google-drive  gotchas  goto  goto-fail  government  gpu  gpus  gradle  graph  graph-processing  graphics  graphite  graphs  grim  grpc  gta  gtav  guardian  guava  guidelines  hacker-news  hackers  hacking  hacks  hadoop  hardware  hash-tables  hashes  hashing  hashtables  hax  hdr  head-mounted-display  heap  help  hero-coder  hero-culture  heuristics  hex  hijack  hiring  histogram  history  hive  hll  hmac  hobbies  honeybadger  honeypots  horror  horrors  hot-patching  hotdog  hotspot  html  http  httpbin  https  humor  hyperloglog  i7  i14y  iam  iblt  ibm  ide  idea  ides  ifttt  immutability  incident-response  indexing  inept  infer  inheritance  injector  input  instrumentation  integers  integration  integrity  intel  intel-core  intelli-j  intellij  interactive  intercom  interfaces  internet  interop  interoperability  interpreters  interviews  invalid  invariants  ios  iphone  irb  ireland  james-hamilton  japan  jar  jargon  java  java-8  java8  javascript  jax-rs  jay-fields  jay-kreps  jay-rosen  jeff-atwood  jemalloc  jenkins  jersey  jetbrains  jetty  jgc  jitter  jobs  joel-spolsky  john-carmack  jokes  jpl  jpmorgan  jq  js  js1k  json  justin-bieber  jvm  jwz  k-8  k8s  kafka  kappa  kernel  kids  kinesis  kludges  knowledge  koloboke  kpl  lambda  lambdas  language  languages  latency  laws  learning  lectures  legal  leonard-richardson  leslie-lamport  let-it-fail  libraries  library  licenses  life  lifecycle  like  linkedin  lint  linux  linux-journal  lisp  live  lmax  load-balancing  lock-free  locking  locks  lockstep  log  log4j  logging  loglog  logs  london-whale  lookup3  low-latency  lua  lucene  machine-learning  macros  magic  majority  make  makefiles  malloc  mame  management  marc-brooker  markov-chain  marshalling  martin-fowler  martin-kleppman  martin-thompson  mathematics  maths  matrix  maven  mdd  measurement  measuring  mechanical-sympathy  medicine  meebo  memory  mercurial  merges  merging  messaging  metrics  microreboot  microservices  microsoft  migration  minecraft  misra-c  mit  mitch-garnaat  mobile  mock-objects  mocking  mocks  model-checking  models  money  mongodb  monitoring  monkey-patching  monorepi  monorepo  monospace  mozilla  mtgox  multi-platform  multicore  multiprocessing  murmurhash  mutexes  mysql  names  naming  nasa  nbta  ncsu  neologisms  netflix  netty  network  networking  node  node.js  nostalgia  npm  null  numbers  nytimes  o(1)  observable  observables  ocaml  ohurley  omnibus  one-liners  one-pass  oo  oop  open-source  openbsd  openssl  operational-transformation  ops  optimization  option  organisations  osx  ot  ouch  overengineering  packaging  pagerank  pair-programming  papers  parallel  parallelism  partitions  patents  patterns  paul-krugman  payroll  pdf  peer-pressure  percentiles  percona  performance  periodic  persistence  peter-lawrey  philosophy  pickling  pico-8  ping  pipelines  pipes  pivotal  pixar  play  plos  politics  postgres  poul-henning-kemp  preconditions  premature-flexibilization  presentations  printf  private-keys  probabilistic  probability  process  processors  production  productivity  profiling  programming  programming-languages  project-management  prophet  proto3  protobuf  protobufs  protocol-buffers  protocols  provisioning  proxies  pt-query-digest  pthreads  puzzles  python  q-digest  qa  qnx  quake-3  quality  quantiles  quants  querying  questions  queue  queues  quotes  race-and-repair  radix-sort  rafe-colburn  rahman-algorithm  rails  rake  ram  random  randomness  rants  raspberry-pi  rate-limiting  reactive  real-time  reality  realtime  reasoning  rebasing  record  recordinality  recovery  recruiting  redis  redlock  redo  refactoring  reference  reform  refs  refuctoring  regex  regexes  regexp  regexps  regular-expressions  relearning  release  reliability  remote  remote-work  rendering  renderman  repl  replay  replication  repo  reporting  repository  reputation  research  rest  restful  retina  retries  retro  reversing  revert  reviews  rips  rob-pike  roles  rollup  ross-anderson  rpc  rr  rsa  rspec  rtos  ruby  rubygems  rules  rust  rusty-russell  rx  rxjava  s3  safety  sampling  sbe  scala  scalability  scalatest  scaling  schemas  school  schools  science  scm  script  scripting  scrum  sd  sde  sde-fundamentals  search  searching  security  sed  semantics  semaphores  senior  serialization  server  server-side  servers  services  set  set-cover  sets  sexism  sh  sharding  shell  shell-scripts  shellcode  shuffle  shuffling  side-channels  sierra-leone  silicon-valley  silly  simd  sinatra  sip  sketching  skills  skiplists  slang  slf4j  slides  sns  soa  society  software  software-development  solver  sorting  soundcloud  source-code  source-code-analysis  source-control  space  space-saving  spacex  spaghetti-code  spark  specifications  speech  speed  spores  spreadsheets  spy-hunter  sql  squashing  ssds  sse  ssh  ssl  stack-overflow  staffing  starcraft  static  static-analysis  static-code-analysis  static-typing  statistics  steak  stem  steve-vinoski  steven-skiena  storage  stout  strchr  stream-processing  streaming  streams  strftime  string-matching  string-search  stringly-typed  strings  strlen  strong-types  strong-typing  strstr  students  studies  style  succinct  succinct-encoding  surveys  sux  swpats  swrve  symbol-alphabets  sync  synchronization  syntax  sysadmin  system-tests  systems  tags  takedowns  tammer-saleh  tcpdump  tdd  teaching  teams  teamwork  tech  tech-debt  techdirt  technology  tee  teenagers  telecommuting  testability  testing  tests  text  text-generation  text-matching  tflops  the-duck  thomas-ptacek  thread-safety  threading  threadpool  threads  threadsanitizer  thrift  throttle-control  time  time-warp  timecop  timezones  timing  tips  tls  tools  top-k  toread  toyota  trac  trading  traits  transactions  travis-brown  trees  tricks  tridge  tries  troubleshooting  try  tuning  turing-complete  twins  twisted  twitter  type-inference  types  typescript  typography  ui  uncertainty  uncle-bob  undocumented  unit-testing  unit-tests  unix  us-politics  usa  user-scripts  ux  vagrant  valgrind  validation  value-at-risk  variables  varnish  vector-clocks  verification  verilog  version-control  versioning  via:akohli  via:ben  via:bos  via:cjhorn  via:cliffc  via:conor  via:darrell  via:fanf  via:hmason  via:hn  via:iamcal  via:igrigorik  via:itc  via:its  via:janl  via:jessitron  via:jzawodny  via:marc  via:marcbrooker  via:marcomorain  via:markdennehy  via:Mozai  via:nelson  via:norman-maurer  via:oisin  via:peakscale  via:preddit  via:proggit  via:rjwalsh  via:robc  via:sergio-bossa  via:tom  via:twitter  via:walter  video  vietnam  vim  virtual-clock  vision  visual-programming  vms  vnc  volatile  walmart  web  web-services  webgl  webpack  whitelisting  wikis  witchcraft  women  work  workflow  workflows  wtf  x-stream  xp  yagni  yaml  youtube  zerg-rush  zookeeper 

Copy this bookmark:



description:


tags: