My use case for git submodules

I have been chatting on IRC about how I’m learning git so I can use submodules and my friend @indigo wants to know my use case, so this post makes some effort to explain that with reference to one specific example.

I have a web framework/toolkit I am experimenting with called Mudball which is here: https://github.com/jj5/mudball

I use Mudball in (some of) my web projects, for example: https://github.com/jj5/www.jjlab.net

In the main project (in this case www.jjlab.net) I have a copy of Mudball in the ext/mudball directory. At the moment ext/mudball is setup as a git submodule.

I open the main project in my IDE (or text editor) and I want to be able to work on both the main application and the web framework/toolkit at the same time. Then when I’m done with some changes I want to run my `gui` script (it stands for “git update interactive”, not “graphical user interface”) which will increment my version numbers in inc/version.php and ext/mudball/inc/version.php and then add/commit/push any changes in both the main project and the web framework/toolkit.

The code for the `gui` command is here: kickass-libexec/bin/lx-gui.sh, it mostly just defers to lx_vcs_sync() which is here: kickass-libexec/src/2-module/vcs/vcs.sh.

The code which updates the version numbers is here: kickass-libexec/bin/lx-version-increment-patch.sh, it mostly just defers to other modules which are here: kickass-libexec/bin/libexec/version-increment-patch.php and here: kickass-libexec/bin/libexec/inc/version.php.

I have been using a similar setup for a long time with Subversion which uses the svn:externals facility (in place of git submodules) and I have a few scripts which help me manage that. My main tooling for this is known as svnman which is a bunch of scripts I wrote myself: Svnman.

Mail Call #5: Loot from Amazon and AliExpress! | Learning Electronics In The Lab With Jay Jay

This post is part of my video blog and you can find more information about this video over here.

You can support this channel on Patreon: patreon.com/JohnElliotV

In this video I take a quick look at a few cheap bits and pieces I picked up from Amazon and AliExpress recently.

The stuff I got from Amazon was:

The stuff I got from AliExpress was:

I’ve got some more loot on order, so stand by for another mail call video soon!

Thanks very much for watching! And please remember to hit like and subscribe! :)


Following is a product I use picked at random from my collection which may appear in my videos. Clicking through on this before purchasing from Amazon, eBay, or AliExpress is a great way to support the channel at no cost to you. Thanks!

Arlec PB91 Plug-In RCD Safety Switch With Surge ProtectorThis is an image of the product.notes

Let’s go shopping!

I figured out how to avoid connascence of position

Instead of passing positional arguments to constructors (or functions), instead pass a list of value objects. The type of the value object will tell you the type of the value, so you don’t need to worry about the position. This is a super powerful means of supporting back-compat within your code base so you can move ahead at speed. Having value objects instead of simple types (bools, ints, floats, strings, etc) might have performance implications, but it also can be quite handy. So far so good for my use cases.

Symbol Keyboard | Mini Project JMP001 | Learning Electronics In The Lab With Jay Jay

This post is part of my video blog and you can find more information about this video over here.

You can support this channel on Patreon: patreon.com/JohnElliotV

This is the inaugural Mini Project! I introduced the Mini Projects recently. They are developed and published by Silicon Chip magazine, and sponsored by Jaycar Electronics (which is an Austrlaian electronics store, similar to Radio Shack in the USA, hopefully it doesn’t end up suffering the same fate.)

In this project, codenamed JMP001, we develop a USB keyboard which can send interesting and unusual symbols (which aren’t usually available on a keyboard) to a Windows computer using the alt-codes that it supports in a typical codepage.

For this first Mini Project I felt it was important to actually buy my components from Jaycar which I did for roughly eighty Australian dollary doos. Approximately US$50. The parts I ordered were these:

Belatedly I did also search for rubber feet.

There was quite a lot that went into the production of this video, and we accumulated a lot of links. Those are here:

In the end this first project was relatively successful, and we did get it to work fairly well on one of my Windows computers. As for the rest you can find out for youself in the video!

Thanks very much for watching! And please remember to hit like and subscribe! :)


Following is a product I use picked at random from my collection which may appear in my videos. Clicking through on this to find and click on the green affiliate links before purchasing from eBay or AliExpress is a great way to support the channel at no cost to you. Thanks!

Yum Cha HSC8 6-4A Ferrule Crimper KitThis is an image of the product.notes

Let’s go shopping!

Speech Conductor | Project 10/20 | Maxitronix 20in1 | Learning Electronics In The Lab With Jay Jay

This post is part of my video blog and you can find more information about this video over here.

You can support this channel on Patreon: patreon.com/JohnElliotV

In this video I do the tenth Maxitronix 20in1 Electronic Project Lab project: Speech Conductor.

In this project we learn a little about transistors, amplifiers, and astable multivibrators.

Note: while I was making this video I took a detour into making a cable, which didn’t work out. You can see the video about that over here: Extra Content #13: Failing to Attach Banana Plugs to Microphone Cables | In The Lab With Jay Jay.



Thanks very much for watching! And please remember to hit like and subscribe! :)


Following is a product I use picked at random from my collection which may appear in my videos. Clicking through on this to find and click on the green affiliate links before purchasing from eBay or AliExpress is a great way to support the channel at no cost to you. Thanks!

ALKOY Capacitor Discharge PenThis is an image of the product.notes

Let’s go shopping!

Extra Content #13: Failing to Attach Banana Plugs to Microphone Cables | In The Lab With Jay Jay

This post is part of my video blog and you can find more information about this video over here.

You can support this channel on Patreon: patreon.com/JohnElliotV

In this video I try to attach some banana plugs to my microphone cables, but I do not succeed.

I tried to find some examples of how to do this properly on YouTube, but I didn’t find much: how to assemble banana plugs

I did find a video of a guy who essentially just explained all the problems I ran into: Banana Plugs & Binding Posts

And this one over here confiremed: How to fit a Banana Plug

Thanks very much for watching! And please remember to hit like and subscribe! :)


Following is a product I use picked at random from my collection which may appear in my videos. Clicking through on this to find and click on the green affiliate links before purchasing from eBay or AliExpress is a great way to support the channel at no cost to you. Thanks!

Yum Cha 100pcs Releasable Cable OrganizerThis is an image of the product.

Let’s go shopping!

Extra Content #12: Fixing the Family Sunbeam Kettle | Learning Electronics In The Lab With Jay Jay

This post is part of my video blog and you can find more information about this video over here.

You can support this channel on Patreon: patreon.com/JohnElliotV

In this video I take apart a broken kettle then put it back together, then magically it is fixed!

In this video I use my Yum Cha Mini Magnetic Precision Screwdriver Set for the first time. It takes me a little while to figure out how to clip the tips in. I needed the triangle bit for this job.

Thanks very much for watching! And please remember to hit like and subscribe! :)


Following is a product I use picked at random from my collection which may appear in my videos. Clicking through on this to find and click on the green affiliate links before purchasing from eBay or AliExpress is a great way to support the channel at no cost to you. Thanks!

Bosch IXO VI Electric ScrewdriverThis is an image of the product.notes

Let’s go shopping!