The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Development’ Category

Im memoriam: Gwan Tan, friend, Delphi, Firebird, EKON and Delphi-Tage supporter

Posted by jpluimers on 2016/07/11

Overlijdensbericht Swie Gwan Tan; Eindhovens Dagblad; 20160711

Overlijdensbericht Swie Gwan Tan Eindhovens Dagblad; 20160711

Last friday, my good friend Swie Gwan Tan suddenly passed away. Like most good friends, we didn’t see each other often enough, but when we did it always was like we had last seen each other the day before.

We first met ages ago at early BorCon and EKON conferences: I remember them: Gwan, a little chine guy and a really really tall guy (Edwin) on many conferences. It didn’t take long before we chatted and became friends. It must have been the mid 199os, not even sure which year.

Was it the way he was a people person and both Edwin and me very technical? Or he deep into the database side of things and Edwin/me on the Delphi (and later .NET) side? Or were it the long (usually nights) of discussing all sorts of topics (way beyond software development) with some moderate alcohol intake?

I’m still not sure why. These things happen. The beauty of friendships.

Of course I knew Gwan was ill. More than a decade ago walking became more difficult because of a progressive muscle disease that would not affect his heart. Over time he got bound to a wheel-chair. Somewhere in-between he got a heart condition too.

Gwan stayed imperturbable and optimistic. He was enjoying watching sports (Gwan was – despite living near Eindhoven – a huge fan of AJAX, Edwin of Feyenoord, I didn’t care about soccer at all: we had so much fun!) current affairs and movies keeping in touch with so many people. Irregularly he even managed to visit both German and soccer matches. It was so good to see how he enjoyed those. He was also a great family guy: organising events was his thing. His siblings, nephews and nieces always had a great time when meeting him. And then there were the yearly summer BBQ events in the party: awesome!

So it was only natural that – after we started cooperating with better office Germany – Gwan would organise the Dutch “Knowledge Days” events and the technical guys (usually Edwin and me from the Dutch side and Daniel Magin from better office Germany) would present the sessions.

When better office Germany got in trouble (long story) Gwan asked if I could financially help him to take a stake so at least the German personnel could be payed. We did, lost financially but earned life long friendships (and learned a thing or two on how banks operate).

One of the things with Gwan was that there never was a dull moment and always an opportunity to learn. Even from mistakes. Of course we had words once every now and then. But never a really big fight. I guess that’s part of a good friendship.

Another thing was the combination of being modest about himself and proud about others. For example he always proudly named one of his sisters” my little sister” as he was so fond of what she accomplished.

I vividly remember spring 2009 when – right after the Delphi Live 2009 conference – some USA friends, Edwin and me organised a surprise 50th birthday dinner party for Gwan. Despite his condition, Gwan was really happy that he made it to the conference. So having a party like that was a total blast.

