3 years Ago

The Road to Quino 2.0: Maintaining architecture with NDepend (part II)

Published by Marco on in Quino

In the previous article, I explained how we were using NDepend to clean up dependencies and the architecture of our Quino framework. You have to start somewhere, so I started with the two base assemblies: Quino and Encodo. Encodo only has dependencies on standard .NET assemblies, so let’s start with that one.

The first step in cleaning up the Encodo assembly is to remove dependencies on the Tools namespace. There seems to be some confusion as to what belongs in the Core namespace versus what... [More]

The Road to Quino 2.0: Maintaining architecture with NDepend (part I)

Published by Marco on in Quino

Full disclosure

A while back—this last spring, I believe—I downloaded NDepend to analyze code dependencies. The trial license is fourteen days; needless to say, I got only one afternoon in before I was distracted by other duties. That was enough, however, to convince me that it was worth the $375 to continue to clean up Quino with NDepend.

I decided to wait until I had more time before opening my wallet. In the meantime, however, Patrick Smacchia of NDepend approached me with a free... [More]

v1.13.0: Schema migration, remoting, services and web apps

Published by Marco on in Quino

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.


Data & Schema

  • Applications can now choose a base class for generated ORM objects. (QNO-3107)
  • Data driver: made various bug fixes and improvements. (QNO-4538, QNO-4554, QNO-4551)
  • Improved schema migration for fields and constraint-violation messages under SQL Server. (QNO-4490, QNO-4111, QNO-4582)
  • Improved... [More]

Schema migration in Quino 1.13

Published by Marco on in Quino

Quino is a metadata framework for .NET. It provides a means of defining an application-domain model in the form of metadata objects. Quino also provides many components and support libraries that work with that metadata to automate many services and functions. A few examples are an ORM, schema migration, automatically generated user interfaces and reporting tools.

The schema-migration tool

The component we’re going to discuss is the automated schema-migration for databases. A question that... [More]

Optimizing compilation and execution for dynamic languages

Published by Marco on in Web: HTML/CSS/JS

The long and very technical article Introducing the WebKit FTL JIT provides a fascinating and in-depth look at how a modern execution engine optimizes code for a highly dynamic language like JavaScript.

To make a long story short: the compiler(s) and execution engine optimize by profiling and analyzing code and lowering it to runtimes of ever decreasing abstraction to run as the least dynamic version possible.

A brief history lesson

What does it mean to “lower” code? A programming language... [More]

Configure IIS for passing static-file requests to ASP.Net/MVC

Published by Marc on in .NET/C#

At Encodo we had several ASP.Net MVC projects what needed to serve some files with a custom MVC Controller/Action. The general problem with this is that IIS tries hard to serve simple files like PDF’s, pictures etc. with its static-file handler which is generally fine but not for files or lets say file-content served by our own action.

The goal is to switch off the static-file handling of IIS for some paths. One of the current projects came up with the following requirements so I did some... [More]

iTunes: another tale of woe in UX

Published by Marco on in UX & Design

I know that pointing out errors in iTunes is a bit passé but Apple keeps releasing new versions of this thing without addressing the fundamental problems that it has as a synchronization client.

The software has to synchronize with hardware from only one manufacturer—the same one that makes iTunes. I’ll leave off complaints about the horrific, very old and utterly non-scaling UI and just regale you with a tale of a recent interaction in which I restored my phone from a backup. In that sense,... [More]

More reinforcements!

Published by Marco on in Encodo News (en)

We are happy to welcome Fabrizio Niedda to our team! We are still searching for even more Encodo team members; see our jobs page for more information (available only in German).

Weitere Verstärkung!

Published by Marco on in Encodo News (de)

Wir freuen uns darüber, Fabrizio Niedda in unserem Team begrüssen zu dürfen! Wir sind jedoch weiterhin auf der Suche nach Verstärkung; mehr Informationen dazu gibt es hier.

An introduction to PowerShell

Published by Marco on in Tips and Tricks

On Wednesday, August 27th, Tymon gave the rest of Encodo[1] a great introduction to PowerShell. I’ve attached the presentation but a lot of the content was in demonstrations on the command-line.

  1. Download the presentation
  2. Unzip to a local folder
  3. Open index.html in a modern web browser (Chrome/Opera/Firefox work the best; IE has some rendering issues)

We learned a few very interesting things:

  • PowerShell is pre-installed on every modern Windows computer
  • You can PowerShell to other machines... [More]

ASP.Net MVC Areas

Published by Marc on in .NET/C#

After some initial skepticism regarding Areas, I now use them more and more when building new Web-Applications using ASP.Net MVC. Therefore, I decided to cover some of my thoughts and experiences in a blog post so others may get some inspiration out of it.

Before we start, here’s a link to a general introduction to the area feature of MVC. Check out this article if you are not yet familiar with Areas.

Furthermore, this topic is based on MVC 5 and C# 4 but may also apply to older versions too... [More]

Is Encodo a .NET/C# company?

Published by Marco on in Technology

Encodo has never been about maintaining or establishing a monoculture in either operating system, programming language or IDE. Pragmatism drives our technology and environment choices.[1]

Choosing technology

Each project we work on has different requirements and we choose the tools and technologies that fit best. A good fit involves considering:

  • What exists in the project already?
  • How much work needs to be done?
  • What future directions could the project take?
  • How maintainable is the... [More]

Should you return null or an empty list?

Published by Marco on in .NET/C#

I’ve seen a bunch of articles addressing this topic of late, so I’ve decided to weigh in.

The reason we frown on returning null from a method that returns a list or sequence is that we want to be able to freely use these sequences or lists with in a functional manner.

It seems to me that the proponents of “no nulls” are generally those who have a functional language at their disposal and the antagonists do not. In functional languages, we almost always return sequences instead of lists or... [More]

Optimizing data access for high-latency networks: part IV

Published by Marco on in Quino

 In the previous three articles, we sped up the opening of the calendar in Encodo’s time-tracking product Punchclock. We showed how we reduced the number of queries from one very slow query per person to a single very fast query for all people at once.

Because we’re talking about latency in these articles, we’d also like to clear away a few other queries that aren’t related to time entries but are still slowing things down.

Lazy-loading unneeded values

In particular, the queries that “Load... [More]

v1.12.0: .Improvements to data-provider statistics and Windows 8.1 fixes

Published by Marco on in Quino

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.


 Punchclock About Box Punchclock Splash Screen