In [episode 379 of ATP](https://atp.fm/379) both Marco Arment and John Siracusa described noticeable delays and stalls after upgrading to macOS 10.15. I have been struggling with this issue myself and have found several system operations that can cause these delays, which I will detail below. One way to solve the delays is to disable your internet connection. This is tough medicine, but if you…
[Jekyll][] is a static site generator which we recently adopted for most of motivated by its nice design and large userbase. We did however run into performance issues so we [wrote a replacement](https://github.com/sorbits/glim) which is semi-compatible with Jekyll but with better speed and some additional features [Jekyll]: https://jekyllrb.com/ ## Feature Summary * Running `serve` will generate…
I run a few things via cron, some of them need to run in intervals that cannot be expressed, for example biweekly or every 8th month. As a general solution I created the `every` command [available here][1]. The supported usage is: every [-n number] command [argument ...] This will run `command` every `number` time it’s invoked. For example to send an email the third, sixth, ninth, etc. time we…
If you upgraded to Mountain Lion and often want to `cd` into `~/Library/Application Support` you might be a little annoyed by the new `Application Scripts` directory that makes the normal `~/Library/Ap⇥` stop at `~/Library/Application S‸` to have you disambiguate the path. To avoid this you can set the `FIGNORE` variable. From `man bash`: FIGNORE A colon-separated list of suffixes to ignore when…
Jay from LinkedIn’s SNA team [writes][1]: > Quick, what is the fastest way to search a sorted array? > > Binary search, right? > > Wrong. There is actually a method called [interpolation search][] [1]: http://sna-projects.com/blog/2010/06/beating-binary-search/ [interpolation search]: http://en.wikipedia.org/wiki/Interpolation_search
Whenever I see something that intrigues me, my mind makes a note of it and then subconsciously works toward finding a use-case for my newfound knowledge. An example is that I recently learned how protected member data (C++) is actually not safe from outside pryers (even in clean code that does not use typecasts). Given a base class: class Base { protected: int foo () { return 42; } }; We can…
[GCC 4.5.0][] is out and their [progress on implementing C++0x features][1] is coming along nicely. If you are on OS X and want to try it out you can install it via [MacPorts][]: sudo port install gcc45 The binary installed is named `g++-mp-4.5` and you must use the `-std=c++0x` argument to enable the new features. Of the supported C++0x features here are some of those that I find the most…
I ran some benchmarks which included [PBZip2][], a multi-threaded implementation of BZip2 (which is slow yet effective, so my preferred choice of compressor for basically everything). Running the [Burrows–Wheeler transform][BWT] over the input blocks is a task well suited for being parallelized and the benchmarks show that Jeff Gilchrist did a great job at this: | Compressor | Time | Archive Size…
I just learned this neat thing about the `cd` shell command: > The variable `CDPATH` defines the search path for the directory containing _«dir»_. Alternative directory names in `CDPATH` are separated by a colon (`:`). A null directory name is the same as the current directory. If _«dir»_ begins with a slash (`/`), then `CDPATH` is not used. For example: % export…
This is part 2 of what I think will end up as four parts. This might be a bit of a rehash of the [first part][], but I skimmed lightly over why it actually is that I am so fond of `make` compared to most other build systems, so I will elaborate with some examples. [first part]: http://sigpipe.macromates.com/2010/01/15/build-automation-part-1/ Part 3 will be a general post about declarative…