joecamel + programming   446

Earley Parsing Explained
"Earley parsers are among the most general parsers out there. They can parse any context free language without restriction, and can even be extended towards context sensitivity. They are reasonably fast on most practical grammars, and are easy to implement (the core algorithms take less than 200 lines of code)."

"nce you have a successful parse, extracting the tree from it is a little bit like pulling teeth. You have to perform searches on the Early set data, and deal with ambiguities at that point."
algorithms  parsers  parsing  programming  intro 
11 weeks ago by joecamel
lfittl/libpg_query: C library for accessing the PostgreSQL parser outside of the server environment
C library for accessing the PostgreSQL parser outside of the server.

This library uses the actual PostgreSQL server source to parse SQL queries and return the internal PostgreSQL parse tree.
postgres  internals  library  github  c  programming  sql 
12 weeks ago by joecamel
Anatomy of a system call, part 1 [LWN.net]
"System calls are the primary mechanism by which user-space programs interact with the Linux kernel. Given their importance, it's not surprising to discover that the kernel includes a wide variety of mechanisms to ensure that system calls can be implemented generically across architectures, and can be made available to user space in an efficient and consistent way."
c  development  linux  kernel  lowlevel  programming 
may 2018 by joecamel
Meta-X86: CPU Cache Essentials
"This post came to my mind after watching the excellent presentation of Scott Meyers called "CPU Caches and Why You care". This post will try to summarize the ideas of the presentation so if you have some spare time you can just watch the presentation on video."
cpu  lowlevel  intro  programming 
may 2018 by joecamel
You can't Rust that | Armin Ronacher's Thoughts and Writings
...the feeling that Rust can be a mind bending adventure and that the best way to have a stress free experience is knowing upfront what you cannot (or should not attempt to) do. Knowing that certain things just cannot be done helps putting your mind back back on the right track.

