apt commands fail (Connection timed out) in Debian based containers on Windows
03 February 2024
The last few years have given me several opportunities to discover the Ruby language, and its ecosystem. I am very much a .NET guy, and I had wondered for a long time what the hype was all about. Now I can see how it inspired many modern platforms (like node.js or .NET Core), but boy is the operations side of it hard! I am maintaining this very blog on GitHub Pages, which is based on Jekyll, and even a simple usage like this requires a development container. Especially as a Windows guy, although managing Ruby dependencies on Linux is a...
read moreContinuous Integration for .NET (Core)
28 January 2021
A lot of work has been made in the last few years (almost 5 now) to revamp the whole .NET Platform and lead it confidently into this new decade. Going through .NET Core, .NET is now free, open-source and multiplatform. Sign of the times, the console addicts can now take advantage of the .NET CLI while everyone can enjoy the still evolving best parts of the eco-system: the C# language and MSBuild (amongst other things). So now is a good opportunity as ever to revisit my practices of Continuous Integration for the .NET Framework as well.
read moreHow to host pgAdmin 4 on Windows Server
03 January 2021
I just set out to create a PostgreSQL database server in my home lab, that I intend to use first with Home Assistant. And just because this is my home lab, it is hosted in a Windows Server 2019 VM in Hyper-V. 😁 I then foolishly installed pgAdmin 4 on my computer with the intention to remotely manage this new server… I remember pgAdmin III as such a slick application with an installer weighing less than 15MB. 4 years later the pgAdmin 4 installer is 10 times bigger, a Flask application that runs in the browser (these are the times...
read moreContinuous Integration for Java
05 October 2020
From what I understand Gradle or even Maven are the way to go for your build in Java. They seem to rely heavily on conventions, which is good. But if you need (or want) to add to these conventions (like I do with my practices) it seems that the only 2 ways are to either build your own plugins or to execute additional Apache Ant tasks and targets inside your build. So it seems to me that the good old Apache Ant is still alive and well.
read moreContinuous Integration for PHP
28 September 2020
It has been a very long time since I have used PHP in any capacity for web development. And I am not planning doing so again any time soon (sorry). But I have had the opportunity to apply my practices on a very small, though still useful scale in PHP. From what I could gather it is indeed very possible to properly and continuously integrate PHP projects, provided you use the right tools for the job: a build tool and a dependency manager (optional but always recommended).
read moreContinuous Integration for Ruby
21 September 2020
I have had to deal with a few projects in Ruby recently and I have tried to adapt my practices to this new environment. On a personal level this means less cognitive load when I have to come back to these projects months later, even more so because Ruby is far from my area of expertise. As it happens I have had quite some trouble implementing Continuous Integration because of (seemingly) conflicting conventions. But I have tried anyway:
read moreContinuous Integration for node.js
14 September 2020
Applying the same principles to node.js is interesting because this is an entirely different world from .NET (for the best and for the worst): Javascript is interpreted: there is no compiler and no inherent notion of packaging. the platform is very fragmented: even the package manager seems to be up for grabs (stigmergy, anyone?).
read moreContinuous Integration for the .NET Framework
07 September 2020
I realize writing this post that I have been practicing .NET development (C# in particular) since 2005 (15 years!). It is natural for my Continuous Integration practices to have been heavily influenced by this platform during all this time. The advent of .NET Core will be the occasion to revisit these, and also the subject of another blog post. This post shows what those years of maturation led to on the (soon legacy) .NET Framework platform.
read moreMy take on Continuous Integration
02 September 2020
The essentials of Continuous Integration (CI) have been summarized by Martin Fowler. Following is my take on a few principles, practices and/or considerations that have served me well over the years.
read moreWhat is Continuous Integration?
30 August 2020
Everybody does Continuous Integration (CI) nowadays, right? Right? Right…
read moreInstall node.js on a Windows Azure Cloud Service (II)
10 May 2013
Last time I showed you how to modify a node.js Windows installer so that you could install it on an Azure Cloud Service as part of a startup task.
read moreInstall node.js on a Windows Azure Cloud Service
05 March 2013
node.js is supported by default on a Windows Azure WebSite. But there are cases when you might need to deploy an application on an heavier (and more expensive) Cloud Service. Such a case is when you need SSL on a custom domain, as Azure WebSites do not yet support custom certificates.
read moreBeware the Image object!
18 September 2009
One requirement on the project I am working on (.NET 2.0, Windows Forms) was to make the end-user able to load a background image to an InkPicture (which is just a special PictureBox control, with the ability to be drawn upon on a TabletPC). That did not seem very difficult at first: just create an OpenFileDialog and there you go.
read moreEncrypt configuration file in a custom managed action on x64
15 May 2009
When I install a .NET (or ASP .NET) application, I like to encrypt the sensitive parts of the configuration file like the connection strings. So I have been used to create a Custom Installer class to achieve this. There are a few tricky things to take into account, like: when your configuration is loaded by the installer, it should be able to resolve embedded dependencies (like Enterprise Library assemblies) even when they are not in the GAC. this class accepts a EXEPATH parameter that contains the path of the application which application file is to be encrypted. It should then...
read moreOracle Instant Client in Visual Studio
15 May 2009
In my previous post, I mentioned the fact that I added the Oracle Instant Client files as Content files in a Visual Studio project. I would like to write more about this here.
read moreOracle (Not So) Instant Client
15 May 2009
Developing database oriented .NET applications is quite a no brainer once you are used to your API (ADO.NET, Enterprise Library Data Application Block…) or your ORM (NHibernate…). Just pick your database vendor ADO .NET provider, which usually consists of one assembly that you distribute with your application, and that’s it. That is how it works with SQL Server (of course), but also Teradata, MySQL, PostgreSQL, SQLite… You name it, that is the way it works.
read moreHow to install Oslo with SQL Server Express Edition?
29 October 2008
As I was delving into the Visual Studio DSL Tools to design my first DSL for Salamanca, I came across this new modeling platform by Microsoft: Oslo. In fact, it is so new that the first CTP has just been released.
read moreAbout Visual Studio, SSIS and DSLs
20 February 2008
I have had the opportunity to discover Sql Server 2005 Integration Services (SSIS) lately. That was a double blow. At first, I found it highly usable, though rough on the edges: still only a very promising tool. And then I found it was the perfect example of a software factory created with the Visual Studio Domain-Specific Language Tools. It is great to see Microsoft eating its own dog food, and create a great tool with it.
read moreHowTo: Log DDL events in your Oracle database
12 February 2008
Update (30/10/2008): trigger code updated, due to a bug pointed out by Michel in the comments.
read moreSoftware that works
30 November 2007
I hate software that works. Deeply. From the bottom of my heart and soul. Let me try to explain why.
read moreGetting better
30 November 2007
I have had to spend the last few months of my life without… a life! Not that I had much of one before that, but this is not the point. We had this client we had signed a contract with in June for what we all believed to be a small project, due to be released in September. And we only managed to deliver our release last week : a web application (ASP .NET, C# 2.0, Oracle 10g) targeting IIS 6.0 on Windows Server 2003 and a desktop application (Forms, C# 2.0, Oracle 10g) on Windows XP Tablet PC Edition...
read moreMy IDE is hot
27 July 2007
I know I am a bit late to join this debate, but: I was new at my job at the time. After a few years spent in a few french companies, I was obviously not quite used to the internet as it had become since I left college, and I must admit I was as close as could be to miss the web 2.0 buzz. This blog was a longshot then. July has only 3 full days left, and I realize it looks like my last oppurtunity to post something this month… After I had this casual conversation with our...
read moreSoftware Factory vs Usine Logicielle
20 April 2007
Software Factory is a term that has been very closely related to Microsoft, ever since the company began promoting it. In this two pages advertisement (June 2004), you can read: A software factory is a product line that configures extensible development tools like Microsoft Visual Studio Team System (VSTS) with packaged content and guidance, carefully designed for building specific kinds of applications.
read moreVS2005 SP1 is suckin' up your drive
13 February 2007
Remember this old song about Windows 95? Softwares on Windows have always been demanding on hard disks, and it seems that disk capacity will never be enough. As mine is quite fixed, I am doing my best to optimize disk usage.
read moreSQL Server 2005 Compact Edition released
17 January 2007
I have been playing around with SQLite, which is quite effective and impressive. There is even an ADO .NET Provider that embeds in the same assembly the native SQLite API, so that your single dependency is a 538Ko assembly for a fully functional self-contained database. For all this, you will not get support for distributed transactions though. That seems fair, but no exception is raised when you try to enlist a SQLite connection into such a transaction (unlike the MS Access OLE DB ADO .NET Provider for instance).
read moreBack (?) To Business
03 January 2007
As a new year resolution, I have freely decided to commit myself into blogging about software development. So let me start slowly and write about source code organization.
read more