googleprojectzero/halfempty: A fast, parallel testcase minimization tool.
Halfempty is a new testcase minimization tool, designed with parallelization in mind. Halfempty was built to use strategies and techniques that dramatically speed up the minimization process.
programming  testing  fuzzing 
22 days ago

Michael L. FREDMAN

Department of Mathematics, Massachusetts Institute of Technology,
Cambridge, Mass. 02139, USA

Received 14 Match 1974
Revised 4 June 1974

Let S = x1, x2, ..., xn be a sequence of n distinct elements from a linearly ordered set. We consider the problem of determining the length of the longest increasing subsequences of S. An algorithm which performs this task is described and is shown to perform n log n - n log log n + O(n) comparisons in its worst case. This worst case behavior is shown to be best possible.
programming  algorithm 
25 days ago
Studio is a minimalist GUI for solid modeling with the libfive kernel. It is a design environment based on Guile Scheme, and should be familiar to OpenSCAD users.

The UI combines script-based design with direct modeling: click and drag directly on your models, and the changes will be back-propagated into the script!
3d  modeling  scheme  software  3d-printing 
28 days ago
Constraint Solver
Gradient-descent equation solver for CAD-like constraints
programming  constraints  cad 
28 days ago
Downsampling Time Series for Visual Representation
As human beings, we often wish to visualize certain information in order to make better sense of it. This can be a somewhat challenging enterprise for large amounts of data and might require downsampling the data, retaining only the important visual characteristics. The focus of this thesis is to explore methods for downsampling data which can be visualized in the form of a line chart, for example, time series. Several algorithms are put forth in the thesis and their features are discussed. Also, an online survey was conducted where participants were asked to compare downsampled line charts against a non-downsampled chart. Some of the algorithms are based on a well-known technique in cartography which involves forming triangles between adjacent data points and using the area of the triangles to determine the perceptual importance of the individual points. According to the survey, algorithms based on a triangle area approach consistently proved to be effective, and one in particular when efficiency is also taken into account.
programming  graphing 
6 weeks ago
SQLite Session Extension
API for generating or applying changesets or patch sets.
programming  database  sqlite 
7 weeks ago
An Extension of Wilkinson’s Algorithm for Positioning Tick Labels on Axes (PDF)
The non-data components of a visualization, such as axes and legends, can often be just as important as the data itself.
They provide contextual information essential to interpreting the data. In this paper, we describe an automated system for choosing
positions and labels for axis tick marks. Our system extends Wilkinson’s optimization-based labeling approach [11] to create a more
robust, full-featured axis labeler. We define an expanded space of axis labelings by automatically generating additional nice numbers
as needed and by permitting the extreme labels to occur inside the data range. These changes provide flexibility in problematic cases,
without degrading quality elsewhere. We also propose an additional optimization criterion, legibility, which allows us to simultaneously
optimize over label formatting, font size, and orientation. To solve this revised optimization problem, we describe the optimization
function and an efficient search algorithm. Finally, we compare our method to previous work using both quantitative and qualitative
metrics. This paper is a good example of how ideas from automated graphic design can be applied to information visualization.
axis  labeling  graphing  charting  programming 
10 weeks ago
ケーブルフィギュア/CABLE MANIA/コンセント(ホワイト) - P-APLTDCNACWH
plug shells to put over your charging cable to make it look like VGA, electric outlet, or RCA cables
july 2018
A Primer on Bézier Curves
A free, online book for when you really need to know how to do Bézier things.

Deep knowledge of Bézier curves.
graphics  spline  programming  mathematics 
june 2018
Debugging on Mojave
macOS 10.14 debugger changes
debugging  macos  lldb  xcode 
june 2018
User Jim Ingham - Stack Overflow
lldb engineer at Apple

Helped with pblock
lldb  debugging  xcode 
june 2018
C++ Insights
Rewrites C++ to make all the implicit compiler magic explicit.
c++  internals  implicit  explicit 
may 2018
[libdispatch-dev] Clarification on default target_queue for custom serial queues
For items/queues submitted to an overcommit global queue, the current Mac OS X kernel workqueue mechanism creates threads more eagerly, e.g. even if an n-wide machine is already fully committed with n cpu-busy threads, submitting another item directly to the overcommit global queue or indirectly to a serial queue with default target queue will cause another thread to be created to handle that item (potentially overcommitting the machine, hence the name).

If you wish to avoid this, simply set the target queue of your serial queues to the default priority global queue (i.e. non-overcommit).
GCD  dispatch  programming 
april 2018
COCO - Common Objects in Context
COCO is a large-scale object detection, segmentation, and captioning dataset. COCO has several features:

Object segmentation
Recognition in context
Superpixel stuff segmentation
330K images (>200K labeled)
1.5 million object instances
80 object categories
91 stuff categories
5 captions per image
250,000 people with keypoints
april 2018
Perfect Thin and Crispy French Fries Recipe | Serious Eats
I've been literally giddy with the quality of the fries that have been coming out of my kitchen for the last two days. My wife won't hear the end of it. Even my puppy is wondering why his owner keeps exclaiming "Holy s**t that's good!" every half hour from the kitchen. I've cooked over 43 batches of fries in the last three days, and I'm happy to report that I've finally found a way to consistently reach crisp, golden Nirvana.

2 pounds russet potatoes (about 4 large), peeled and cut into 1/4-inch by 1/4-inch fries (keep potatoes stored in a bowl of water)
2 tablespoons distilled white vinegar
Kosher salt
2 quarts peanut oil
Place potatoes and vinegar in saucepan and add 2 quarts of water and 2 tablespoons of salt. Bring to a boil over high heat. Boil for 10 minutes. Potatoes should be fully tender, but not falling apart. Drain and spread on paper towel-lined rimmed baking sheet. Allow to dry for five minutes.

Meanwhile, heat oil in 5-quart Dutch oven or large wok over high heat to 400°F. Add 1/3 of fries to oil (oil temperature should drop to around 360°F). Cook for 50 seconds, agitating occasionally with wire mesh spider, then remove to second paper-towel lined rimmed baking sheet. Repeat with remaining potatoes (working in two more batches), allowing oil to return to 400°F after each addition. Allow potatoes to cool to room temperature, about 30 minutes. Continue with step 3, or for best results, freeze potatoes at least over night, or up to 2 months.

Return oil to 400°F over high heat. Fry half of potatoes until crisp and light golden brown, about 3 1/2 minutes, adjusting heat to maintain at around 360°F. Drain in a bowl lined with paper towels and season immediately with kosher salt. Cooked fries can be kept hot and crisp on a wire rack set on a sheet tray in a 200°F oven while second batch is cooked. Serve immediately.
cooking  recipe 
april 2018
Why I cannot say FRP but I just did – André Staltz – Medium
Functional Reactive Programming (FRP) is an increasingly popular acronym. Both reactive and functional programming are genuinely useful terms conveying ideas without formal rigor. FRP, however, is a radically strict term for a programming technique mathematically defined about 20 years ago.
People loosely use FRP to refer to reactive programming combined with functional programming techniques. However, they are all wrong. This terminology nitpicking has hurt the developer community, bringing confusion and fear of pronouncing those 3 letters. I have seen this confusion repeat itself multiple times, and I think restricting FRP to its original rigorous semantics does not help us communicate programming ideas.
I believe FRP should be a useful term for an idea, just like functional programming and reactive programming are.
functional  programming  reactive 
march 2018
Choosing Features by Kevin Lynagh – Deconstruct
OK so that's all I wanted to talk about. And I want to close, and just implore you that, if you're building some sort of technology, whatever that technology is, if that's software, if that's hardware, please think of the knobs, OK? You have to choose the right knobs, think about why they're there, what they're actually supposed to do. And then once you've done that, try to think about how you communicate that to the people using your tool. And that way, if they actually understand the capabilities of your tool, they understand what all the knobs do, they're really empowered and they can use it to go on and make great stuff. Thanks.
design  programming 
march 2018
Block Debugging
details about Objective-C block internals and poking around them with lldb
debugging  programming  blocks 
february 2018
Evolving a Decompiler
Abstract—We introduce a novel technique for C decompilation
that provides the correctness guarantees and readability properties
essential for accurate and efficient binary analysis. Given a
binary executable, an evolutionary search seeks a combination
of source code excerpts from a “big code” database that can be
recompiled to an executable that is byte-equivalent to the original
binary. Byte-equivalence ensures that a successful decompilation
fully reproduces the behavior, both intended and unintended, of
the original binary. Moreover, the decompiled source is typically
more readable than source obtained with existing decompilers,
since it is generated from human-written source code excerpts.
We present experimental results demonstrating the promise of
this novel, general, and powerful approach to decompilation.
programming  decompiling 
february 2018
Library of Congress Classification and Shelflisting Manual
The purpose of this publication is to provide guidelines for establishing Library of
Congress classification numbers and assigning them to library materials, as well as for
shelflisting materials collected by the Library of Congress. The work is not intended to be a
comprehensive work on classification and shelflisting theory nor an exhaustive explanation of
the Library of Congress classification and shelflisting system. Rather, it is an accumulation of
guidelines that have been formulated over several decades dealing with commonly recurring
questions that arise when using the LC classification.
loc  organization  classification  books 
february 2018
Library of Congress Classification and Shelflisting Manual Call Numbers G 55
BACKGROUND: A call number consists of two main parts: a classification number and a book number. The classification number is normally selected from the LC classification schedules and reflects the subject matter of the book. The book number serves to organize works on one subject (in one classification number) by reflecting, normally, an alphabetical arrangement by the 1XX and/or 245 fields. Since 1982, monograph call numbers contain a third element, a date.
library  books  loc  organization  classification 
february 2018
Test Patterns | Netflix
This is a collection of video test patterns organized by source resolution and native frame rate. The resolution indicated in the pattern's title identifies the title's source resolution, and therefore, the stream set's maximum encoded resolution. The frame rate indicated in the pattern's title identifies the title's source frame rate. Frame rates greater than 30fps will be presented natively where devices allow.
video  calibration 
february 2018
An Introduction to Cache-Oblivious Data Structures
Along these lines, today’s post explores the question:

Can we design data structures and algorithms that perform optimally regardless of underlying cache sizes?

If we could do this, our code would optimally utilize all cache layers without tuning. In academia, algorithms and data structures that have these properties are referred to as cache-oblivious. (This is a pretty confusing name. A clearer name might be cache-size oblivious.) I find cache-oblivious data structures very satisfying because they can yield huge performance gains in practice.
programming  algorithm  data-structures  optimization 
february 2018
OpenPose: Real-time multi-person keypoint detection library for body, face, and hands estimation
OpenPose: Real-time multi-person keypoint detection library for body, face, and hands estimation
february 2018
Hao SiFu’s pork bone broth
Hao SiFu’s pork bone broth


4-5 pounds of pork leg bones and knuckles

1 pound of chicken bones (neck or wings work best)

2 large onions – chopped in half

6 cloves of garlic – lightly crushed

1/2 Chinese white radish – chopped roughly (replace with carrots if unavailable in your area)

1 thumb piece of ginger

Handful of dried shitake mushroom (pre-soaked)

Handful of conpoy (dried scallop)

1 tpsn of crushed black pepper

Several dashes of Chinese rice wine


Boil the bones in a separate pot for at least 10 minutes. Remove from water and rinse carefully under tap water.

Crack the leg bones along the middle (we used a giant cleaver) Place washed and cracked bones in clean pot with cold water and bring to boil.

Add all other ingredients.

Gently boil with lid slightly ajar for at least 8 hours (the longer the better) stirring occasionally. It will smell terrible for the first 2 hours for some reason – this is normal. I've also used pressure cooker which reduces the cooking time to about 2 hours. It's still very good but unfortunately you don't get the nice emulsification of the fats.

The finished product will look like a rich, opaque, creamy white colour. Strain before serving.

