Reverse Engineering the Soundcloud API
Hi guys, in this post we will learn how to bypass downloading restrictions on Soundcloud. We will create a Python script which will allow us to download even…
Prospecting for Hash Functions
Update 2022 : TheIronBorn has found even better permutations using a smarter technique. That thread completely eclipses my efforts in this article.
Revisiting 'Monadic Parsing in Haskell'
‘Monadic Parsing in Haskell’ is a short paper that laid the groundwork for libraries like Parsec and Attoparsec. Although it was published in 1998 (almost 20 years ago!) it has aged gracefully and the code samples will run with almost no changes. However, the state of the art has advanced since then and I think the…
Improved JavaScript and WebAssembly performance in EdgeHTML 17
In every release of Microsoft Edge, we tune the Chakra JavaScript engine to provide better startup and execution performance, with a leaner memory footprint, and with improved responsiveness on real-world workloads. As EdgeHTML 17 rolls out to users as part of the Windows 10 April 2018 Update, we’d like to dive into…
FizzBuzz in ten languages
Updates (2024) Since this post was originally written, the FizzBuzz github repository has received 23 additional contributions so the total…
How Old School C Programmers Process Arguments
Here’s a bit of code from Kernighan’s and Ritchie’s seminal text, The C Programming Language . I’m not sure I’d actually recommend coding this way (as written in the book, the entire program has only one comment), but it’s so darn clever and concise, I can’t help but post it. This snippet is part of a larger program…
When the Compiler Bites
So far this year I’ve been bitten three times by compiler edge cases in GCC and Clang, each time catching me totally by surprise. Two were caused by historical artifacts, where an ambiguous specification lead to diverging implementations. The third was a compiler optimization being far more clever than I expected…
Migrating to React’s New Context API
Let's compare the before/after of React's new context API.
Designing a Good DSL
A look at common mistakes in DSL designs and how to fix them
Basics of Futexes
The futex (short for "Fast userspace mutex") mechanism was proposed by Linux contributors from IBM in 2002 [1] ; it was integrated into the kernel in late 2003. The main idea is to enable a more efficient way for userspace code to synchronize multiple threads, with minimal kernel involvement.
Maybe adding generics to Go is about syntax after all
This is a short response to the recently announced Go 2 generics draft proposals
Get Started with Blockchain Using the New AWS Blockchain Templates
Update: The content in the blog post below is no longer up to date. For more information please see our documentation. Many of today’s discussions around blockchain technology remind me of the classic Shimmer Floor Wax skit. According to Dan Aykroyd, Shimmer is a dessert topping. Gilda Radner claims that it is a floor…
A Basic Just-In-Time Compiler (2015)
Monday’s /r/dailyprogrammer challenge was to write a program to read a recurrence relation definition and, through interpretation, iterate it to some number of terms. It’s given an initial term ( u(0) ) and a sequence of operations, f , to apply to the previous term ( u(n + 1) = f(u(n)) ) to compute the next term…
Optimizing a breadth-first search
Optimizing a breadth-first search of an implicit graph for secondary storage, and memory use in general.
Johnny-Five v1.0 – JavaScript Robotics and IoT Framework
Johnny-Five is the original JavaScript Robotics & IoT Platform. Originally created by Rick Waldron in 2012, Johnny-Five is now maintained by a community of passionate software developers and hardware engineers. Over 75 developers have made contributions towards building a robust, extensible and composable ecosystem.
Haskell's Missing Concurrency Basics (2016)
Michael Snoyman's personal homepage and blog, featuring writing about programming, open source, health, finance, religion, and whatever else catches his interest.
What is Software Engineering?
Nearly all of Go’s distinctive design decisions were aimed at making software engineering simpler and easier. We’ve said this often. The canonical reference is Rob Pike’s 2012 article, “ Go at Google: Language Design in the Service of Software Engineering .” But what is software engineering?
Sum Types Are Coming (2015)
Just as all mainstream languages now have lambda functions, I predict sum types are the next construct to spread outward from the typed functional programming community to the mainstream. Sum types are very useful, and after living with them in Haskell for a while, I miss them deeply when using languages without them…
C++ Programming Questions to Ask on Interview (2017)
All C++ interview questions have everything you need on live interview – explanation, possible right/wrong answers, following questions.
The Value of Undefined Behavior
In several places, the C and C++ language specifications use a curious, and fairly controversial, phrase: undefined behavior . For certain program constructs, the specification prescribes no specific behavior, instead allowing anything to happen . Such constructs are considered erroneous, and so the result depends on…
Rationale: Or why am I bothering to rewrite nanomsg?
I became involved in the nanomsg community back in 2014, when I wrote mangos as a pure Go implementation of the wire protocols behind nanomsg . I did that work because I was dissatisfied with the ZeroMQ licensing model and the C++ baggage that came with it. I also needed something that would work with Go on illumos …
Incrementally improving the performance of a Python script
I have been doing a lot of competitive programming problems on Kattis lately. It is my favourite online judge, and I have been enjoying my climb up the Irish scoreboard in an attempt to regain my former glory of first place. In particular, today I was tackling the problem Pivot.