Technology

28 articles

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 solution/are the technologies?
  • How appropriate are various technologies?
  • What do our developers know how to do best?
  • What do the developers who will maintain the project know best? What are they capable of?
  • Is there framework code available that would help?

History: Delphi and Java

When we started out in 2005, we’d also spent years writing frameworks and highly generic software. This kind of software is not really a product per se, but more of a highly configurable programmable “engine”, in which other... [More]

OpenBSD takes on OpenSSL

Published by Marco on in Technology

 Much of the Internet has been affected by the Heartbleed (Wikipedia) vulnerability in the widely used OpenSSL server-side software. The bug effectively allows anyone to collect random data from the memory of machines running the affected software, which was about 60% of encrypted sites worldwide. A massive cleanup effort ensued, but the vulnerability has been in the software for two years, so there’s no telling how much information was stolen in the interim.

The OpenSSL software is used not only to encrypt HTTPS connections to web servers but also to generate the certificates that undergird those connections as well as many PKIs. Since data could have been stolen over a period of two years, it should be assumed that certificates, usernames and passwords have been stolen as well. Pessimism is the only way to be sure.[1]

In fact, any data that was loaded into memory on a server running a pre-Heartbleed version of the OpenSSL software is potentially compromised.

How to respond

We should all... [More]

The Internet of Things

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


The article Smart TVs, smart fridges, smart washing machines? Disaster waiting to happen by Peter Bright (Ars Technica) discusses the potential downsides to having a smart home[1]: namely our inability to create smart software for our mediocre hardware. And once that software is written and spread throughout dozens of devices in your home, it will function poorly and quickly be taken over by hackers because “[h]ardware companies are generally bad at writing software—and bad at updating it.”

And, should hackers fail to crack your stove’s firmware immediately, for the year or two where the software works as designed, it will, in all likelihood, “[…] be funneling sweet, sweet, consumer analytics back to the mothership as fast as it can”, as one commentator on that article put it.

Manufacturers aren’t in business to make you happy

Making you happy isn’t even incidental to their business model now that monopolies have ensured that there is... [More]

Setting up the Lenovo T440p Laptop

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


I recently got a new laptop and ran into a few issues while setting it up for work. There’s a tl;dr at the end for the impatient.

Lenovo has finally spruced up their lineup of laptops with a series that features:

  • An actually usable and large touchpad
  • A decent and relatively sensibly laid-out keyboard
  • Very long battery life (between 6-9 hours, depending on use)
  • Low-power Haswell processor
  • 14-inch full-HD (1920x1080)
  • Dual graphics cards
  • Relatively light at 2.1kg
  • Relatively small/thin form-factor
  • Solid-feeling, functional design w/latchless lid
  • Almost no stickers

I recently got one of these. Let’s get it set up so that we can work.

Pop in the old SSD

Instead of setting up the hard drive that I ordered with the laptop, I’m going to transplant the SSD I have in my current laptop to the new machine. Though this maneuver no longer guarantees anguish as it would have in the old days, we’ll see below... [More]

Apple Developer Videos

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


It’s well-known that Apple runs a walled garden. Apple makes its developers pay a yearly fee to get access to that garden. In fairness, though, they do provide some seriously nice-looking APIs for their iOS and OS X platforms. They’ve been doing this for years, as listed in the post iOS 7 only is the only sane thing to do by Tal Bereznitskey. It argues that the new stuff in iOS 7 is compelling enough to make developers consider dropping support for all older operating systems. And this for pragmatic reasons, such as having far less of your own code to support and correspondingly making the product cost less to support. It’s best to check your actual target market, but Apple users tend to upgrade very quickly and reliably, so an iOS 7-only strategy is a good option.

Among the improvements that Apple has brought in the recent past are blocks (lambdas), GCD (asynchronous execution management) and ARC (mostly automated... [More]

How to fool people into giving up their email address

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


On Codecademy, you can learn to program in various languages. It starts off very slowly and is targeted at non-technical users. That’s their claim anyway—the material in the courses I looked at ramps up pretty quickly.

Anyway, the interesting thing I saw was in their introductory test. It struck me as a subtle way to get you to enter your email address. I’d just recently discussed this on a project I’m working on: how can we make it fun for the user to enter personal information? The goal is not to sell that information (not yet anyway, but who knows what the future holds), but to be able to enhance—nay, personalize—the service.

Personalizing has a bad reputation but can be very beneficial. For example, if you’re using a site for free and you’re going to see offers and advertisements anyway, isn’t it better to enter a bit of data that will increase the likelihood that offers and ads are... [More]

How to drag rewind and fast-forward into the 21st century

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


The most difficult technical problems to solve are the ones that you don’t notice. The workflow and tools to which you’ve become accustomed are terrible, but they’re so ingrained that you might actually find yourself unthinkingly defending them because that’s just how it has to be.

Below I take a shot at designing a better user experience for a common feature: rewinding or fast-forwarding a video recorded on a DVR.

Why is your DVR’s fast-forwarding feature stuck in the past?

Fast-forwarding and rewinding digital movies is one of those things.

Many people have DVRs now—provided, often enough, by the cable company itself—but they often function as if customers were still juggling tapes instead of switching between files on a hard drive. While there is no technical hurdle to making this process better, I acknowledge that there are probably very important albeit tediously prosaic advertising... [More]

Including PDF in web sites

Published by urs on in Technology

At first glance, this seems to be a pretty easy topic since PDFs are everywhere and can be found in almost every bigger website. But in most cases, PDF files are just linked for download and not embedded directly in the site. If the user clicks such a link, the browser decides what to do with the file: Just download to the file system or display a preview in a new tab or window. This also works pretty well for mobile devices since there are PDF readers for almost every platform.

But what if we want more than this, like embedding the document in the website and jumping to a specific page? The first part of this is very easy: We can use an iframe and set the location to the URL of the PDF.

<iframe src="document.pdf"></iframe>

This works fine on a desktop browser like chrome as it fits the width of the PDF to the width of the iframe:

 iframe in chrome

But when we open the same page in mobile safari, it looks like following:

 Iframe in mobile safari

The PDF is not scaled and much worse: You can not even drag the... [More]

Tick, tock (death of a ticket salesman)

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


The following story tells tale of a day spent with the ongoing user-experience (UX) catastrophe that is the interface of the SBB/ZVV automated ticket machines.

While it’s certainly possible that our experiences are unique and that others can easily purchase their perhaps simpler tickets, we have found that veering ever-so-slightly from the beaten path leads into some very deep and dark weeds.

Even were we to accept that the fault for the confusion engendered by the UI lay entirely with us, we can hardly be blamed for the mysterious time-delays and crashes.

In short, SBB/ZVV: give Encodo a call. We can help you fix this.

Prologue

When I renewed my monthly train ticket a month ago, the lady behind the counter told me that I could have gotten it from a machine instead.

She handed me a little pamphlet that explained how to use their ticket machines.

I gave it back. In hindsight, this may have been... [More]

Merge conflicts in source control

Published by Marco on in Technology

This article originally appeared on earthli News and has been cross-posted here.


I was recently asked a question about merge conflicts in source-control systems.

“[…] there keep being issues of files being over written, changes backed out etc. from people coding in the same file from different teams.”

My response was as follows:

tl;dr: The way to prevent this is to keep people who have no idea what they’re doing from merging files.

Extended version

Let’s talk about bad merges happening accidentally. Any source-control worth its salt will support at least some form of automatic merging.

An automatic merge is generally not a problem because the system will not automatically merge when there are conflicts (i.e. simultaneous edits of the same lines, or edits that are “close” to one another in the base file).

An automatic merge can, however, introduce semantic issues.

For example if both sides declared a method with the same name, but in different places in the same file, an... [More]