10 months Ago

Improving NUnit integration with testing harnesses

Published by marco on in Programming

 These days nobody who’s anybody in the software-development world is writing software without tests. Just writing them doesn’t help make the software better, though. You also need to be able to execute tests—reliably and quickly and repeatably.

That said, you’ll have to get yourself a test runner, which is a different tool from the compiler or the runtime. That is, just because your tests compile (satisfy all of the language rules) and could be executed doesn’t mean that you’re done writing... [More]

Capsule Movie Reviews Vol.2015.4

Published by marco on in Books & Movies

These are my notes to remember what I watched and kinda what I thought about it. I’ve recently transferred my reviews to IMDb and made the list of over 900 ratings publicly available. I’ve included the individual ratings with my notes for each movie.

Citizenfour (2014) — 8/10
This is Laura Poitras’s Academy Award-winning documentary about the events surrounding Edward Snowden’s revelations and release of the documentation that proves that the United States and its NSA has been and continues... [More]

Quino 2: Starting up an application, in detail

Published by marco on in Programming

As part of the final release process for Quino 2, we’ve upgraded 5 solutions[1] from Quino 1.13 to the latest API in order to shake out any remaining API inconsistencies or even just inelegant or clumsy calls or constructs. A lot of questions came up during these conversions, so I wrote the following blog to provide detail on the exact workings and execution order of a Quino application.

I’ve discussed the design of Quino’s configuration before, most recently in API Design: Running an Application... [More]

Apple Photos: a mixed review

Published by marco on in Technology

 A few months back, Apple replaced iPhoto with Photos.

There are some good things about it. It’s noticeably faster on my machine and, at the same time, seems to use less RAM (at least at first; see below). These are good things. However, the speed and space improvements come at the cost of a mysterious loss of functionality.

I call this lack mysterious because Apple didn’t just replace iPhoto with Photos—it claims to have merged iPhoto with Aperture, which is/was a much more powerful... [More]

IServer: converting hierarchy to composition

Published by marco on in Programming

Quino has long included support for connecting to an application server instead of connecting directly to databases or other sources. The application server uses the same model as the client and provides modeled services (application-specific) as well as CRUD for non-modeled data interactions.

We wrote the first version of the server in 2008. Since then, it’s acquired better authentication and authorization capabilities as well as routing and state-handling. We’ve always based it on the .NET HttpListener... [More]

11 months Ago

Inverse Arrogance

Published by marco on in Quotes

“America is the only country in the world where failure to promote oneself is considered arrogant.”

1 year Ago

Iterating with NDepend to remove cyclic dependencies (Part II)

Published by marco on in Programming

In the previous article, we discussed the task of Splitting up assemblies in Quino using NDepend. In this article, I’ll discuss both the high-level and low-level workflows I used with NDepend to efficiently clear up these cycles.

Please note that what follows is a description of how I have used the tool—so far—to get my very specific tasks accomplished. If you’re looking to solve other problems or want to solve the same problems more efficiently, you should take a look at the official... [More]

Splitting up assemblies in Quino using NDepend (Part I)

Published by marco on in Programming

 A lot of work has been put into Quino 2.0[1], with almost no stone left unturned. Almost every subsystem has been refactored and simplified, including but not limited to the data driver, the schema migration, generated code and metadata, model-building, security and authentication, service-application support and, of course, configuration and execution.

Two of the finishing touches before releasing 2.0 are to reorganize all of the code into a more coherent namespace structure and to reduce the... [More]

API Design: To Generic or not Generic? (Part II)

Published by marco on in Programming

 In this article, I’m going to continue the discussion started in Part I, where we laid some groundwork about the state machine that is the startup/execution/shutdown feature of Quino. As we discussed, this part of the API still suffers from “several places where generic TApplication parameters [are] cluttering the API”. In this article, we’ll take a closer look at different design approaches to this concrete example—and see how we decided whether to use generic type parameters.

Consistency... [More]

API Design: Running an Application (Part I)

Published by marco on in Programming

In this article, we’re going to discuss a bit more about the configuration library in Quino 2.0.

Other entries on this topic have been the articles about Encodo’s configuration library for Quino: part I, part II and part III.

The goal of this article is to discuss a concrete example of how we decided whether to use generic type parameters throughout the configuration part of Quino. The meat of that discussion will be in a part 2 because we’re going to have to lay some groundwork about the... [More]

