jm + programming   57

jomsdev notes:

'Last year, in the AofA’16 conference Robert Sedgewick proposed a new algorithm for cardinality estimation. Robert Sedgwick is a professor at Princeton with a long track of publications on combinatorial/randomized algorithms. He was a good friend of Philippe Flajolet (creator of Hyperloglog) and HyperBitBit it's based on the same ideas. However, it uses less memory than Hyperloglog and can provide the same results. On practical data, HyperBitBit, for N < 2^64 estimates cardinality within 10% using only 128 + 6 bits.'
algorithms  programming  cs  hyperloglog  estimation  cardinality  counting  hyperbitbit 
2 days ago by jm
Falsehoods Programmers Believe About CSVs
Much of my professional work for the last 10+ years has revolved around handing, importing and exporting CSV files. CSV files are frustratingly misunderstood, abused, and most of all underspecified. While RFC4180 exists, it is far from definitive and goes largely ignored.

Partially as a companion piece to my recent post about how CSV is an encoding nightmare, and partially an expression of frustration, I've decided to make a list of falsehoods programmers believe about CSVs. I recommend my previous post for a more in-depth coverage on the pains of CSVs encodings and how the default tooling (Excel) will ruin your day.

(via Tony Finch)
via:fanf  csv  excel  programming  coding  apis  data  encoding  transfer  falsehoods  fail  rfc4180 
10 weeks ago by jm
The Technical Debt Quadrant
Martin Fowler's take on the 4 kinds of tech debt
programming  design  tech-debt  technical-debt  deadlines  product  ship 
october 2016 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 
may 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
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
Programmer IS A Career Path, Thank You
Well said -- Amazon had a good story around this btw
programming  coding  career  work  life 
february 2015 by jm
How “Computer Geeks” replaced “Computer Girls"
As historian Nathan Ensmenger explained to a Stanford audience, as late as the 1960s many people perceived computer programming as a natural career choice for savvy young women. Even the trend-spotters at Cosmopolitan Magazine urged their fashionable female readership to consider careers in programming. In an article titled “The Computer Girls,” the magazine described the field as offering better job opportunities for women than many other professional careers. As computer scientist Dr. Grace Hopper told a reporter, programming was “just like planning a dinner. You have to plan ahead and schedule everything so that it’s ready when you need it…. Women are ‘naturals’ at computer programming.” James Adams, the director of education for the Association for Computing Machinery, agreed: “I don’t know of any other field, outside of teaching, where there’s as much opportunity for a woman.”
history  programming  sexism  technology  women  feminism  coding 
november 2014 by jm
Move Fast and Break Nothing
Great presentation about Github dev culture and building software without breakage, but still with real progress.
github  programming  communication  process  coding  teams  management  dev-culture  breakage 
october 2014 by jm
Use of Formal Methods at Amazon Web Services
Chris Newcombe, Marc Brooker, et al. writing about their experience using formal specification and model-checking languages (TLA+) in production in AWS:

The success with DynamoDB gave us enough evidence to present TLA+ to the broader engineering community at Amazon. This raised a challenge; how to convey the purpose and benefits of formal methods to an audience of software engineers? Engineers think in terms of debugging rather than ‘verification’, so we called the presentation “Debugging Designs”.

Continuing that metaphor, we have found that software engineers more readily grasp the concept and practical value of TLA+ if we dub it 'Exhaustively-testable pseudo-code'.

We initially avoid the words ‘formal’, ‘verification’, and ‘proof’, due to the widespread view that formal methods are impractical. We also initially avoid mentioning what the acronym ‘TLA’ stands for, as doing so would give an incorrect impression of complexity.

More slides at ; proggit discussion at
formal-methods  model-checking  tla  tla+  programming  distsys  distcomp  ebs  s3  dynamodb  aws  ec2  marc-brooker  chris-newcombe 
june 2014 by jm
The programming error that cost Mt Gox 2609 bitcoins
Digging into broken Bitcoin scripts in the blockchain. Fascinating:
While analyzing coinbase transactions, I came across another interesting bug that lost bitcoins. Some transactions have the meaningless and unredeemable script:


That script turns out to be the ASCII text script. Instead of putting the redemption script into the transaction, the P2Pool miners accidentally put in the literal word "script". The associated bitcoins are lost forever due to this error.

