All posts by Mark Jacobsen

Selling the Investment to Pay Down Technical Debt: The Code Christmas Tree

I meant to post this over the holidays, but still think it’s relevant. Personally, I like the prominent visual aspect of the idea.

Selling the Investment to Pay Down Technical Debt: The Code Christmas Tree | Agile Alliance

Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Yes, Cross-functional Teams — but Real Ones!

As we work through the process this seemed pertinent (emphasis is mine)…

The next leap is bringing these different units together (not only through the interface of the Product Owner) to form teams that are actually as knowledgeable about business, contracts, mathematics, sales, marketing, and everything else that is relevant for the company’s value stream as they are in software. For the Scrum teams, the leap means that they can’t “hide” behind their backlog or the Product Owner and need to explore and learn about the market, their customers, and the company’s value stream themselves. Basically it means that now the Agile teams’ focus is beyond software.

Yes, Cross-functional Teams — but Real Ones!

Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

How to Retire Forever on a Fixed Chunk of Money

It’s at least worth considering.

The absolute key to success in early retirement, and indeed most areas of life, is to get the big picture approximately right and not sweat the small stuff. And design the big picture with a generous Safety Marginwhich allow lots of slop and mistakes in your original forecasts and allows you to still come out with a surplus.

How to Retire Forever on a Fixed Chunk of Money

Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Use SCP to copy files between remote and local hosts

So you need to copy a file you have on a remote server locally, or send a local file to a remote server? Fortunatally, it’s pretty easy with scp. Here’s an example to copy a remote server to the local machine.

scp -P 65124 remoteuser@remotehost:/var/lib/path/to/file.txt /var/lib/path/to/

…which will connect to “remotehost” on port 65124 as “remoteuser” and copy the /var/lib/path/to/file.txt on “remotehost” to the local /var/lib/path/to/ directory.

Need to copy a local file to a remote host? Just switch the parameters up!

scp -P 65124 /var/lib/path/to/file.txt remoteuser@remotehost:/var/lib/path/to/
Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Set a proxy and carry over the values to sudo

If you’ve ever been behind an enterprise proxy server and needed to reach things on the outside, you probably know how frustrating it is to try and just use your normal commands for something as simple as a wget. So, to get started you will need to know the URL and port for your proxy server, but once you have that, start by editing your .bashrc and add the following (setting proxyhost, the port, and adjusting “no_proxy” as appropriate)…

function proxyon(){
     echo -n "password (for proxy): "
     read -es password
     export http_proxy="http://$USER:$password@proxyhost.com:8181/"
     export HTTP_PROXY=$http_proxy
     export https_proxy=$http_proxy
     export HTTPS_PROXY=$http_proxy
     export ftp_proxy=$http_proxy
     export rsync_proxy=$http_proxy
     export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,.domain.com"
     echo -e "\nProxy environment variable set."
}
function proxyoff(){
     unset HTTP_PROXY
     unset http_proxy
     unset HTTPS_PROXY
     unset https_proxy
     unset FTP_PROXY
     unset ftp_proxy
     unset RSYNC_PROXY
     unset rsync_proxy
     echo -e "\nProxy environment variable removed."
}

# remove next line if you don't want to set proxy automatically on login
proxyon

Now you can turn your proxy on and off with the “proxyon” and “proxyoff” commands, but that doesn’t help you when you try to install something with yum or apt that requires sudo. To carry over the proxy values, you’ll need to “sudo visudo” and add the “Defaults” line like shown below…

###############################################
# DO NOT ADD ANYTHING FROM HERE TO END OF FILE #
#
#includedir   /etc/sudoers.d
#
# DO NOT ADD ANYTHING ABOVE THIS LINE###########
Defaults env_keep = "http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ftp_proxy"

… and now, hopefully you are all set.

Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Configure a Static IP in Ubuntu 18.04

As with all things Linux there’s a million ways to do things, and every brilliant release comes up with a new way to do the same old things in a “better” way. Can you tell I’m be sarcastic yet? Good.

Anyway, after spending over an hour trying to get a freakin static IP on my desktop box I thought I’d share in case it saved anyone hours of their life.