Encodo Git Handbook 3.0

Published by marco on in Programming

Encodo first published a Git Handbook for employees in September 2011 and last updated it in July of 2012. Since then, we’ve continued to use Git, refining our practices and tools. Although a lot of the content is still relevant, some parts are quite outdated and the overall organization suffered through several subsequent, unpublished updates.

What did we change from the version 2.0?

  • We removed all references to the Encodo Git Shell. This shell was a custom environment based on Cygwin. It... [More]

ReSharper Unit Test Runner 9.x update

Published by marco on in Programming

Way back in February, I wrote about my experiences with ReSharper 9 when it first came out. The following article provides an update, this time with version 9.2, released just last week.

tl;dr: I’m back to ReSharper 8.2.3 and am a bit worried about the state of the 9.x series of ReSharper. Ordinarily, JetBrains has eliminated performance, stability and functional issues by the first minor version-update (9.1), to say nothing of the second (9.2).

Test Runner

In the previous article, my main... [More]

Invisible Privilege

Published by marco on in Quotes

“It’s easy to confuse what is with what ought to be, especially when what is has turned out to your favor.”
Game of Thrones S05E10 by Tyrion Lannister
“Born on third; thinks he hit a triple.”
Bushleaguer by Pearl Jam

Defensive Economics

Published by marco on in Quotes

“The purpose of studying economics is not to acquire a set of ready-made answers to economic questions, but to learn how to avoid being deceived by economists.”

How Encodo sets up new workstations

Published by marco on in Tips & Tricks

     At Encodo, we’ve recently set up a few new workstations with Windows 8.1 and wanted to share the process we use, in case it might come in handy for others.

Windows can take a long time to install, as can Microsoft Office and, most especially, Visual Studio with all of its service packs. If we installed everything manually every time we needed a new machine, we’d lose a day each time.

To solve this problem, we decided to define the Encodo Windows Base Image, which includes all of the standard... [More]

v2.0-beta2: Code generation, IOC and configuration

Published by marco on in Programming

The summary below describes major new features, items of note and breaking changes. The full list of issues is also available for those with access to the Encodo issue tracker.

Highlights

In beta1, we read about changes to configuration, the data driver architecture, DDL commands, and security and access control in web applications.

In beta-2, we made the following additional improvements:

  • Introduced a new generated-code version that avoids all global references and provides a... [More]

We are watching and we are Legion

Published by marco on in Quotes

“The threat is no longer Big Brother, but instead thousands of Little Brothers.”

The main advantage of a type-safe language

Published by marco on in Quotes

“A type system is the most cost-effective unit test you’ll ever have.”
Peter Hallam

On the inadequacy of language

Published by marco on in Quotes

“He knows that there are in the soul tints more bewildering, more numberless, and more nameless than the colours of an autumn forest… Yet he seriously believes that these things can every one of them, in all their tones and semitones, in all their blends and unions, be accurately represented by an arbitrary system of grunts and squeals. He believes that an ordinary civilized stockbroker can really produce out of his own inside noises which denote all the mysteries of memory and all the agonies... [More]”
Words by G.K. Chesterton (The Language Log)

YouTube UX Suggestions 2015

Published by marco on in Design

I harshed on the YouTube UX in a recent article about GrooveShark. I figured I would take a few screenshots and explain exactly what I am trying to do with YouTube and why it feels so awkward.

Use Case

The user wants to watch vides in a list that he has not yet watched.

 'Mark as unwatched' would be nice

It is not immediately obvious how or even if the user can mark a video as “unwatched” so that the little sash is no longer shown across the video in a list. As it stands, the sash is pretty much useless because the video... [More]

Grooveshark: A lesson in why we can’t have nice things

Published by marco on in Finance & Economy

Grooveshark is no more.

Why should we lament this? They were, after all, a company that delivered music without heeding copyrights and without recompensing the artists that wrote the music. Once you read more about their business model, one could only say that they operated in a gray area if one squinted really hard. Once you learned how they delivered what they delivered, you were amazed that they lasted as long as they did.

But let’s take a step back and examine what else they provided and... [More]

Encodo’s configuration library for Quino: part III

