Categories
Networking Security Software development

Manage your own PKI with XCA

Protecting connections with TLS requires the proper certificate/private key pairs, that need to be issued by a trusted Certificate Authority. You can buy certificates form several public CAs, or obtain free ones form entities like Let’s Encrypt. Sometimes you may need your own private CA and certificates for systems that do not need to be […]

Categories
Delphi

Why a “case of” statement in Delphi is a dangerous idea

Over and over, people ask the case .. of statement to be expanded to allow strings, i.e. Looks nice, doesn’t it? Sure, but the devil is in the details. Strings are complex data types, and comparing strings is not a straightforward tasks. If you use just a single, simple encoding, and a simple language like […]

Categories
Delphi

Mom, a modal loop ate my service messages!

A colleague of mine was using the “modernized” service implementation I wrote about some time ago. His services needs to be notified when a user logs on/off or locks/unlocks the machine. Everything was fine for a while, until he started to complain it worked for a while, but then, “randomly”, notifications weren’t triggered any longer. Debugging, he […]

Categories
Delphi

Modernize you Delphi Windows application: use Windows 2000 (and later!) services.

No, the title of this blog post is not a mistake. Delphi, including XE7, only implements services using NT APIs obsoleted since Windows 2000. Windows NT was EOLed in 2004, 2000 in 2010, and XP last year, yet Delphi still doesn’t take advantage of the new APIs. What are the advantages? Well, using the “extended” […]

Categories
Networking Software development

Netgear WNCE3001 DHCP issues, and why luser-oriented interfaces are a mistake

In the past days, I bought a Netgear WNCE3001 wireless adapter to connect my pay TV decoder to the Internet. To configure it, you need to connect it to a PC Ethernet port, and use its configuration wizard to perform the initial configuration – which is just configuring which wireless LAN you want to connect to, and […]

Categories
Delphi

Local elevation points in Windows and Delphi

Since the introduction of Windows Vista and the new security model for applications, application running under User Account Control (UAC) should adopt a “least privilege” model, running as an “unprivileged” user almost all the time, and requesting higher privileges only when needed, even if the user has those privileges. Requesting higher privileges is called “elevation”. […]

Categories
Software development

Why you should use the App Paths registry key

Today François Piette has written about “Path issue when having installed a lot of software“: Windows is having some trouble with very long path environment variable, even in Windows 7. This is true. Although starting from Vista the environment block size is unlimited (environment variables are kept in a process environment, and each process gets a copy of […]

Categories
Software development

Why learning the sysadmin job may make you a better developer

Many developers learnt first to code on isolated machines – DOS ones if they are old enough – or within simple networks. DOS was a single process, single thread environment, almost always on isolated machines. Maybe a modem to connect to a BBS, LAN were much rarer. That meant developers had little to care about “the environment” their […]

Categories
Software development

Inno Setup library to manage Windows services

An InnoSetup 5.x library to control services. It gives access to the Service Control Manager functions to query/start/stop/install/uninstall services, and implements some higher level functions (simpleXXXX) to perform standard tasks easily. ANSI version Unicode version Zip file with both versions NB: ANSI version won’t work with the Unicode version of Inno Setup. I didn’t test […]

Categories
Delphi Software development

Why Datasnap 2010 is a toy library

To this StackOverflow question, I simply answered to forget D2010 Datasnap because IMHO it is only half-backed and lacks several needed features and is not flexible. Two people commented my answer was not helpful, and wrote Datasnap is absolutely flexible (later one comment was withdrawn). I am going to explain in details why the “new” Datasnap is not […]