A not really technical talk, at least not in terms of details. But Benno, who comes from the FreeBSD side, covers a lot of stuff from the conceptual side. My verdict: Absolutely worth it.
It is a common requirement (e.g. for search-replace operations on strings) to create characters that are non-printable, which also means there is no obvious way to type them in. In my case the situation was that I had to convert end-of-line characters created on a Windows system (
CR+LF) to Linux (
LF only) for some unit tests to pass.
On webMethods Integration Server you have two options to do this. The first is to create a small Java service, which has the down-side that some people shy away from it. (I have even seen organizations that pretty much forbid them, which is probably a bit extreme.) The second way is to have a Flow service (Integration Server’s graphical programming language), which is what I demonstrate here.
So how do I create a
LF character? For this you can use the
pub.string:URLDecode service with “
%0a” (without double-quotes) as input, which is simply the character with ASCII number 10 (
And then you simply perform a replace operation using the
pub.string:replace service and tell it to replace all
CR+LF occurrences with
LF. The search part is done best with a regular expression, in this case “
\r\n” (again without the double-quotes). And don’t forget to set
Another very interesting talk of Simon Sinek, this time at Google. The full title is
“The Finite and Infinite Games of Leadership: Leadership, Business and Finding Purpose in the Workplace.”
The following points were interesting for me:
- Time code 7:00 : Infinite players do not compete with the competition but themselves. This has an awful lot of strategic implications.
- Time code 16:55 : Dealing with personal objectives and bonuses. Also see my post about this very topic.
- Time code 33:00 : Why are small companies usually more innovative than big ones?
For setting up VLANs in my home network I basically followed the tutorial from Crosstalk Solution on YouTube:
The result, however, was not working as expected. As it turned out the critical difference was that I have my pfSense firewall running virtualized on VMware ESXi 6.5. By default the latter “removes” VLAN tags.
But it is very easy to change this and not even a reboot is required. So here are the steps you need to perform:
- Log in to the admin web UI of ESXi
- Go to the network port groups and open your internal network
- Open settings for internal network
- Change VLAN to 4095
- Save change
That’s all 🙂
Mr McEnerney presents a really good “strategic” approach to writing in a professional context. On the one hand nothing really new, but the way it is presented and details being put into context, make this a wonderful framework for me.
In particular it became even clearer to me why knowing a lot about a subject often makes it more difficult to write about it or discuss things with non-subject-matter-experts. This is also described nicely in the course description for professionals.
And finally I want to direct your attention to this nice blog post about a personal encounter with Larry McEnerney.
Just a few short lines to let you know that for me the upgrade from plain 2.4.4 to p1 went really smooth.
I have the following plugins installed:
- bandwidthd (0.7.4_1)
- iftop (0.17_2)
- net-snmp (0.1.5_2)
- ntopng (0.8.13_3)
- Open-VM-Tools (10.1.0,1)
- suricata (4.0.13_11)
All plugins had been updated some time ago and thus prior to the pfSense core, which is not recommended. In my case, though, it did not cause any issues. This was a pleasant difference to the upgrade from 2.4.3 to 2.4.4 (also see this video on YouTube), where the fact that plugins had been installed was cause for a completely broken system after the upgrade.
I am writing this on a Saturday afternoon after having spent several hours going over Java code that is about a year old, needed only occasionally, and has not caused issues for quite a while. Still I spent personal time to improve or, shame on me, even add the Javdocs. Also, some additional error checks were added and the code structure simplified.
None of this had been asked for by anyone else. And probably quite a few people would call it a terrible waste of time, given the various new features still needed so badly. So why did I do it?
It was an experiment, a successful one from where I stand. In the beginning I merely wanted to see in how many ways the code could be improved with sufficient time gone by after the initial writing. I ended up doing the following things:
- Renamed class
ServiceWrapperManager, because the class is not an actual wrapper but creates and deletes them.
- Renamed variable
node, because via a wrong user input it could point to a node object of a different type and not an adapter service. (The same was done in two other cases.)
- Added multiple checks that would throw an
IllegalArgumentException, if the user had provided wrong input. So rather than having to wonder why the creation of a wrapper had failed, I would be “shouted” at early in the process.
- Added and improved multiple Javadoc entries. This, in turn, made me look at the code more closely where I discovered multiple things to improve or even fix.
When I look at the code now, it is cleaner, more robust, and easier to read. And the latter is the most important aspect on my case, because it reduces technical debt. So here you have your argument.
And for business people this means that I “keep my head above water level”. Or in other words: It is an absolute prerequisite for fast time-to-market that my code base is tidy and well-structured. Only then can I react quickly and change things without having to think hours what might break in other places, should I now add this or that new feature.
It is still a somewhat strange feeling that I have been running this blog for a bit more than ten years now. There were phases when I posted pictures from my (job) travels and others when I focused more on genuine content. The latter is mostly about software engineering and management. This may seem like an odd mixture, but it pretty much reflects my interests as well as professional development.
Another type of posts are just links to videos that I find interesting or amusing. These “articles” have the nice side-effect to not require too much time to write ;-). I had discovered YouTube as source of non-trivial content rather late and all the more fascinated I still am with some of it. Two channels stick out in particular for me: GOTO Conferences and TED.
During the second half of 2018 I had to slow down my blogging activities quite a bit due to family commitments. But I will try to slowly increase the pace again. After all, there is a lot of things that I would like to write about. This helps me to become clearer on the topic at hand, because a consistent story line requires a lot more thinking than a few (mental) bullet points.
So I am looking forward for the next ten years :-).