My two cents about software development on the web


Context Aware Programming

Just as the switch from the command line to the GUI required new UI skills and sensibilities, mobile and sensor-based programming creates new opportunities to innovate, to surprise and delight the user, or, in failing to use the new capabilities, the opportunity to create frustration and anger.  The bar has been raised. Developers who fail to embrace context-aware programming will eventually be left behind.

source: Context Aware Programming


Make each click as obvious as possible

Lukas Mathis, in his blog post quoted an interesting excerpt from his book Designed for Use: Create Usable Interfaces for Applications and the Web.

[..] even though most people are perfectly capable of picking from many choices, they may not like it.

A great user interface is not one where each goal can be reached with the smallest number of clicks possible, or where the user has to pick from only a small number of choices at each step, but one where each individual click is as obvious as possible. If your users have a clear goal in mind, each level of the hierarchy should have one option that clearly satisfies their goal—or at least gets them closer to that goal. As long as users feel that they are getting closer to their goal with each step, they don’t mind drilling down into a deep hierarchy.

source: Satisficing


My resolutions for 2013

Planning my future goals is always hard for me. I need to avoid the over-commitment. Anyway this is my todo-list for this year.

  • Learning and improvement
    • Android (development and deployment)
    • PhoneGap (development and deployment with PhoneGap Build)
    • REST Services (design and implementation)
    • Continuous Integration/Deployment (practicing)
    • Responsive Design (improvement)
    • Cloud Deployment (mainly on Platform as a Service)
    • Git (howto)
    • Ant and Maven (build and configuration management)
    • Product Management (howto and practicing)
  • Community involment
    • Coworking (participating)
    • Open source (involving in a project)
    • Cohousing (practicing)
  • Personal life
    • Drumming (practicing djembe and balafon mainly)
    • Getting back with outdoor activities (running and skating)

The work is in progress …



Stop designing for fixed viewports

Media queries should be design-based, not device-based.

Designers were crafting their websites for the iPhone, and the iPhone alone, setting media queries at the familiar widths of 320px or 480px, leaving all other devices to make do with what they got.

We would all stop this madness and build our media queries on a per-design basis, with no relation to any device.

The mistake that these designers have made in their approach to responsive design is device-based media queries instead of design-based media queries. They failed to remember that breakpoints are exactly that: points at which the design breaks and falls apart. When two columns become unreasonably small and the content becomes too cramped, the design breaks and you know there should be a media query there to fix it. Don’t let device dimensions dictate the flow of the design.

source: Stop designing for fixed viewports! | Opinion | .net magazine


Linkflood #5-2011

  • AppHarbor – Azure Done Right AKA Heroku for .NET – Instant deployments and instant scaling. Stupid simple API. This is Heroku. It doesn’t sound like much, but when you think of how fast you can go from an idea to having someone else tinker with it, you can start to see its power. In literally seconds you can be looking at your rails application deployed and online. Then when you are ready to scale, you can do that. This is power. I’m not sure when I first heard about AppHarbor as a possible .NET version of Heroku. AppHarbor is awesome! It still has a ways to go to be considered Heroku for .NET, but it already has a growing community.
  • My 25 Favorite Programming Quotes that are Funny too – Recently I was looking for some good programming quotes for one of my presentation. I was amazed to find that there are some good programming quotes that are really funny and need some brains to figure out the fun part. Here are 25 of them I like in random order.
  • Inversion of Control : Practical usage of Interface, Delegate or Events – Inversion of control is an architectural design principle which modifies the general flow of control of a program. Inversion of control is a special circumstance where you will invert the predefined control flow to some arbitrary call defined way down the stream by the user who actually using the component. In this post, I will show you how you can implement inversion of control in your code and also approaches which help you while implementing your own class.
  • openredis – Redis Hosting Service – Redis is awesome. While it’s a perfect fit for many applications, just a few of them are using it. We want to help startups and small to medium sized businesses easily get up and running with Redis, without the hassle of setting up backups, monitoring and replication.
  • RazorEngine – A templating engine built upon Microsoft’s Razor parsing technology. The RazorEngine allows you to use Razor syntax to build robust templates. Currently we have integrated the vanilla Html + Code support, but we hope to support other markup languages in future.
  • The 7 deadly sins of software development – Being a good developer takes a lifetime of training and practice. But without proper discipline, even the best programmers risk falling prey to their worse natures. Some bad habits are so insidious that they crop up again and again, even among the most experienced developers. I speak of nothing less than the seven deadly sins of software development.
  • ILSpy – is the open-source .NET assembly browser and decompiler. Development started after Red Gate announced that the free version of .NET Reflector would cease to exist by end of February 2011.