So here are things not to do in Rust and what to do instead which I think should be better known.
rust  programming  intro  armin.ronacher 
march 2018 by joecamel
Badness 10.0000 | Escaping Hell with Monads
Four examples of pattern where monads are useful (and how other languages cope with the problems). HN https://news.ycombinator.com/item?id=16445212
haskell  fp  functional  monad  programming  patterns 
february 2018 by joecamel
leandromoreira/ffmpeg-libav-tutorial: [WIP] Learn FFmpeg libav the Hard Way
'I was looking for a tutorial/book that would teach me how to start to use FFmpeg as a library (a.k.a. libav) and then I found the "How to write a video player in less than 1k lines" tutorial. Unfortunately it was deprecated, so I decided to write this one.'
ffmpeg  video  tutorial  intro  programming 
february 2018 by joecamel
Meanderful: The accidental HFT firm
"A bit of my trading story, with the names largely changed."
hft  performance  trading  programming 
january 2018 by joecamel
Nice errors in LALRPOP
"For the last couple of weeks, my mornings have been occupied with a pretty serious revamping of LALRPOP’s error message output. I will probably wind up doing a series of blog posts about the internal details of how it works, but I wanted to write a little post to advertise this work."
rust  parser  programming 
january 2018 by joecamel
Writing parsers like it is 2017 | Svelte Hacker News
Some discussion on parsers (Ocaml's Menhir and Rust's LALRPOP generators).
hn  parser  discussion  rust  ocaml  programming  plt 
january 2018 by joecamel
Falsehoods programmers believe about video stuff
"Inspired by numerous other such lists of falsehoods. Pretty much every video player in existence gets a good chunk if not the vast majority of these wrong. (Some of these also/mostly apply to users, though)"
advice  video  programming  falsehoods  list  codecs 
january 2018 by joecamel
My unusual hobby | Stephan Boyer
"I think of Coq as an extension of my own ability to reason logically. When I’m in doubt about something, I open the Coq IDE and try to prove it. I think the reason this is so valuable to me is that I often mull over functional programming, types, logic, algorithms, etc. These kinds of things are well-suited to formalization."
coq  type.theory  plt  programming  proof  math 
november 2017 by joecamel
Jane Street Tech Blog - Effective ML Revisited
- Use uniform interfaces
- Make illegal states unrepresentable
- Code for exhaustiveness
- Open few modules
- Make common errors obvious
functional  programming  sml  ocaml  tips  jane 
november 2017 by joecamel
On Disk IO, Part 1: Flavours of IO – αλεx π – Medium
"Knowing how the IO works, which algorithms are used and under which circumstances can make lives of developers and operators much better: they will be able to make better choices upfront (based on what is in use by the database they’re evaluating), troubleshoot the performance issues when the database misbehaves (by comparing their workloads to the ones the database stack is intended to be used against) and tune their stack (by spreading the load, switching to a different disk type, file or operating system, or simply picking a different index type)."
io  programming  linux  internals  system.programming 
november 2017 by joecamel
High Performance Browser Networking (O'Reilly)
"Performance is a feature. This book provides a hands-on overview of what every web developer needs to know about the various types of networks (WiFi, 3G/4G), transport protocols (UDP, TCP, and TLS), application protocols (HTTP/1.1, HTTP/2), and APIs available in the browser (XHR, WebSocket, WebRTC, and more) to deliver the best—fast, reliable, and resilient—user experience."
book  browser  network  networking  performance  webdev  programming  ebook 
november 2017 by joecamel
A Model for Reasoning About JavaScript Promises
"the semantics of JavaScript promises are quite complex, and since the feature is implemented by way of ordinary function calls, there are no static checks to ensure correct usage. As a result, programmers often make mistakes in promise-based code that leads to pernicious errors, as is evident from many reported issues on forums such as StackOverflow."
Summary https://blog.acolyer.org/2017/11/10/a-model-for-reasoning-about-javascript-promises/
javascript  webdev  plt  paper  pdf  programming 
november 2017 by joecamel
Programming Design Systems
A free digital book that teaches a practical introduction to the new foundations of graphic design. By Rune Madsen.
book  ebook  design  programming 
october 2017 by joecamel
Rust at Sentry by Armin Ronacher · Eventil
"The usage of Rust started as an experiment at Sentry but became a non negligible part of our infrastructure. This is lessons learned, what works and doesn't and what we think is going to happen in the future."
rust  programming  talk  video  slides  sentry 
august 2017 by joecamel
Scrapmetal — Scrap Your Rust Boilerplate
"TLDR: I translated some of the code and ideas from Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming by Lämmel and Peyton Jones to Rust and it’s available as the scrapmetal crate."
haskell  rust  programming  designpatterns 
august 2017 by joecamel
Jane Street Tech Blog - +'a and -'a
"If you’ve ever wondered what it means in OCaml when there is a + or - in front of a type variable, read on."
ocaml  jane.street  type.theory  plt  programming 
august 2017 by joecamel
Understanding V8’s Bytecode – DailyJS – Medium
"This article explains V8’s bytecode format — which is actually easy to read once you understand some basic concepts."
v8  javascript  js  web  programming  internals  intro  overview 
august 2017 by joecamel
System programming in Rust: beyond safety | the morning paper
"Despite many advances in programming languages, clean-slate operating systems, hypervisors, key-value stores, web servers, network and storage frameworks are still developed in C, a programming language that is in many ways closer to assembly than to a modern high-level language. Today, the price of running unsafe code is high… Why are we still using C?"
rust  programming  systems  paper 
june 2017 by joecamel
ELF Hello World Tutorial - Ciro Santilli
Introductory analysis of a simple example of the Executable and Linkable File format.
assembly  linux  programming  internals  elf 
may 2017 by joecamel
Memory Allocators 101 | James Golick
"For the last few weeks, I've been working on a couple of patches to tcmalloc, Google's super high performance memory allocator. I'm going to post about them soon, but first I thought it would be cool to give some background about what a memory allocator actually does. So, if you've ever wondered what happens when you call malloc or free, read on." HN: https://news.ycombinator.com/item?id=5720901
memory  programming  malloc  internals  intro  overview  google 
april 2017 by joecamel
Type checking Idris is much simpler than Haskell.
"...At least this is my personal feeling after having read a lot of GHC code, written an Idris backend, the native backend for Lean, and significant portions of `rustc`."
hn  discussion  haskell  dependent.types  plt  implementation  idris  programming 
april 2017 by joecamel
Thirteen Years of Bad Game Code · Evan Todd
"What follows is a compilation of lessons, snippets, and words of warning salvaged from my own excursion into the past. Names have not been changed, to expose the guilty."
development  code  gamedev  programming  experience 
march 2017 by joecamel
Beautiful Racket by Matthew Butterick
How to make your own pro­gram­ming lan­guages with racket by matthew but­t­er­ick
scheme  racket  book  online  ebook  programming  free  plt  language 
march 2017 by joecamel
Your opinions on using Rust in programming competitions? : rust
"Among my friends are regular participants to programming competitions like TopCoder, and one of them has managed to use Rust in the actual competition. The result was mixed, and he wrote the pros and cons up..."
rust  programming  competition  reddit  experience  2016 
march 2017 by joecamel
Graphical depiction of ownership and borrowing in Rust - Rufflewind's Scratchpad
"Below is a graphical depiction of moving, copying, and borrowing in the Rust language. Most of these concepts are fairly specific to Rust and are therefore a common stumbling block for many learners."
rust  programming  plt  visualization 
february 2017 by joecamel
IR is better than assembly — Idea of the day
"The crucial part is IR. It's a common language that sits between the high-level program and the low-level backend. IR is used to express high level concepts and is specific enough that any backend can produce a fast machine code.

IR is the heart of LLVM."
assembly  lowlevel  llvm  programming  internals 
february 2017 by joecamel
A Hoare Logic for Rust · Ticki's blog
"Lately, I've been working on a Hoare-logic-based model of the Rust MIR, which I will introduce in the post. This is a minor step towards a memory model of Rust, and it allows formalization of programs and their behavior."
cs  rust  programming  plt  hoare.logic  intro 
february 2017 by joecamel
« earlier      
per page:    204080120160

related tags

3d  aaron-swartz  abstraction  academia  accessibility  acm  activerecord  adt  advanced  advice  agda  agent  agents  ai  ajax  alan.kay  alankay  algebra  algo  algorithm  algorithms  amazon  analogy  analysis  android  animation  annotated  answer  api  apl  appengine  architecture  arm  armin.ronacher  arp  art  article  articles  artima  ascii  assembly  astronomy  async  async/await  asyncio  authentication  automata  awk  beginner  berkeley  bestpractices  binary.search  bioinformatics  bitwise  bjarne.stroustrup  blog  blogpost  bloom.filters  book  books  bookshelf  bootloader  branching  bret.victor  brian.harvey  browser  build  c  c++  cache  cairo  calendar  captcha  career  cartoon  category.theory  cc  channel9  cheatsheet  children  chrome  classic  cli  clojure  clojure-conj  clustering  code  codebase  codecs  codejam  codereview  coding  codinghorror  cognitive  collection  college  collision.detection  color  comet  comic  comment  comparison  competition  competitive.programming  compiler  complexity  computer  computers  computerscience  computing  concurrency  concurrent  conference  constraint.programming  contest  contributing  conventions  cookbook  coq  course  cpp  cpu  crdt  criticism  cs  cuda  curriculum  curry  currying  cvs  d3  data  database  datamining  datastructure  datatype  datetime  db  dbus  debug  debugging  demeter  dependent.types  design  designpatterns  dev  development  dictionaries  dijkstra  dilbert  disability  discussion  distributed  django  docs  documentation  dom  douglas.crockford  drupal  dvcs  dvorak  dynamic  dynamic.programming  ebook  eckel  eclipse  editor  education  elf  elisp  emacs  emulation  emulator  encoding  engine  engineering  enterprise  epub  eric.allen  eric.raymond  erlang  error  esr  essay  essays  ethernet  evolution  ewd  example  examples  exception  exercises  experience  explanation  extension  fabric  facebook  falsehoods  ffmpeg  filetype:jpg  filetype:pdf  firefox  floating  floating.point  fogus  forth  fp  framework  frameworks  free  fun  functional  funny  future  gae  game  gameboy  gamedev  games  gaming  gc  gcc  gdb  geek  generative  gil  git  github  gluon  gnome  golang  google  googlewave  gpu  grammar  graph  graphics  graphs  grid  gtk  guide  guidovanrossum  guysteele  hack  hacker  hacketyhack  hacking  handbook  hangout  hardware  hash  hashing  haskell  hft  hg  high.level  hiring  history  hn  hoare.logic  homoiconicity  howto  hr  hs  http  http2  https  humor  ibm  icpc  ict  idioms  idris  illustration  implementation  industry  infoq  inheritance  injection  inspiration  interactive  interesting  internals  interpreter  interview  intro  introduction  introspection  intuition  io  jane  jane.street  java  java8  javascript  john.hughes  journal  jquery  js  julia.evans  jvm  kafka  kalman  kernel  kernighan  keyboard  kids  knitting  knuth  kth  lambda  lambdacalculus  lambdatheultimate  language  language.design  languages  latex  learning  lecture  lectures  library  lin.clark  linear.types  linguistics  linker  linux  lisp  list  literature  littleschemer  llvm  loader  logic  loops  lowlevel  lua  luka.kalinovcic  machine  macros  mailinglist  malloc  marijn.haverbeke  markdown  markup  martin.kleppmann  martin.odersky  math  mathematics  mccarthy  media:document  media:image  memory  mercurial  microcontrollers  microsoft  mit  ml  mmap  mobile  modern  module  monad  monads  monoid  monospace  moon  morphism  motivation  mozilla  mptt  multipart  multithreading  music  nes  network  networking  new-style-class  nlp  norman.ramsey  norvig  notes  numbers  obfuscation  ocaml  ocw  okasaki  online  oop  oopsla  open  openframeworks  opengl  openid  opensource  operational.transforms  opinion  optimization  orm  os  otp  overview  painting  paper  papers  parallel  parser  parsers  parsing  part  partial  parts  Pattern  patterns  paulgraham  pdf  pedagogy  performance  personal.experience  petr  phd  philosophy  PHP  physics  pip  pl  playlist  pleac  plt  pltheory  plugin  podcast  poll  pool  posix  post  postgres  presentation  problembased  problems  problemsolving  processing  programming  project  prolog  proof  psychology  puzzles  pycon  pygtk  python  python3  pyxpcom  qt  queryset  question  queue  quickref  quirks  quiz  r  racket  rails  raph.levien  raspberrypi  raymond.hettinger  raytracing  read  reading  readinglist  realtime  reason  recommendation  reddit  reference  references  regex  repeat100rt360  research  resources  rest  restful  review  richardgabriel  richhickey  rocket  ruby  rubyonrails  rust  satire  scala  scalability  scheduling  scheme  school  schools  science  scipy  screencast  sdl  search  security  sentry  series  server  servo  shaders  shape  short  sicp  signals  simd  simonpeytonjones  simplicity  singal.processing  skip-list  slides  smalltalk  sml  software  solutions  spam  sparklines  spoj  sql  sqlite  ssd  ssl  stackexchange  stackoverflow  standards  stanford  starcraft  startup  statistics  stem  steve-yegge  stockholm  storage  strace  strangeloop  string  strings  stronglytyped  style  styleguide  super  sussman  sysadmin  system.programming  systems  talent  talk  talks  taocp  tcp/ip  teaching  tensors  testing  text  theory  thesis  thread  threading  threadpool  threads  tips  tool  tools  topcoder  toread  trading  tribute  tricki  trie  tutorial  tutorials  type.theory  typesystem  typing  typography  unicode  unix  useful  utility  v8  vcs  versioncontrol  vi  video  videogames  vim  vimeo  virtualenv  visualization  volatile  w3c  web  webdev  webrtc  whyfp  wiki  wikipedia  working-hard  worse.is.better  writing  x11  x86  x86-64  xkcd  xsystem  xtext  yegge  youtube  yow  yt  zero.cost  zeromq  _why 

Copy this bookmark:



description:


tags: