The Curious Engineer

All blogs / Functional / PL theory

Matt Might's blog

matt.might.net/articles

Functional / PL theoryCompilersEngineering management / careersEngineering blogs

’10’15’20’25
Posts
151 from 20 Jan 2009 to 18 Aug 2014
Posting
quiet since 2014
Kind
personal blog

2014 1

  1. Missing method: How to delete from Okasaki's red-black trees

2013 1

  1. Learning Scala in small bites

2010 1

  1. A survival guide for Unix beginners

2009 1

  1. Automatic syllabus, schedule and agenda management code in Javascript

Undated 147

  1. A-Normalization: Why and How (with code)
  2. 10 tips on how to give an academic talk
  3. Hacking your Address Book with C, Racket and LaTeX to print mailing labels correctly
  4. Academic job hunt advice: Tips for searching for and landing a professorship
  5. A Ph.D. thesis proposal is a contract
  6. American Airlines sucks: How to lose a customer
  7. Apply Yourself Greasemonkey scripts for Firefox to fix the user interface
  8. End artificial scarcities to boost productivity
  9. Shell programming with bash: by example, by counter-example
  10. iPhone tips and tricks: Syncing, productivity, analytics and more
  11. Advanced programming languages
  12. Tips, tricks and tools for using and learning Linux and Unix
  13. Books and papers every graduate student should read
  14. By example: Continuation-passing style in JavaScript
  15. C++ template programming: Embedding the lambda-calculus to show Turing-completeness
  16. Writing CEK-style interpreters (or semantics) in Haskell
  17. Writing an interpreter, CESK-style
  18. Church-encoded numbers, lists, booleans, conditionals with fixed-point recursion in Scheme
  19. Closure conversion: How to compile lambda
  20. College tips: Advice from a professor
  21. Compiling Scheme to C with flat closure conversion
  22. Compiling to Java as a target language
  23. Compiling up to the λ-calculus: Church encodings and the Y combinator
  24. Console productivity hack: Discover the frequent; then make it the easy
  25. How to compile with continuations
  26. The CRAPL: An academic-strength open source license
  27. Boost your productivity: Cripple your technology
  28. Quick easy cheap last minute gift ideas
  29. A denotational interpreter for a Scheme and Lisp-like lambda-calculus-based language in Scala
  30. Desugaring Scheme with tree transformations
  31. Translating mathematics into code: Examples in Java, Python, Haskell and Racket
  32. Rare disease hunting
  33. Electric meat
  34. Get The Illustrated Guide to a Ph.D. in print; fund Ph.D. students; save lives
  35. Gadget review: Telling time quickly on a binary watch
  36. Google analytics hacks: A real-time stats bookmarklet and full referring URLs
  37. 12 resolutions for grad students
  38. Grammar: The language of languages (BNF, EBNF, ABNF and more)
  39. Greasemonkey scripts for NSF's Fastlane
  40. Hacking strength: Gaining muscle with least resistance
  41. Higher-order list operations in Racket and Haskell
  42. HOWTO: Home and neighborhood security
  43. HOWTO: Apply for and get into grad school in science, engineering, mathematics and computer science: Tip, tricks, hints and mistakes
  44. 6 tips for low-cost academic blogging
  45. HOWTO: Quickly create an online catalog of your books using a $10 CueCat barcode scanner and LibraryThing
  46. How to send and reply to email
  47. Surviving a traffic surge: Three techniques to scale your site fast
  48. HOWTO: Get rid of mold and allergy problems with dehumidifiers, air purifiers and vacuums
  49. HOWTO: Make a cat 5/ethernet/RJ45 cable
  50. HOWTO: Native iPhone/iPad apps in JavaScript
  51. How to peer review scientfic work
  52. HOWTO: Read and create Word documents, Excel spreadsheets and PowerPoint presentations without Microsoft Office
  53. Asking for a letter of recommendation
  54. HOWTO: Eliminate dog, cat and pet stains and odors in carpets using bacteria, enzymes and UV black lights
  55. HOWTO: Rip a DVD on Mac OS X--perfect copies and iPhone/iPod transfer and conversion
  56. 99 ways to say '(I love you) in Racket
  57. Implementation of the Fermat and Solovay-Strassen primality tests for RSA key generation in Scheme
  58. Okasaki-style red-black tree maps: A purely functional implementation in Scala
  59. k-CFA: Determining control-flow and/or types in functional, scripting and object-oriented languages
  60. Lazy-list-based Streams in Scala
  61. Writing a lexer and parser for M-Expressions from scratch using Scala's combinators
  62. Converting regular expressions into nondeterministic finite automata (NFAs): An implementation in Java
  63. Non-termination without loops, iteration or recursion: Applying functional programming techniques to Javascript
  64. Memoizing recursive functions via the fixed-point Y combinator: Applying functional programming techniques to Javascript
  65. Pattern-matching regular expressions in Scheme using derivatives
  66. Implementation of the RSA public-key cryptography algorithm in the Scheme dialect of Lisp
  67. Fast, portable, expressive vector-based records\/structs for Scheme from syntax-rules
  68. 7 lines of code, 3 minutes: Implement a programming language
  69. You don't understand exceptions, but you should
  70. Understand and implement laziness with examples in Scala, JavaScript, Swift and Racket
  71. Demo title
  72. What is static analysis?
  73. A short introduction to make
  74. Multitouch remote for a robot: 200 lines of JavaScript & Python
  75. JavaScript: Warts and workarounds
  76. Church encodings in JavaScript
  77. Lambdas? In *my* C++?
  78. Meeting notes: Small thoughts on large cohorts
  79. Learning JavaScript in small bites, Part 1
  80. Learning JavaScript in small bites, Part 2
  81. Learning JavaScript in small bites, Part 3
  82. Learning JavaScript in small bites, Part 4
  83. Least resistance weight loss
  84. Legal information, disclaimers and disclosures
  85. Lexical analysis in Racket
  86. McLexer and McHighlight: A JavaScript library for syntax-highlighting (or generating lexical analyzers)
  87. Logical literacy
  88. First-class, run-time macros from meta-circular evaluators
  89. Demo title
  90. Demo title
  91. Hunting down my son's killer
  92. Classroom Fortress: The Nine Kinds of Students
  93. A non-blocking lexing toolkit for Scala based on the derivative of regular expressions
  94. Advisor types
  95. Code project interview
  96. How to learn functional programming books articles resources
  97. How to learn or teach yourself mathematics
  98. P np good bad irrelevant
  99. New
  100. Regex to dfa
  101. Understanding s expressions
  102. Unwritten rules of grad school
  103. Implementing Java as a CESK machine, in Java
  104. PAANDA: The academic alternative to NDAs
  105. Parsing regular expressions with recursive descent
  106. Parsing S-Expressions in Scala
  107. Yacc is dead: An update
  108. Order theory for computer scientists
  109. Peer fortress: The scientific battlefield
  110. Responding to peer review
  111. An experiment-driven guide to Perl
  112. The 5+5 Commandments of a Ph.D.
  113. Academic martial arts: Defending your Ph.D.
  114. The illustrated guide to a Ph.D.
  115. M2HTTPD: A pipelined, non-blocking, extensible web server in under 1400 lines of Scala
  116. Practicing privacy with encryption
  117. Preventing and healing repetitive strain injury (RSI) and carpal tunnel syndrome: Ergonomic tips, techniques and keyboards
  118. The shape of your problem
  119. Productivity hints, tips, hacks and tricks for graduate students and professors
  120. 12 resolutions for programmers [2023 update]
  121. Coroutines, exceptions, time-traveling search, generators and threads: Continuations by example
  122. Equational derivations of Church encodings and the Y Combinator in Python
  123. An introduction to QuickCheck with number theory and red-black trees
  124. Discovering patients and new diseases with the internet
  125. Desugaring regular operations in context-free grammars
  126. Canvas-tag rendering of mathematical functions
  127. Sculpting text with regex, grep, sed and awk
  128. Self-inlining anonymous functions in C++
  129. Settling into Unix
  130. 3 shell scripts: Kill weasel words, avoid the passive, eliminate duplicates
  131. Relational shell programming
  132. SSH tricks
  133. Standalone lexers with lex: synopsis, examples, and pitfalls
  134. Self-inlining anonymous closures in C++
  135. 2011 Scheme Workshop: Accepting Submissions
  136. 3 qualities of successful Ph.D. students: Perseverance, tenacity and cogency
  137. Mac tips, tricks and software for new Apple users: Switching from Windows or Linux
  138. HOWTO: Use Skype for home phone line service
  139. HOWTO: Get tenure
  140. Travel hacks (Updated July 2014)
  141. 10 reasons Ph.D. students fail
  142. What every computer science major should know
  143. A short guide to Salt Lake City
  144. Why guaranteed file compression is impossible
  145. Why peer reviewers should use an anonymizing network like TOR
  146. Tips for work-life balance
  147. Architectures for interpreters: Substitutional, denotational, big-step and small-step