User Interface, User Experience

  • Beginner’s Guide to Landing Pages on KISSmetrics – A well-designed landing page can greatly increase conversions for your PPC or email marketing campaigns. Rather than directing visitors from those sources to your general website (where they may have a hard time finding what they’re looking for), you can direct them to a specially-designed landing page that steers them in exactly the direction you want them to take.
  • Landing Page Best Practices: the definitive guide (with infographics) – We (at Visual Website Optimizer) are starting a series on the blog where the experts in A/B testing, landing pages, conversion rate optimization will share everything they know about how to increase sales and conversions online.
  • Responsive Web Design: What It Is and How To Use It – Responsive Web design is the approach that suggests that design and development should respond to the user’s behavior and environment based on screen size, platform and orientation. The practice consists of a mix of flexible grids and layouts, images and an intelligent use of CSS media queries. As the user switches from their laptop to iPad, the website should automatically switch to accommodate for resolution, image size and scripting abilities. In other words, the website should have the technology to automatically respond to the user’s preferences. This would eliminate the need for a different design and development phase for each new gadget on the market.
  • Fight Div-itis and Class-itis With the 960 Grid System – The 960 Grid System encourages the addition of <div> elements and class attributes, especially on complicated pages. Is this really an improvement over nested tables? Creating cleaner code means going beyond the framework and thinking about what it really represents.
  • 100+ free HTML email templates – For too long HTML email has been the ugly step-child of the web. It’s time for a change, so we teamed up with some seriously talented designers to bring their skills to the world of HTML email. Every template has been thoroughly tested in more than 20 of the most popular email clients like Outlook 2010, Gmail, Lotus Notes, Apple Mail, the iPhone, and more. They’re ready to roll and are completely free.


  • Creating a NuGet Package in 7 easy steps – Plus using NuGet to integrate ASP.NET MVC 3 into existing Web Forms applications – Last month I (Scott Hanselman) wrote a post called Integrating ASP.NET MVC 3 into existing upgraded ASP.NET 4 Web Forms applications where I showed a very manual and very painful way to add ASP.NET MVC support to an existing ASP.NET WebForms application. You’d then have a lovely hybrid that is both MVC and WebForms.
  • Integrating jQuery DataTables plugin into ASP.NET MVC applications – JQuery DataTables plugin is an excellent client-side component that can be used to create rich-functional tables in the web browser. This plugin adds lot of functionalities to the plain HTML tables that are placed in web pages such as filtering, paging, sorting, changing page length etc. By default it works with client side rows that are rendered in table (in <tbody> </tbody> section in the HTML code of the table) but it might be configured to use data from the server via Ajax calls. However, to integrate DataTables with server-side code developer must know protocols and parameters that are sent by DataTables and how to use them on server side. This article shows how JQuery DataTables plugin can be integrated into ASP.NET MVC application. It contains step by step examples that show how DataTables plugin interacts with server-side components.
  • Synchronicity – A Folder Synchronizing Application – I needed an app that would sync up folders that didn’t involve anything more tedious than just copying the files somewhere. Yes, I’m aware of programs like Microsoft Sync Toy and a third-party product called Sure-Sync, but being a programmer, I figured this would be a fairly straightforward application to write myself. After all, it doesn’t have to be battle-tested for public consumption, and I wanted a certain degree of control over precisely how it works. Besides, it’s more fun to write code than it is to install someone else’s. This article (and the code it describes) is the result.
  • SharpPcap – A Packet Capture Framework for .NET – Packet capturing (or packet sniffing) is the process of collecting all packets of data that pass through a given network interface. Capturing network packets in our applications is a powerful capability which lets us write network monitoring, packet analyzers and security tools. The libpcap library for UNIX based systems and WinPcap for Windows are the most widely used packet capture drivers that provide API for low-level network monitoring. Among the applications that use libpcap/WinPcap as its packet capture subsystem are the famous tcpdump and Wireshark. In this article, we will introduce the SharpPcap .NET assembly (library) for interfacing with libpcap or winpcap from your .NET application and will give you a detailed programming tutorial on how to use it.