(via Nelson)
programming  script  coding  bitcoin  mtgox  via:nelson  scripting  dsls 
may 2014 by jm
Teaches the basics of computer science - K-8 Intro to CS, 15-25 hours. Introduces core CS and programming concepts, with lots of nice graphics, scenarios and characters from games to get the kids hooked ;) Recommended by Tom Raftery; his youngest (7yo) is having great fun with it.
education  programming  learning  coding  kids  k-8  games 
may 2014 by jm
Girls and Software
a pretty thought-provoking article from Linux Journal on women in computing, and how we're doing it all wrong
feminism  community  programming  coding  women  computing  software  society  work  linux-journal  children  teaching 
february 2014 by jm
stereopsis : graphics : radix tricks
some nice super-optimized Radix Sort code which handles floating point values. See also for more info on the histogramming/counter concept
sorting  programming  coding  algorithms  radix-sort  optimization  floating-point 
december 2013 by jm
How to lose $172,222 a second for 45 minutes
Major outage and $465m of trading loss, caused by staggeringly inept software management: 8 years of incremental bitrot, technical debt, and failure to have correct processes to engage an ops team in incident response. Hopefully this will serve as a lesson that software is more than just coding, at least to one industry
trading  programming  coding  software  inept  fail  bitrot  tech-debt  ops  incident-response 
october 2013 by jm
NCCA Junior Cycle - Programming and Coding Consultation Page
the National Council for Curriculum and Assessment are looking for feedback on adding programming to the junior cycle (ie., early secondary school) in Ireland. Add your EUR.02!
ireland  programming  coding  education  schools 
october 2013 by jm
To our knowledge, Ked is the first scripting language to emerge from The People's Republic of Cork. Below is an account of what we know so far about the mysterious Corkonian language. Any suggested updates or contributions are encouraged.

coding  cork  jokes  funny  like  languages  programming 
april 2013 by jm
CS in VN
Neil Fraser visits a school in Vietnam, and investigates their computer science curriculum. They are doing an incredible job, it looks like -- very impressive!
vietnam  programming  education  cs  computer-science  schools  coding  children 
march 2013 by jm
Thoughts on configuration file complexity
some interesting thoughts on the old "Turing complete configuration language" question
configuration  turing-complete  programming  ops  testing 
march 2013 by jm
4 Things Java Programmers Can Learn from Clojure (without learning Clojure)
'1. Use immutable values; 2. Do no work in the constructor; 3. Program to small interfaces; 4. Represent computation, not the world'. Strongly agreed with #1, and the others look interesting too
clojure  lisp  design  programming  coding  java 
march 2013 by jm
Can regular expressions parse HTML?
'a summary of the main points:
The “regular expressions” used by programmers have very little in common with the original notion of regularity in the context of formal language theory.
Regular expressions (at least PCRE) can match all context-free languages. As such they can also match well-formed HTML and pretty much all other programming languages.
Regular expressions can match at least some context-sensitive languages.
Matching of regular expressions is NP-complete. As such you can solve any other NP problem using regular expressions.'
compsci  regexps  regular-expressions  programming  np-complete  chomsky-grammar  context-free  languages 
february 2013 by jm
Programming Language Checklist
'You appear to be advocating a new:
[ ] functional [ ] imperative [ ] object-oriented [ ] procedural [ ] stack-based
[ ] "multi-paradigm" [ ] lazy [ ] eager [ ] statically-typed [ ] dynamically-typed
[ ] pure [ ] impure [ ] non-hygienic [ ] visual [ ] beginner-friendly
[ ] non-programmer-friendly [ ] completely incomprehensible
programming language. Your language will not work. Here is why it will not work.'
humor  programming  funny  coding  languages 
february 2013 by jm
Memory Barriers/Fences
Martin Thompson with a good description of the x86 memory barrier model and how it interacts with Java's JSR-133 memory model
architecture  hardware  programming  java  concurrency  volatile  jsr-133 
november 2012 by jm
Does it run Minecraft? Well, since you ask…
Going by the number of Minecraft fans among my friends' sons and daughters in the 8-12 age group, this is a great idea:
We sent a bunch of [Raspberry Pi] boards out to Notch and the guys at Mojang in Stockholm a little while back, and they’ve produced a port of Minecraft: Pocket Edition which they’re calling  Minecraft: Pi Edition. It’ll carry a revised feature set and support for several programming languages, so you can code direct into Minecraft before you start playing. (Or you can just – you know – play.)
minecraft  gaming  programming  coding  raspberry-pi  kids  learning  education 
november 2012 by jm
#AltDevBlogADay » Functional Programming in C++
John Carmack makes a case for writing C++ in an FP style, with wide use of const and pure functions. something similar can be achieved in pure Java using Guava's Immutable types, to a certain extent. I love his other posts on this site -- he argues persuasively for static code analysis and keeping multiple alternative subsystem implementations, too
c++  programming  functional-programming  fp  coding  john-carmack  const  immutability 
october 2012 by jm
Estonia introduces coding classes to 8-year-olds
'ProgreTiiger education will start with students in the first grade, which starts around the age of 7 or 8 for Estonians. The compsci education will continue through a student’s final years of public school, around age 16. Teachers are being trained on the new skills, and private sector IT companies are also getting involved, which makes sense, given that these entities will likely end up being the long-term beneficiaries of a technologically literate populace. The ProgreTiiger program is launching at a few pilot schools and will soon be rolling out to all general education schools in Estonia.'
estonia  education  coding  programming  kids  children  students  learning  school 
september 2012 by jm
the VIM clutch
'VIM Clutch is a hardware pedal for improved text editing speed for users of the magnificent VIM text editor. When the pedal is pressed down, the pedal types "i" causing VIM to go into Insert Mode. When released, it types <Esc> and you are back in Normal Mode.' (via Andrew Delaney)
via:delaney  vim  programming  ui  pedals  vi  modal  foot-switch 
june 2012 by jm
An IDE is not enough
Very thought-provoking response to that 'Light Table' demo which went round the aggregators a couple of weeks back. 'The fundamental reason IDEs have dead-ended is that they are constrained by the syntax and semantics of our programming languages. Our programming languages were all designed to be used with a text editor. It is therefore not surprising that our IDEs amount to tarted-up text editors. Likewise our programming languages were all designed with an imperative semantics that efficiently matches the hardware but defies static visualization. Indeed it would be a miracle if we could slap a new IDE on top of an old language and magically alter its syntactic and semantic assumptions. I don’t believe in miracles. Languages and IDEs have co-evolved and neither can change without the other also changing. That is why three years ago I put aside my IDE work to focus on language design. Getting rid of imperative semantics is one of the goals. Another is getting rid of source text files (as well as ASTs, which carry all the baggage of a textual encoding minus the readability). This has turned out to be really really hard. And lonely – no one wants to even talk about these crazy ideas. Nevertheless I firmly believe that so long as we are programming in decendants of assembly language we will continue to program in descendants of text editors.' (via Chris Horn)
via:cjhorn  ide  programming  coding  programming-languages  semantics  syntax  source-code  text 
may 2012 by jm
The day I tried teaching primary school kids to code (and succeeded)
via Niamh -- 'I learned a bit about teaching at primary level and I learned that it is pretty fun although REALLY hard work! I learned that if you make a complex subject engaging kids will learn it and are probably capable of a great deal more than they are often given credit for. The youngest kids on the day were year four which is aged 8-9 and although they were definitely more able than some of their peers, you can expect that by year 5-6 (aged 9-11) probably a lot of the kids could follow it and indeed learn to code.'
coding  education  kids  programming  teaching  school 
march 2012 by jm
Near Neighbor Search in High Dimensional Data [PDF]
Detect near-duplicates; would be good for future Razor-like efficient near-duplicate detection. (slides)
slides  algorithms  email  performance  programming  near-neighbour-search  search 
february 2012 by jm
The best "why estimation is hard" parable I've read this week
'A tense silence falls between us. The phone call goes unmade. I'll call tomorrow once my comrade regains his senses and is willing to commit to something reasonable.'
agile  development  management  programming  teams  estimation  tasks  software 
february 2012 by jm
SiliconRepublic story on CoderDojo
'it's both incredible and poignant that a voluntary movement that was born in Ireland during the summer is about to go international. Coder Dojo, the brainchild of 19-year-old entrepreneur and programmer James Whelton from Cork and tech entrepreneur Bill Liao, began as a Saturday morning club for kids to teach each other software programming. It has grown into a national movement up and down Ireland, a place where kids and their parents can go and learn to write software code in a friendly environment. The first UK Coder Dojo was held in London only last week and other countries in Europe are clamouring to get the initiative started there, too.' Good on them!
coderdojo  programming  coding  kids  children  teaching  education  tech  ireland 
december 2011 by jm
eclim (eclipse + vim)
'Eclim is less of an application and more of an integration of two great projects. The first, Vim, is arguably one of the best text editors in existence. The second, Eclipse, provides many great tools for development in various languages. Each provides many features that can increase developer productivity, but both still leave something to be desired. Vim lacks native Java support and many of the advanced features available in Eclipse. Eclipse, on the other hand, still requires the use of the mouse for many things, and when compared to Vim, provides a less than ideal interface for editing text. That is where eclim comes into play. Instead of trying to write an IDE in Vim or a Vim editor in Eclipse, eclim provides an Eclipse plug-in that exposes Eclipse features through a server interface, and a set of Vim plug-ins that communicate with Eclipse over that interface. This functionality can be leveraged in three primary ways, as illustrated below.'
eclipse  java  programming  software  vim  editors  refactoring 
november 2011 by jm
Scala: The Static Language that Feels Dynamic
a good intro from Bruce Eckel. We need a good excuse to deploy some Scala ;)
scala  actors  java  language  programming  jvm  coding 
june 2011 by jm
Python Idioms and Efficiency Suggestions
will have to run this by our resident Pythonistas in work as a good set of guidelines
idioms  programming  python  reference  tips  via:hn 
june 2011 by jm
Dr. Neal Krawetz explains perceptual hashing
ie. TinEye and other "images like this one" search engines. nice explanation
algorithm  images  analysis  programming  dct  hashing  perceptual-hash  tineye  via:hn  image 
june 2011 by jm
pyflakes.vim - on-the-fly Python code checking in Vim
Vim gets a good IDE feature. 'highlights common Python errors like misspelling a variable name on the fly. It also warns about unused imports, redefined functions, etc.'
ide  vim  python  programming  via:preddit  coding 
april 2011 by jm
Silver Lining
'an application packaging format, a server configuration library, a cloud server management tool, a persistence management tool, and a tool to manage the application with respect to all these services over time.'  interesting, possibly too Pythonic
python  programming  dist  deployment  packaging  from delicious
april 2011 by jm
Bulletproof Node.js Coding
lots of patterns to write safe node.js code.  Pretty daunting, to be honest
javascript  node.js  coding  programming  async  from delicious
march 2011 by jm
The Effectiveness of Test Driven Development (TDD)
huh. Test-driven development is slower than traditional write-first-test-at-the-end development, but it results in less bugs. Grokcode theorise that its big win is amortising the cost of testing throughout the product iteration, hence reducing the temptation to skip testing when the crunch phase happens
tdd  programming  testing  qa  coding  from delicious
december 2010 by jm
"if slalom"
a great name for a common "code smell" of too much indentation, calling for merciless usage of Extract Method (via Aman)
via:akohli  code-smells  refactoring  if-slalom  programming  funny  if-else  indentation  from delicious
september 2010 by jm
/~colmmacc/ » Prime and Proper
algorithm to perform set membership tests on enumerated sets quickly and memory-efficiently, using multiplication by primes. Nice trick
hacks  colmmacc  prime-numbers  set-membership  bloom-filters  bignums  algorithms  programming  from delicious
september 2010 by jm
REPLs suck, I want something block oriented
good opinion piece; I agree, REPL isn't a usable approach for block-oriented languages
languages  repl  programming  ruby  hacking  coding  block-oriented  from delicious
july 2010 by jm
Interpolation search
neat search algo, via Jeremy Zawodny; can be more efficient than binary search (O(log log n)), for indexed, ordered arrays, at the cost of more computation per iteration
algorithms  programming  search  via:jzawodny  from delicious
july 2010 by jm
Mea Culpa
'Programming is an embarrassment compared to other fields of engineering and design. Our mainstream culture is one of adolescent self-indulgence. It is like something from Gulliver’s Travels, with the curly-bracketeers vs. the indentationites vs. the parenthesesophiles. The only thing that everyone seems to agree upon is how stupid all the other programmers are. Try googling “stupid programmers”. We have met the enemy, and he is us.' Fantastic post via Jan Lenhardt
via:janl  coding  programming  software  philosophy  languages  lisp  elitism  from delicious
may 2010 by jm
'the process of taking a well-designed piece of code and, through a series of small, reversible changes, making it completely unmaintainable by anyone except yourself' (via Mozai)
funny  refuctoring  via:Mozai  coding  tests  tdd  programming  software  from delicious
may 2010 by jm
The Rise and Fall of the Hobbyist Game Programmer
great article on the 80's one-man shareware game hobbyists (via Walter)
1980s  games  history  programming  nostalgia  geek  gaming  hobbies  coding  6502  c=64  from delicious
november 2009 by jm
'an online compiler/interpreter, and a simple collaboration tool. It's a pastebin that executes code for you. You paste your code, and codepad runs it and gives you a short URL you can use to share it.' supports C, C++, D, Haskell, Lua, OCaml, PHP, Perl, Python, Ruby, Scheme, and Tcl code; isolated by a geordi-based supervisor, in turn running inside a firewalled virt, in turn running inside a firewalled dom0. nice work!
codepad  vm  jails  infrastructure  security  via:waxy  c  languages  programming  sandbox  pastebin 
august 2009 by jm
iPhone Sudoku Grab: How does it all work?
lovely run-through of the computer-vision algorithms this iPhone app uses (via Waxy)
via:waxy  ai  image  programming  algorithms  graphics  iphone  ocr  computervision  opencv  sudoku 
august 2009 by jm
Programmer Competency Matrix
actually quite a good breakdown of software eng skill progression
software  coding  programming  management  hiring  engineering  matrix  skills 
july 2009 by jm

related tags

1980s  actors  agile  ai  algorithm  algorithms  analysis  apache  apis  architecture  asf  async  aws  bacteria  bignums  biohacking  bitcoin  bitrot  block-oriented  bloom-filters  breakage  c  c++  c=64  cardinality  career  children  chomsky-grammar  chris-newcombe  clocks  clojure  code-smells  codepad  coderdojo  coding  colmmacc  communication  community  compsci  computer-science  computervision  computing  concurrency  configuration  const  context-free  cork  counting  cs  csv  data  data-structures  databases  dct  deadlines  dependency-injection  deployment  design  dev-culture  development  dist  distcomp  distributed  distsys  dna  dsls  dynamic-languages  dynamodb  e-coli  ebs  ec2  eclipse  editors  education  elitism  email  encoding  engineering  estimation  estonia  excel  fail  falsehoods  feminism  floating-point  foot-switch  formal-methods  fp  functional-programming  funny  games  gaming  geek  git  github  go  golang  graphics  hacking  hacks  hardware  hashing  hiring  history  hobbies  humor  hyperbitbit  hyperloglog  ide  idioms  if-else  if-slalom  image  images  immutability  incident-response  indentation  inept  infrastructure  iphone  ireland  jails  japan  java  javascript  john-carmack  jokes  jsr-133  jvm  k-8  kids  language  languages  learning  lectures  leslie-lamport  life  like  linux-journal  lisp  management  marc-brooker  matrix  minecraft  mit  modal  model-checking  mtgox  mysql  names  near-neighbour-search  node.js  nostalgia  np-complete  ocr  oo  opencv  ops  optimization  packaging  pastebin  patterns  pedals  perceptual-hash  performance  philosophy  prime-numbers  process  product  programming  programming-languages  python  qa  radix-sort  rants  raspberry-pi  refactoring  reference  refuctoring  regexps  regular-expressions  repl  rfc4180  ruby  s3  sandbox  scala  schemas  school  schools  science  script  scripting  search  security  semantics  set-membership  sexism  ship  skills  slides  society  software  sorting  source-code  statistics  strong-types  students  sudoku  syntax  tasks  tdd  teaching  teams  tech  tech-debt  technical-debt  technology  testing  tests  text  time  tineye  tips  tla  tla+  trading  transfer  turing-complete  types  ui  vector-clocks  verilog  vi  via:akohli  via:cjhorn  via:delaney  via:fanf  via:hn  via:janl  via:jzawodny  via:Mozai  via:nelson  via:preddit  via:waxy  vietnam  vim  vm  volatile  women  work 

Copy this bookmark: