Papers we love: Black magic: het aantal elementen in een verzameling bepaald door de meest significante bits die sequentieel nul zijn

Deze keer wil ik even stilstaan bij een probleem wat in eerste instantie heel triviaal lijkt, maar wat op grote schaal voor enorme uitdagingen kan zorgen. Dit probleem is het tellen van het aantal elementen in een verzameling, waarbij de verzameling technisch een zogenaamde multiset is. Concreet: gegeven een verzameling {2, 3, 2, 2, 3, 4, 5} zou je, […]

Lees meer >>

Papers we love: Crash-Only Software

Instabiele software is iets wat we allemaal kennen. Het blijft hangen, is ineens onverklaarbaar langzaam, geeft timouts of crasht. Het is op zijn best irritant, maar in het slechtste geval kost dit zelfs mensenlevens. Gelukkig is het meestal niet zo desastreus en is het resultaat vooral dataverlies of data-corruptie. Onze software schrijven we dan ook […]

Lees meer >>

Papers we love: Debugging for Reactive Programming

Een van de onderwerpen waar Sogyo steeds meer om bekend begint te raken is Reactive Programming. Dit doen we meestal (altijd?) met de libraries van ReactiveX, welke een generieke en open source API aanbiedt voor een groot aantal talen. Mocht je nu denken: huh? Waar heb je het over, verdiep je dan eens in hun […]

Lees meer >>

Papers we love: Regular Expression Search Algorithm

Regular expressions zijn gaaf. Het zijn op het eerste gezicht obscure tekenreeksen die worden gebruikt om een patroon te definiëren wat gematcht kan worden aan een reeks tekst. Nu denk je misschien: het zoeken in tekst is toch niet zo’n ingewikkeld probleem? Helaas, dat is het wel. Probeer het eens uit te redeneren: je hebt een […]

Lees meer >>

Papers we love: Collaborative editing: hoe werkt dat eigenlijk?

Google drive, Microsoft office 365. Iedereen kent minimaal een van die producten. Maar hoe werken ze? Hoe kan er zo gemakkelijk met meerdere mensen aan een document gewerkt worden? Dat is precies wat ik me dus afvroeg. Na wat googlen kwam ik uit bij een artikel op Wikipedia, over Operational Transformation. Die pagina linkte weer naar een onderliggende paper […]

Lees meer >>

Papers we love: Design patterns: hoe kunnen we een gemaakte keuze evalueren?

Design patterns. Iedereen kent het boek en heeft een aantal (favoriete) patterns in zijn of haar  gereedschapskist om toe te passen wanneer nodig. Maar waar wordt de keuze voor een specifiek pattern eigenlijk op gebaseerd? Niet alleen door Gamma et al, maar in bijna iedere verzameling van patterns wordt een stukje context gegeven die kan helpen een keuze te maken. De context is veelal […]

Lees meer >>

Papers we love: Retroactive datastructures

Deze keer wil ik het onderwerp ‘tijd’ aankaarten. Tijd in combinatie met datastructuren om precies te zijn. Het uitgangspunt van de paper van deze maand is dat er verschillende scenario’s zijn waarin niet alleen de huidige status van een datamodel, belangrijk is, maar ook de manier waarop dit tot stand gekomen is. Hierdoor zou het […]

Lees meer >>

Papers we love: Automatisch repareren van bugs, hoe doe je dat?

Bugs. Out-of-bounds errors, integer overflows, divide by zero errors. Wie kent ze niet? Het zijn allemaal bugs met eenzelfde achtergrond en hebben gemeen dat ze nogal eens optreden, zeker in de meer low-level talen. Wat nu als je dit soort fouten automatisch zou kunnen herstellen? Dat is precies de vraag die de auteurs van de […]

Lees meer >>

Papers we love: In Search of an Understandable Consensus Algorithm

Momenteel zijn gedistribueerde systemen een hot topic. We zien steeds vaker dat dezelfde functionaliteit van applicaties over meerdere machines wordt opgedeeld. Het buzzword “horizontal schaling” gaat hier bijvoorbeeld over. Dit schalen over meerdere machines is relatief eenvoudig wanneer je niet over (gedeelde) state na hoeft te denken. Wanneer een applicatie, laten we hem foo noemen, alleen maar […]

Lees meer >>