Published by marco on in Programming

 This discussion about configuration spans three articles:

  1. part I discusses the history of the configuration system in Quino as well as a handful of principles we kept in mind while designing the new system
  2. part II discusses the basic architectural changes and compares an example from the old configuration system to the new.
  3. part III takes a look at configuring the “execution order”—the actions to execute during application startup and shutdown

Introduction

Registering with an IOC is all... [More]

Encodo’s configuration library for Quino: part II

Published by marco on in Programming

In this article, we’ll continue the discussion about configuration started in part I. We wrapped up that part with the following principles to keep in mind while designing the new system.

  • Consistency
  • Opt-in configuration
  • Inversion of Control
  • Configuration vs. Execution
  • Common Usage

Borrowing from ASP.NET vNext

Quino’s configuration inconsistencies and issues have been well-known for several versions—and years—but the opportunity to rewrite it comes only now with a major-version break.
... [More]

Books read in 2014

Published by marco on in Books & Movies

The Name of the Rose (1983/en)

by Umberto Eco

This book is about a series of murders in an abbey in 12th-century Italy. A battle rages between opposed forces within the church, with some siding with the Pope and others not. The schism approaches, inquisitional troops roam the land. A very well-educated and modern monk, William of Baskerville, arrives at the abbey with his novice Melk in tow, to whom he is imparting not only wisdom but the kind of inquisitive mind that will be capable of... [More]

Austerity: The History of a Dangerous Idea by Mark Blyth (read in 2015)

Published by marco on in Books & Movies

Disclaimer: these are notes I took while reading this book. They include citations I found interesting or enlightening or particularly well-written. In some cases, I’ve pointed out which of these applies to which citation; in others, I have not. Any benefit you gain from reading these notes is purely incidental to the purpose they serve of reminding me what I once read. Please see Wikipedia for a summary if I’ve failed to provide one sufficient for your purposes. If my notes serve to trigger an... [More]

The Handmaid’s Tale by Margaret Atwood (read in 2015)

Published by marco on in Books & Movies

Disclaimer: these are notes I took while reading this book. They include citations I found interesting or enlightening or particularly well-written. In some cases, I’ve pointed out which of these applies to which citation; in others, I have not. Any benefit you gain from reading these notes is purely incidental to the purpose they serve of reminding me what I once read. Please see Wikipedia for a summary if I’ve failed to provide one sufficient for your purposes. If my notes serve to trigger an... [More]

One Flew Over the Cuckoo’s Nest by Ken Kesey (read in 2015)

Published by marco on in Books & Movies

Disclaimer: these are notes I took while reading this book. They include citations I found interesting or enlightening or particularly well-written. In some cases, I’ve pointed out which of these applies to which citation; in others, I have not. Any benefit you gain from reading these notes is purely incidental to the purpose they serve of reminding me what I once read. Please see Wikipedia for a summary if I’ve failed to provide one sufficient for your purposes. If my notes serve to trigger an... [More]

2 years Ago

Encodo’s configuration library for Quino: part I

Published by marco on in Programming

In this article, I’ll continue the discussion about configuration improvements mentioned in the release notes for Quino 2.0-beta1. With beta2 development underway, I thought I’d share some more of the thought process behind the forthcoming changes.

Software Libraries

what sort of patterns integrate and customize the functionality of libraries in an application?

An application comprises multiple tasks, only some of which are part of that application’s actual domain. For those parts not in the... [More]

Capsule Movie Reviews Vol.2015.3

Published by marco on in Books & Movies

Scanners (1981) — 6/10
This is a David Cronenberg movie about very special people who can control other people’s minds with their own. The movie is very much of its time—it is basically an action-adventure story of conflicting mind-control factions. The pacing is quite slow by today’s standards, but the story is pretty interesting—even if the parts involving computers are laughable. Also, about a quarter of the movie is taken up with people squinting and sweating at each other, trying to... [More]

XX beats XY

Published by marco on in Quotes

“Women, my friend, are the new men. They get things done. Our female colleagues are sane and smart, they stick together and they smell a helluva lot better than we do.”
Senator Gil John Biggs (Alpha House S02E09: Will There be Water)

Alpha House is a TV show on Amazon Prime about four Republican U.S. Senators living together in a house in Washington D.C. John Goodman is just fantastic as Gil John Biggs. Definitely worth a watch: it might even be better than Veep.