He attended way more conferences and seminars than I did, especially an Germany. Unlike me, Gwan loved driving long distance. So he attended many Firebird, Delphi-Tage and other events I didn’t make it to. When I was at events, I could always spot Gwan with lots of people around him. usually near a bar (:

Around the time Gwan’s mom died about 3.5 months ago he spent some time in hospital to treat the edema that came with his muscle condition. It took a while, but the medicines worked, he attended the funeral and moved to an apartment with facilities for disabled and direct access to care.

Last week he had was hospitalised and his conditions worsened faster than anyone expected. Friday morning he quietly passed away. No more pain. No more sorrow.

Sadly we are left behind, but also pleased that his ordeal is over.

A dear, generous, modest and positive friend is gone.

Attending the funeral service

If you want to attend the funeral service, please let me know so I can inform the family of an attendance estimate.

The funeral service will be held on Thursday morning July 14 at 11:30 at this location (they begin 11:30 sharp, be early!):

Onze Lieve Vrouw Presentatiekerk AalstEindhovenseweg 63
5582 HP Aalst -Waalre
The Netherlands

Phone: +31 40 221 22 85 (preferably between 10:00 and 12:00)

The above catholic church is easy to find as it is right in the center of Aalst-Waalre (see the church icon on the map). They welcome everyone: non-catholics and atheist are equally welcome.

There are parking spots nearby on the south side of “de Leesakker” (right behind Greek restaurant Olympia) or in the street next to Restaurant Lugar (for both, see the P markings on the map).

To stay: look for Hotels near Aalst-Waalre. I can recommend the Van der Valk Hotel Eindhoven as Gwan and I have organised some workshops and seminars there.

Sending flowers

Gwan in 2010

Gwan in 2010

If you want to send flowers, make sure they arrive Wednesday afternoon July 13 at this funeral service:

Monuta Sol funeral service
attn. family of Swie Gwan Tan
Felix Timmermanslaan 2
5644 RN  Eindhoven
The Netherlands

Phone: +31 40 212 9800

Monday (today) opportunity to condole

Today, Monday July 11 there will be a brief opportunity to condole the family from 16:30 till 17:30 at this funeral service:

Monuta Sol funeral service
Felix Timmermanslaan 2
5644 RN  Eindhoven
The Netherlands

Phone: +31 40 212 9800

Dutch “overlijdensbericht”

Op 8 juli 2016 is onze lieve, gulle, dappere broer en oom overleden.

Swie Gwan Tan

* Eindhoven, 16 mei 1959           ✝ Veldhoven, 8 juli 2016

zoon van

Sing Liong Tan en Polly Tan-The

  • Voorschoten: Swie Tjiang en Ida
  • Waalre: Yu Kai
  • Voorschoten: Li Sha en Jordi
  • Amstelveen: Swie Han en Marion
  • Amsterdam: Li Mai en Derek; Yu Ri en Marre
  • Amsterdam: Ingkie en Loes
  • Parijs: Xiu Lin en Bart; Qi Bo, Qi Mo, Qi San

Correspondentieadres:
Monuta Sol, t.a.v. familie Tan
Felix Timmermanslaan 2, 5644 RN  Eindhoven

De uitvaartdienst wordt gehouden op donderdag 14 juli a.s. om 11:30 uur in de Onze Lieve Vrouw Presentatiekerk, aan de Eindhovenseweg 63 te Waalre.

Later die dag brengen we Gwan in besloten krijg naar het crematorium te Heeze

Indien U geen persoonlijk bericht heeft ontvangen, gelieve deze aankondiging als zodanig te beschouwen.

English translation:

On July 8, 2016, our dear, generous, brave brother and uncle deceased.

Swie Gwan Tan

* Eindhoven, May 16, 1959           ✝ Veldhoven, July 8, 2016

son of

Sing Liong Tan and Polly Tan-The

  • Voorschoten: Swie Tjiang en Ida
  • Waalre: Yu Kai
  • Voorschoten: Li Sha en Jordi
  • Amstelveen: Swie Han en Marion
  • Amsterdam: Li Mai en Derek; Yu Ri en Marre
  • Amsterdam: Ingkie en Loes
  • Parijs: Xiu Lin en Bart; Qi Bo, Qi Mo, Qi San

Mailing address:
Monuta Sol funeral service
attn. Tan family
Felix Timmermanslaan 2
5644 RN  Eindhoven
The Netherlands

The funeral service will be held on Thursday, July 14 a.s. at 11:30 pm in the Onze Lieve Vrouw Presentatiekerk, Eindhovenseweg 63 Waalre.

Later that day we will privately bring over Gwan to the cremation center in Heeze.

–jeroen

Posted in About, Database Development, DB2, Delphi, Development, Firebird, History, InterBase, Personal, Software Development | 5 Comments »

Work around G+ “403. That’s an error.” errors

Posted by jpluimers on 2016/07/08

I’m not yet sure what the exact cause is, but at irregular intervals when clicking on Google Plus links, they show as “403. That’s an error.”.

They appear both when I have multiple WAN connections or a single WAN connection, which leads me to suspect that G+ doesn’t cope well when

  • you have a lot (dozens) of Google related pages open (Drive, Mail, Search, Documents, etc) as Google Plus is embedded in each of them
  • you rapidly browse through your G+ backlog (the G+ counter is > 50 since you follow a lot of people/communities and you quickly do catch-up on them)

In a future post, I will explain how I created the workaround, but here it is:

Work around G+ “403. That’s an error.” errors

Basically it translates links

The latter was the original link I clicked in the first place. The former what G+ comes up with.

After a while, G+ comes back to its senses and allows the latter links again, so the page allows you to parse the former then put them in a list like this:

One decoded URL per list-item.

One decoded URL per list-item.

–jeroen _ _ _ _

Posted in Development, G+: GooglePlus, gist, GitHub, Google, Power User, rawgit, SocialMedia, Source Code Management | Leave a Comment »

James Newman built himself a 16-bit Megaprocessor using transistors in frames taking 12 by 2 meters. Wow!

Posted by jpluimers on 2016/07/07

It took James Newman more than one and a half years of actually building progress and more than that (thinking about it started in 2011) for designing his own Megaprocessor using transistors.

For like EUR 50000 and a lot of “learning opportunities” he built himself a room full of visual computing: you can see the LEDs on all the PCB boards indicating exactly what’s going on (heck: he even made the RAM visualise an actual tetris implementation).

All for the sake of understanding transistors and discrete logic after which things got out of hand.

Hopefully a tech museum will buy this.

His site as a truckload of information, for instance the Source: Megaprocessor – FAQ: good/bad/ugly linking to lots of technical details and decisions made (like throwing out surface mount components but using lead based solder or having dual output logic).

There’s a lot of video too (like Megaprocessor – How ?) but – especially these weeks – the downloading is slow, to it’s faster and easier to watch his Youtube playlists:

They are currently 6 videos each, but he has uploaded more videos and is working on more.

Finally, James even built an assembler for this 16-bit processor. How cool is that!

–jeroen

via:

Read the rest of this entry »

Posted in Development, Fun, Hardware Development | Leave a Comment »

Resource decompiler – converting/decompiling/extracting .RES files into .RC files and separate resources

Posted by jpluimers on 2016/07/07

via: Resource decompiler

One day I’m going to need ResourceHacker as it has an -extract option to extract resources.

The above link even has a batch file that can server as a start automating that process:

@echo off
set file="GeneSys"

if exist %file%.rc del %file%.rc

ResHacker.exe -extract %file%.res, %file%.rc,  Bitmap,,
ResHacker.exe -extract %file%.res, temp.rc,  Icon,,
type temp.rc >>%file%.rc
ResHacker.exe -extract %file%.res, temp.rc,  Dialog,,
type temp.rc >>%file%.rc
ResHacker.exe -extract %file%.res, temp.rc,  Menu,,
type temp.rc >>%file%.rc
ResHacker.exe -extract %file%.res, temp.rc,  StringTable,,
type temp.rc >>%file%.rc
ResHacker.exe -extract %file%.res, temp.rc,  Accelerators,,
type temp.rc >>%file%.rc
ResHacker.exe -extract %file%.res, temp.rc,  VersionInfo,,
type temp.rc >>%file%.rc
del temp.rc

I save it as extract.bat and a commandline usage: extract GeneSys will extract all the resources from GeneSys.res

–jeroen

PS: as the MASM forum sometimes nags with logins, I saved the above page in the wayback machine.

I’ve verified that [WayBack] ResourceHacker and the downloads ([WayBack] installer and [WayBack] portable) are there too.

Read the rest of this entry »

Posted in Development, Resource Files and Scripts (.res/.rc), Software Development, Windows Development | Leave a Comment »

Easy way to generate “System.InvalidOperationException: Nullable object must have a value.”

Posted by jpluimers on 2016/07/07

Easy way to generate “System.InvalidOperationException: Nullable object must have a value.”.


using System;
public class Test
{
public static void Main()
{
int? nullableInt = null;
int nowInt = (int)nullableInt;
}
}

–jeroen

Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C# 6 (Roslyn), Development, Software Development | Leave a Comment »

GitHub has majour service outages…

Posted by jpluimers on 2016/07/06

Boom!

In a split second GitHub went to

 

from

from 

Posted in Development, DVCS - Distributed Version Control, git, GitHub, Software Development, Source Code Management | Leave a Comment »

Vysor Pro Feature – Go Wireless to mirror and control your device without a USB Cable…

Posted by jpluimers on 2016/07/06

If you have a [Wayback/Archive] Vysor Pro (either subscription or one-time payment for life-long usage), then you can use this new [Wayback/Archive] New Vysor Feature – Go Wireless Click that button to mirror and control your without a USB cable…

There are more Pro features to come; currently they are:

  • High Quality Mirroring
  • Fullscreen Mode
  • Go Wireless
  • Vysor Share
  • Drag and Drop Files
  • Access to all future features

If Google Pay doesn’t work in your country, then you can use PayPal. When that doesn’t work either, well…

Another nice Vysor Pro feature: [Wayback/Archive] Vysor Share Server – an easy Android device farm: You can share all your Android devices at once using the new Share All feature. – Koushik Dutta (Koush) – Google+

Vysor links:

Read the rest of this entry »

Posted in Android, Android Devices, Development, Mobile Development, Power User, Vysor | Leave a Comment »

case insensitive files systems and git – Lesson Learned – I Can’t Get My Git Repo Clean! | DrupalEasy

Posted by jpluimers on 2016/07/06

via: Lesson Learned – I Can’t Get My Git Repo Clean! | DrupalEasy

One file kept getting added to the git modified list: service/src/main/MySOAPdefinition.pas.

It was part of a repository that had been migrated from SVN (more on that in a future blog post) and along the way been renamed in directory service/src/main from MySOAPdefinition.pas to MySoapDefinition.pas. SVN (and TortoiseSVN) don’t object to this. But git does.

You’d see this on the command-line:

>git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   service/src/main/MySOAPdefinition.pas

no changes added to commit (use "git add" and/or "git commit -a")

>git add service\src\main\MySoapDefinition.pas

>git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   service/src/main/MySOAPdefinition.pas

no changes added to commit (use "git add" and/or "git commit -a")

Basically the add would do nothing.

On Windows, this is how to get around this:

Read the rest of this entry »

Posted in Delphi, Delphi XE8, Development, git, Mac OS X / OS X / MacOS, OS X 10.9 Mavericks, Power User, Software Development, Source Code Management, SourceTree, Windows, Windows 7 | 1 Comment »

Latency Numbers every Programmer and Architect should know

Posted by jpluimers on 2016/07/06

Via +Martin Blais, Philippe Beaudoin, Lars Fosdal as Useful resource……:

Hit the cache, Jack…

Interactive Chart of Latency Numbers every Programmer Should Know (from 1990s until 2020s including script to draw the cart).

Also, this variant by Erik Meijer from Coursera (https://www.coursera.org/course/reactive): https://d396qusza40orc.cloudfront.net/reactive/lecture_slides/Latency%20as%20an%20Effect%201.pdf#page=10

Via Asbjørn Heid:

Following up on +Lars Fosdal’s earlier post here’s a talk by Herb Stutter which goes into more detail of where the performance is these days.

It’s a general talk, not C++ specific. Recommend it to get some idea of what goes on under the hood these days,  and so one doesn’t try to do some premature optimization which may turn out to be bad.

--jeroen

October 2017 updates thanks to Kristian Köhntopp:

Table as of 2016:

  • 1 ns: L1 cache reference
  • 3 ns: Branch mispredict
  • 4 ns: L2 cache reference
  • 17ns: Mutex lock/unlock
  • 100ns: Main memory reference
  • 2000ns: Compress 1 kilibyte with Zippy
  • 16000ns: SSD random read
  • 19000ns: Read 1000000 bytes sequentially from memory
  • 500000ns: Round trip in same data center
  • 100000ns: Read 1000000 bytes sequentially from SSD
  • 3000000ns: Disk seek
  • 1000000ns: Read 1000000 bytes sequentially from disk
  • 150000000ns: Packet round trip California to the Netherlands

Part of the 2015 numbers:

 

Related: [WayBack] XKCD – Radiation Dose Chart

2024 update via Tweets I saved:

Posted in Development, Software Development | Leave a Comment »

With 3 days notice. Yay. Another timezone database fire drill. Fixed in tzdata and tzcode.

Posted by jpluimers on 2016/07/05

Not as bad as #brexit but still: With 3 days notice. Yay. Another timezone database fire drill. – Peter da Silva – Google+:

[tz] Egypt cancelled DST

Additional reports concur that DST has been permanently canceled in Egypt, by both the Cabinet and the Parliament.

http://www.sis.gov.eg/En/Templates/Articles/tmpArticleNews.aspx?ArtID=105572

http://english.ahram.org.eg/NewsContent/1/64/232478/Egypt/Politics-/Egypts-cabinet-abolishes-daylight-saving-time.aspx

http://www.egyptindependent.com/news/cabinet-cancels-daylight-saving-time-following-parliament-vote

http://www.parlmany.com/News/7/101143/-

-Matt

It is already fixed in eggert/tz: Time zone database and code as mentioned in the announcement [tz] [tz-announce] 2016f release of tz code and data available

Via: With 3 days notice. Yay. Another timezone database fire drill. – Kristian Köhntopp – Google+

–jeroen

Don’t forget to watch The Problem with Time & Timezones – Computerphile – YouTube (thanks Andre Naumann)

Posted in Algorithms, Development, Software Development | Leave a Comment »