This broth is served with fresh noodles with vegetables and protein of your choice. Ensure you season with soy sauce or salt before serving. For example, I like it served with roast pork, bok choy and mushrooms with egg noodles.
stock  recipe  cooking 
february 2018
Text Me Private
private/disposable voice and sms-capable virtual phone numbers
december 2017
» Game Loops on IOS Ananse Productions
Analysis of CADisplayLink, vsync, and run loop interaction.
development  ios  game  programming 
december 2017
OpenSimplex Noise
Our game needs 3D noise for terrain generation, particularly cave generation and cliff/arch/overhang generation. That leaves us with two options: Take the easier and less-interesting route and deal with the artifacts of Perlin noise, or create something new. So I took the latter route, and developed a new noise algorithm for us to use called OpenSimplex noise.

The algorithm borrows the surflet summation idea from Simplex noise, but is based off of the lattice of a Simplectic Honeycomb instead of a skewed scissor-simplex lattice, and uses a slightly larger surflet radius. The result is a noise algorithm that avoids significant cardinal-axis bias just like Simplex noise does. Below is a sample render (2D Slice of 3D).
algorithm  graphics  random  perlin 
november 2017
Background Transfer Service and Client Certific... | Apple Developer Forums
Quinn the eskimo discusses issues around using background NSURLSession downloads with client certificates or any authentication process that requires resuming the client process.
ios  programming  https  nsurlsession  authentication  ssl  resume-rate-limiter  app-transport-security 
november 2017
When Will Climate Change Make the Earth Too Hot For Humans?
The Uninhabitable Earth, Annotated Edition
The facts, research, and science behind the climate-change article that explored our planet’s worst-case scenarios.
science  future 
november 2017
(2) 2017 LLVM Developers’ Meeting: “Implementing Swift Generics ” - YouTube
Implementing Swift Generics - Douglas Gregor, Slava Pestov and John McCall

Slides: Coming Soon

Swift is a safe and efficient systems language with support for generic programming via its static type system. Various existing implementations of generic programming use either a uniform runtime representation for values (e.g., Java generics) or compile-time monomorphization (e.g., C++, Rust). Swift takes a “dictionary-passing” approach, similar to type-classes in Haskell, using reified type metadata to allow generic code to abstract over the memory layout of data types and avoid boxing. In this talk, we will describe the compilation of Swift’s generics from the type checker down to LLVM IR lowering and interaction with the Swift runtime, illustrating the how the core representation of generics flows through the system, from answering type-checking queries to the calling convention of generic functions and runtime representation of the “dictionaries”.
swift  programming  compiler 
november 2017
Colour management and gamut
Colour spaces allow us to map absolute colours in the physical world, to a measurement system specific to a device, such as a display. Have you heard of “sRGB”, “Adobe RGB”, “Display P3”, or “DCI-P3”? Those are colour spaces. They’re similar to our “cm” above. sRGB is the standard colour space for many devices. Adobe RGB, Display P3, and DCI-P3 are wider gamut colour spaces, that are now found on newer or more expensive devices.
october 2017
Dual N-Back FAQ - Gwern.net
N-back is a kind of mental training intended to expand your working memory (WM), and hopefully your intelligence (IQ1).
The theory originally went that novel2 cognitive processes tend to overlap and seem to go through one central bottleneck. As it happens, WM predicts and correlates with IQ3 and may use the same neural networks4, suggesting that WM might be IQ5. WM is known to be trainable, and so improving WM would hopefully improve IQ. And N-back is a family of tasks which stress attention and WM.
Later research found that performance and improvement on N-back seems to correlate better with IQ rather than classic measures of WM like reciting lists of numbers, raising the question of whether N-back works via increasing WM or by improving self-control or improving manipulation of WM contents (rather than WM’s size) or somehow training IQ directly.6 Performance on DNB has complicated correlations with performance on other tests of working memory or IQ, so it’s not clear what it is tapping into. (And the link between WM and performance on IQ tests has been disputed; high WM as measured by OSPAN does not correlate well with performance on hard Raven’s questions7 and the validity of single tests of WM training has been questioned8.)
brain  training  exercise 
october 2017
This training exercise boosts brain power, Johns Hopkins researchers say | Hub
The researchers found that the group that practiced what's known as a "dual n-back" exercise showed a 30 percent improvement in their working memory. That was nearly double the gains made by the group working with the other common task, known as "complex span." The dual n-back group also showed significant changes in brain activity in the prefrontal cortex, the critical region responsible for higher learning.
brain  training  exercise  n-back 
october 2017
Modern B-Tree Techniques
This survey reviews the basics of B-trees and of B-tree indexes in
databases, transactional techniques and query processing techniques
related to B-trees, B-tree utilities essential for database operations,
and many optimizations and improvements. It is intended both as a
survey and as a reference, enabling researchers to compare index innovations
with advanced B-tree techniques and enabling professionals to
select features, functions, and tradeoffs most appropriate for their data
management challenges.
programming  algorithm  database 
october 2017
Class Clusters
As of iOS 11/macOS High Sierra, and only including ones in Foundation and CoreFoundation
cocoa  programming  objective-c  foundation 
october 2017
How Not To Sort By Average Rating – Evan Miller
PROBLEM: You are a web programmer. You have users. Your users rate stuff on your site. You want to put the highest-rated stuff at the top and lowest-rated at the bottom. You need some sort of “score” to sort by.
math  programming  statistics  score  scoring 
august 2017
A history of branch prediction from 1500000 BC to 1995
The purpose of this talk is to explain how and why CPUs do “branch prediction” and then explain enough about classic branch prediction algorithms that you could read a modern paper on branch prediction and basically know what’s going on.
programming  hardware  architecture  cpu 
august 2017
rclone - rsync for cloud storage
Rclone is a command line program to sync files and directories to and from

Google Drive
Amazon S3
Openstack Swift / Rackspace cloud files / Memset Memstore
Google Cloud Storage
Amazon Drive
Microsoft OneDrive
Backblaze B2
Yandex Disk
The local filesystem
cli  command-line 
july 2017
An end to end implementation of a Machine Learning pipeline
Why write yet another Tutorial on Machine Learning and Deep Learning?
As a researcher on Computer Vision, I come across new blogs and tutorials on ML (Machine Learning) every day. However, most of them are just focussing on introducing the syntax and the terminology relavant to the field. For example - a 15 minute tutorial on Tensorflow using MNIST dataset, or a 10 minute intro to Deep Learning in Keras on Imagenet.
While people are able to copy paste and run the code in these tutorials and feel that working in ML is really not that hard, it doesn't help them at all in using ML for their own purposes. For example, they never introduce you to how you can run the same algorithm on your own dataset. Or, how do you get the dataset if you want to solve a problem. Or, which algorithms do you use - Conventional ML, or Deep Learning? How do you evaluate your models performance? How do you write your own model, as opposed to choosing a ready made architecture? All these form fundamental steps in any Machine Learning pipeline, and it is these steps that take most of our time as ML practitioners.
This tutorial breaks down the whole pipeline, and leads the reader through it step by step in an hope to empower you to actually use ML, and not just feel that it was not too hard. Needless to say, this will take much longer than 15-30 minutes. I believe a weekend would be a good enough estimate.
machine-learning  tutorial 
july 2017
Observed Failures
software/hardware/logic failures in real world systems
engineering  hardware  software  programming 
july 2017
Dip Transform for 3D Shape Reconstruction
The paper presents a novel three-dimensional shape acquisition and reconstruction method based on the well-known Archimedes equality between fluid displacement and the submerged volume. By repeatedly dipping a shape in liquid in different orientations and measuring its volume displacement, we generate the dip transform: a novel volumetric shape representation that characterizes the object’s surface. The key feature of our method is that it employs fluid displacements as the shape sensor. Unlike optical sensors, the liquid has no line-of-sight requirements, it penetrates cavities and hidden parts of the object, as well as transparent and glossy materials, thus bypassing all visibility and optical limitations of conventional scanning devices. Our new scanning approach is implemented using a dipping robot arm and a bath of water, via which it measures the water elevation. We show results of reconstructing complex 3D shapes and evaluate the quality of the reconstruction with respect to the number of dips.
july 2017
Elephant in Cairo - Wikipedia
An elephant in Cairo is a term used in computer programming to describe a piece of data inserted at the end of a search space, which matches the search criteria, in order to make sure the search algorithm terminates; it is a humorous example of a sentinel value. The term derives from a humorous essay circulated on the Internet and published in Byte magazine in September 1989 that described how various professions would go about hunting elephants.
programming  tricks 
july 2017
Lead Bullets | TechCrunch
The issue with their ideas was that we weren’t facing a market problem. The customers were buying; they just weren’t buying our product. This was not a time to pivot. So I said the same thing to every one of them: “There are no silver bullets for this, only lead bullets.” They did not want to hear that, but it made things clear: we had to build a better product. There was no other way out. No window, no hole, no escape hatch, no backdoor. We had to go through the front door and deal with the big, ugly guy blocking it. Lead bullets.
business  strategy 
july 2017
Fixing autocompletion on mixed Objective-C and Swift projects - miqu.me
debugging Xcode and sourcekit