My simple goal was to provide a static IP. Nothing more. Nothing less. Well, the “better” way of doing it now appears to be with “netplan”, and unless you enjoy banging your head against the wall, just create/edit this file and replace with the network interface (enp3s1), IP (192.168.20.55) and gateway (192.168.20.1) of your choice (this config appears to use the DNS servers from the router w/ DHCP turned on). Oh yeah, and don’t bother with the GUI based configuration tool, because apparently they’re not connected at all, and using this will force the config from this file (you’ve been warned and saved hours)

sudo nano /etc/netplan/01-networkd.yaml

# this is the actual file content
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s1:
      dhcp: no
      addresses: [192.168.20.55/24]
      gateway4: 192.168.20.1
Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Update modification timestamp on DB2 table automatically

Ever want to update your modification timestamp field any time an update is made to the row without having to add application logic? Well, DB2 makes it relatively painless…

alter table XX.MY_TABLE add column last_updated_ts timestamp not null
generated by default for each row on update as row change timestamp

Check out these resources for additional information…

  • https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0051498.html
  • https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000888.html
Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Stop Stealing Dreams (by Seth Godin)

If you’ve ever read or listened to anything by Seth Godin you know he has a knack for asking thought provoking questions, and challenging conventional wisdom. As such, he recently did a three part series on his Akimbo podcast about what school is for that I found fascinating. Hope they make you stop and think too.

S 3 E 9 Stop Stealing Dreams

S 3 E 10: Connect the DotsQ&A about Stop Stealing Dreams

S 3 E 11 Getting In (to a Famous College)

Find more at www.stopstealingdreams.comPlease remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Is it time to quit social media?

As I read this article what was running through the back of my mind was, “is it time to quit social media?”, and to be honest… but for being involved in real estate and a large bulk of that requiring being “engaged” I’m not sure I have much use for it. Never before has it been easier for marketers to target and connect with their “target audience”. You do realize that’s what social media has become right? The proverbial barrel where the fish are to shoot.

So, is it possible to take back the social networks? I’m not sure it is – at least with the current companies. Built from the ground up, or under a completely different model – maybe. But as the article linked to above points out it would be to the detriment of the “bottom line”.

Would I like a feed where I only see posts from my family, and maybe some other groups at my leisure? Of course, but unless I’m paying for that the only recourse I have is to a platform that has the resources to provide it based on the party that is willing to pay for it – the marketers.

So what would this “social media” service of the future look like? Number one, it should be built on a privacy, no-advertising first model. Second, I believe it should be decentralized, but speak a standard protocol – just like how email service is provided. Then, organizations like companies, teams, or even families could manage their own little groups and individuals could determine what they want to see or who they want to connect with…

And yet, as I sit here writing this, I wonder if it’s even possible or needed. After all, I’m able to run my own little blog right here. You can share it on social media if you so choose. In fact, I’ll probably post it to my account – and try not to look at the “likes” or “comments” that fuel the FB “engagement” engine.

So, while I may have just rambled for a number of paragraphs, let me finish by encouraging you to consider your use of social media, and at a minimum strongly consider turning off your notifications and moving the app to a sub-folder on your phone (just those two things alone have made a huge difference in my life). I would also encourage you to look into downloading and using Signal Messenger in place of text messaging and especially in favor of the social media messaging platforms.

Until we figure something out, you can always find me right here.Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.

Including the version in a Maven artifact

Recently I wanted to include the version of an artifact generated by a Maven build into a text file in that artifact. As Google and and good friends will help you with, I was pointed to this article that was exactly what I wanted.

Basically, create a /src/main/resources/version.txt file with the following content…

${project.version}

… then including the following snippet in your “build”…


<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
      <includes>
        <include>**/version.txt</include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>false</filtering>
      <excludes>
        <exclude>**/version.txt</exclude>
      </excludes>
    </resource>
  </resources>
</build>

Please remember to subscribe to the newsletter or feed to stay up to date!

Disclaimer: Thoughts and opinions are my own, and do not reflect the views of any employer, family member, friend, or anyone else. Some links may be affiliate links, but I don't link to anything I don't use myself.