most important information: /Applications/Xcode.app/Contents/MacOS/Xcode -ShowDVTDebugMenu YES
programming  xcode  sourcekit  debugging 
june 2017
Working with text output streams — Erica Sadun
Implement TextOutputStreamable instead of CustomStringConvertible.
swift  programming 
june 2017
Developear - Speeding Up Compile Times of Swift Projects
This will allow Whole Module Optimization compile the whole module at once while also not doing any optimization of the code.

By using this technique, I have seen gains of up to 5x.
swift  programming 
june 2017
Syntax of the Future Past – James Montgomerie’s World Wide Web Log
Failed effort to replace Objective-C message syntax with something more Java-like.
programming  objective-c  java 
june 2017
A Semismooth Newton Method for Fast, Generic Convex Programming
Due to their generality, conic optimization problems, which can represent most convex
optimization problems encountered in practice, have been the focus of much recent work,
and additionally form the basis of many convex optimization modeling frameworks. In
this paper, we introduce Newton-ADMM, a method for fast conic optimization. The
basic idea is to view the residuals of consecutive iterates generated by SCS, a state-of-theart,
iterative conic solver, as a fixed point iteration, and then use a nonsmooth Newton
method to find a fixed point. We demonstrate theoretically, by extending the theory of
semismooth operators, that Newton-ADMM converges rapidly (i.e., quadratically) to a
solution; empirically, Newton-ADMM is significantly faster than SCS, on a number of
problems. The method also has essentially no tuning parameters, generates certificates
of primal or dual infeasibility, when appropriate, and can be specialized to solve specific
convex problems.
optimization  mathematics  algorithm 
may 2017
UIDebuggingInformationOverlay - Low Level
UIDebuggingInformationOverlay is a private UIWindow subclass created by Apple, presumably to help developers and designers debug Apple’s own iOS apps.
ios  debugging 
may 2017
« earlier      
2005 3d 3d-printing 3d-scanning advice ajax algebra algorithm animation anime apl app appkit architecture art bezier blog book books brain brooke-allen business c++ cad cam camera card chart charting cisco clang classification cocoa code codes compiler computer computer-science constraints cooking css data-structures database debug debugging dell design development dhtml diet dilbert disk-salvage diy documentation download drag dvi economics editor education embedded engineering eotw essay exercise external eye feynman finance flash floating-point from-melton functional funny game game-assets game-development game-theory geometry github grammar graph graphics graphing gravity gui hack hardware hash health hiring history house howto html html5 humor icons image imast interactive internals investing ios ipad j-language java javascript job k-language katamari keyboard kitchen knowledge language laser-cutting leap learning legal lines linux lisp list lldb loc mac machine-learning macos macosx manual maple-securities maps math mathematics memory mobile monitor movie music n-body nba notebook objective-c ocr online opengl opensource optimization organization osx papers parody parsing pcmcia performance personal-manufacturing photoshop physics post-it practice programming programming-for-everyone ps2 psychology puzzle python quantitative-finance quicktime reading recipe recruiting reference research reverse-engineering review robot safety scan scheme science seam-carving security sicp simulation sleep smalltalk software solver source spline sproutcore startup statecharts statistics stickies stompbox storage strategy stringinterpolationconvertible svg swift tangle testing textbook thinking timeline-animator tin-foil-hat tool training transparent travel tutorial ui ultimaker unix usb vacation vegan venn-diagram vga video videogame visual visualization web weight-loss writing xcode

Copy this bookmark: