Failed CCTV

CCTV means closed circuit television. At my mothers work her car was scratched hugely. So the next time I was at my mothers work I noticed that there were security cameras around the building. So yesterday my mothers friends bike was stolen so I asked “what is with the security cameras?” And it turns out they don´t record anything that happened. So why didn´t they stop it so it also turns out they don´t even watch it.

Posted in programming | Leave a comment

Making lightsabers for lego characters

It was the exciting part of the movie when my son came into the living-room asking where the screwdriver was.  The tool box is pretty organised so I hardly looked up from my movie.  Yet a few minutes it really sunk in

I need to work on my cell phone, where is the screwdriver set”

I wandered into the kitchen to see what exactly he was up to.  It was a shock to see that the back of his phone was off and most of the screws were already taken out – he is nothing if not industrious.

I don’t think I even raised my voice when I asked what in the heck he was doing.  Just a quick bit of background.  I am about the farthest thing from a certified technician of cell phones and neither is my 13 year old son.

The problem

Well, if you have an audio headset plugged into your phone and it falls the wrong way part of the audio jack will break off in the device.  This has the negative problem with the music going to the output jack or in this case nowhere, but it has the other side effect of having all other music, noise, notifications and alarms going nowhere too.

After I caught my breath I thought about my boy’s approach.  It actually didn’t sound all that different from what I might try but I thought I would take a quick peek on youtube.  I needed to know how much is involved with the dissassembly of a smart phone.


Yup, between the many tiny flat cables and prying with various tools that I didn’t have it looked to be a nightmare.

The solution

Well, if youtube can scare your pants off then perhaps it can also give you some good ideas.  I am slightly paraphrasing but the solution is to stick a stick with glue into the audio jack plugin.

This was the best sounding option of the various choices.  The idea was to put a bit of glue inside the ink tube of a bic pen and push that hard into the audio plugin.

The instructions are easy it just requires you get the amount of super glue right.  I didn’t think that I had the right amount so I stood the phone up so the glue would run down towards the stuck audio plug.

Just leave this in the phone until it dries.  I waited until the next morning to ensure that it was either really attached (or really destroyed).  Super glue doesn’t specifically create a strong bond with the metal but I suspect it was attaching itself to the plastic core.

The results

Of course it worked.  Not because I am a certified technician.  If it didn’t work I probably wouldn’t be publishing this latest exploit – nobody wants to advertise personal failures.

Now the phone once again works, and my lego toy “Steve” has his own lightsaber.


However, everything else being equal I would not want to be building toy light saber’s in this way on my day off.


My Youtube solution


A bit more theory about the problem

Posted in DIY | Comments Off on Making lightsabers for lego characters

CMOS scheeMOS, clean up after yourself

I have had a problem with my home computer for some time.  It doesn’t quite boot right.  That is to say, when you turn it on, it actually doesn’t start windows or anything.  I have done some investigations and found out that when the computer is booting up it encounters a POST request of 36 and then it stops.  The workaround for this problem was to turn it off, and then after about 10-15 seconds turn it back on.


Yet, as this has bothered me for some time and eventually I did do a bit of research.  The answer that most people seemed to agree on was that the CMOS needed to be reset. I guess must have been living under a lucky star as with all of my computers I have never actually had this problem.  I have seen the battery go bad, problems with hard disks, windows patches mess things up, but never had this exact problem.

Perhaps I should set the stage.  My personal computer is fairly old as I have had it for six or seven years.  It was assembled with some assistance from my friend out of the following main parts.

Gigabyte FX v4.0 eXtreme
AMD 8350
blue ray dvd
8 GB

The machine had Windows 7 installed but it also had a dual boot for Linux Mint.  I didn’t want a hodgepodge of boot screens so I installed rEFInd as a unifying boot manager.  One boot manager to allow me to easily and graphically decide which operating system.

Resetting the CMOS won’t really be removing any of the files or changing the flle system but I keep putting this off this “small fix”.  That nagging little part of my brain that probably knows better but just last weekend I decided to cross that item off my list.  The process took about 15 minutes if you include moving the computer, cleaning out the dust bunnies, and replacing one of my fans.

The computer booted into windows on the very first try – one problem down.  This would have been good news except the boot manager should be the one getting booted.  It only took me a minute to discover that my boot manager was now gone.  That is to say, it was no longer considered to be a boot device by the motherboard.  Just the drives and the windows boot manager were the only possibilities.  It must have taken me 10 minutes to remember that last time I was fooling around with a linux tool to install rEFInd as an option to the listed among the boot devices.

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 4 seconds
BootOrder: 0001,0000,0006,0005,0004,0003
Boot0000* rEFInd
Boot0001* Windows Boot Manager
Boot0003* Hard Drive
Boot0004* CD/DVD Drive
Boot0005* USB
Boot0006* UEFI: Built-in EFI Shell

Google did help me to find that this tool was probably efibootmgr but what was the exact syntax.  I booted up with a boot DVD and mounted the UEFI boot partition but I must have had a typo as it was showing me the old 8.3 files with two versions of rEFInd.


That didn’t seem right. I suspected that at that time I was fooling with a new version and simply failed to delete the old files.  Reboot, mount the boot partition correctly and then take a closer look.

The file system is correctly mounted but I am not sure why I have both the 32 and 64 bit versions in my refind directory.  Type first, think later. I take a look some other examples of how to add back my boot manager but now I have quite a few different combinations ahead of me.

efibootmgr -c -d /dev/sda -L refind -l fs0:\EFI\refind\refind_x64.efi
efibootmgr -c -d /dev/sda -L refind -l fs0:\EFI\refind\refind_ia32.efi
efibootmgr -c -d /dev/sda -L refind -l \EFI\refind\refind_x64.efi
efibootmgr -c -d /dev/sda -L refind -l \EFI\refind\refind_ia32.efi

Each time I try one of these options I have to reboot everything.  If this doesn’t work then I need to delete that boot manager entry.

efibootmgr -Bb 0000

The only problem is that my entry is not 0000 but 0001.  Copy, fix, run, reboot, copy, fix, run, reboot, ….

I imagine it was fate that had me delete entry 0000 not 0001.  I am not happy that Linux wasn’t working but now I am less happy that the windows boot process has been deleted.

Can I possibly stay cool long enough to fix this?  Maybe.  I have gone through all the possibilities in my list but I have had no success.

I could have tried to install a newer version of Linux but that both feels like cheating but also may be delaying the problem another 30 minutes. I decided to go back to the source and take a look at the excellent page by Rod Smith. .  I was actually a victim of Microsoft and their backslashes, well that and my apparent inability to delete the old unused configurations and files.

After using a few more slashes everything comes up roses.

efibootmgr -c -l \\EFI\\refind\\refind_x64.efi -L rEFInd

This time I need to not only make some notes, but I also need to save them someplace really safe for next time.  Who knows next time it might be an upgrade or replacing a disk after a crash.

Posted in Setup From Scratch | Comments Off on CMOS scheeMOS, clean up after yourself

The art of invisibility

Indeed this book does discuss all the technology that you could use in an attempt to become invisible as far as internet tracking is concerned. The book goes even further if you wanted to disappear. It explains all of the technological actions you need to keep in mind as well as how to achieve them.

Truly becoming invisible will be extremely difficult for most people due to the constant vigilance and separation between your “invisible profile” and physical life.

This is not to say that this book doesn’t offer some good reminders of best practice (ie never share your passwords) as well as other hints and technologies that you can use to enhance your privacy (ie proxies, metadata on cell phone pictures) Not only that I managed to learn one very specific obscure bit of US law.

First a bit of esoteric bit of US law.

Did you know you could be arrested for possession
of a short tail lobster?

The answer is yes, it is illegal to be in possession of a short-tailed lobster no matter how you received it. I am not worried that I will somehow end up acquiring such an “illegal” lobster but in this book, I did learn about one very scary bit of related US tech law.

Public Company and Accounting Reform and Investor Protection Act
more commonly called Sarbanes Oxley Act of 2002

Khairullozhon Matanov, a friend of the Boston bombers, was arrested because he cleared his browser history. I am not suggesting that any acts of terrorism or support of terrorism should be condoned but just like an episode of “Law and Order” it is a bit scary where some laws may be only marginally relevant are used in another context entirely to convict people.

What is most important to take away from this is that under US law it is possible to be convicted of clearing your browser history.

The best way to not be convicted of deleting your browser cache might be to start up your browser in private browsing mode. This way there is nothing in your cache that would need to be deleted.

This is a fascinating book that contains a lot of technical details but also talks a bit about the techniques used when others are trying to obtain your personal information.  It is a good read and helps to remind to keep security and privacy in mind at all times.

Posted in Soapbox | Comments Off on The art of invisibility

5G and the USA dictating technology choices

I cannot remember how we got to discussing about technology and the new 5G standard.  My buddy Otto was a bit surprised at how adamant the US government with their demand that all of its allies must not purchase Huawei 5G technologies.

His statement was that this might be an example of US imperialism.  I tried to dismiss all of this but I did remember over the last few years the occasional news article describing how the USA’s department of defense or other three letter acronym warned about Trojans. Did this already happen to Amazon and Apple?

Later in the day my other office friend, Christian, informed me about the mechanical keyboard that he bought. Christian actually loves mechanical keyboards and so that wasn’t the surprising part.  The keyboard was essentially purchased online and delivered directly from China to his house.  Both the quality and the cost of this keyboard was amazing and in that sense he was very happy.

It was only a few minutes later that he let the other shoe drop.  This keyboard actually included a cloud driver.  The drivers name sounds a bit odd but if you think about it what exactly would a keyboard need a cloud driver for unless it needed to communicate with the cloud.  That is exactly what was happening.

What was happening was not the more serious concern that all of your key presses are being sent to some server in China, what was actually being sent was a count of how many key presses were done on each key.  This might not be so important if you are updating a long boring report on weather patterns during the dust bowl but perhaps more important if you are entering your domain password (and then simply read your emails).

Manufacturing in the 21st century makes it almost impossible to know and test the origin of each and every component in a electronic device.  Adding an extra chip to a circuit board may be more obvious but adding new logic into an existing micro-controller would make such a spy device virtually undetectable.

Did any malicious hardware changes actually happen in the past?  Does Huawei have any extra special additions in their hardware aimed at learning intelligence? It is impossible to say for certain but expectations and  privacy and laws are different in China as are the rules for monitoring people.  This can be seen by the inhabitants being spied on by their city.  Not only that but allegedly the US knows this is completely possible considering that they have done similar things in the past.

I don’t know if Christian actually installed this cloud driver when he purchased the keyboard but I can understand how you would feel to learn about such a betrayal after using something for a few years.

Posted in Soapbox | Tagged , , | Comments Off on 5G and the USA dictating technology choices

command line fun – arrays

Work with new people and learn new things. I used to work with someone who was unfamiliar with the Unix world, did not know how to program in Java and couldn’t write shell scripts either.

Victoria was actually a very clever lady and she did manage to conquer these shortcomings to be the best person in our team.  She simply rolled up her sleeves (well put on some reading glasses) and got all of the knowledge that she needed to achieve her goals.

I was actually quite surprised when I was looking through one of her scripts when I saw that she was using array’s in her shell script.  I had always gathered up my files to process into a variable and then continued from there.

My file names actually had no spaces and there would only be a handful each time so my solution was just fine, but it never hurts to put another arrow into your developmental quiver.

The syntax is slightly different to other languages but the syntax is rather straightforward.


The only thing that is different than some of the more classical languages is how to determine the length of an array.


I am not sure that how Victoria actually used arrays was really necessary but it did point out an interesting way we can process data in the future.



for single in `ls -1 *`

  idx=$((idx + 1))


  while [ $ndx -le $LEN ]

    #echo $single $arrayitem
    if [ "$single" == "$arrayitem" ]

    ndx=`expr $ndx + 1`

  if [ $found -eq 1 ]
    echo $single true


This solution was altered from something else that was not quite appropriate. The actual solution could have been much much simpler.


if [ -f dailyclosing.txt ]
  echo do daily stuff

if [ -f weeklyclosing.txt ]
  echo do weekly stuff

if [ -f yearlyclosing.txt ]
  echo do yearly stuff
Posted in programming | Comments Off on command line fun – arrays

dipping your toes into the ocean with Mermaid

It began with a great idea.

“lets do our systems graphs in such a way we can version them in GIT”

Anyway, I believe that is how it started.  I was then told that perhaps the open source tool Mermaid would be the solution to that grand idea.

It did look pretty good.  I tried using this for some trivial graphs and I was amazed at how well it worked.  You could create a small flow chart within a few minutes.  Not only that but the graphs that where created were SVG, that wasn’t really on my radar but it would have been useful a few projects back.


Version 1
graph TB
AuthServer(“Oath v2.0)”)
UserDB AuthServer–>UserDB
UserDB –>AuthServer
client(user/browser)–https –>AuthServer
extpgm(ext system) — https –>AuthServer


I did like this but to be honest it didn’t really keep the systems properly grouped together.  That was also quickly correct by grouping the systems as a sub graph.

Version 2
graph LR
subgraph Internal Systems
AuthServer(“Oath v2.0)”)
UserDB AuthServer–>UserDBUserDB –>AuthServer
endsubgraph Client Services
Login        client(user/browser)–https –>AuthServer
extpgm(ext system) — https –>AuthServer

Mermaid seemed to handle these flows just fine.  Not being content with this I tested the sequence diagrams.  They actually seemed to work even easier.


Sequence Diagram
user->>+AuthServer: User credentials
AuthServer ->>+ user: token
Note right of AuthServer: Token valid 6 hours
user->>+MediaServer: requests movie + token
alt token valid
MediaServer ->>+ user: streams content
else token valid
MediaServer –>>- user: request refused

I was about to bring all of this to my team leaders attention when I received some feedback from one my teammates. He was correct, color makes things not only less boring but can also visually help with grouping like items together.

Version 3
graph LR
classDef cyan fill:cyan
classDef yellow fill:yellowsubgraph Internal Systems
AuthServer[“Oath v2.0)”]
UserDB(Login data)
DetailsDB(Customer Details)
UserDB –>|WebSphere|AuthServerclass AuthServer yellow
class UserDB cyan
class DetailsDB cyan
subgraph Client Services
Login        client(user/browser)–https –>AuthServer
extpgm(ext system) — https –>AuthServerend
linkStyle 2 stroke-width:2px,fill:none,stroke:green;
linkStyle 3 stroke-width:2px,fill:none,stroke:green;


It was at this point that I realized that these connections between elements was only one way.  Unfortunately you cannot simply have a line with arrows at each end. I didn’t think that adding a few back arrows would make that big of a change to the diagrams but unfortunately they did.  Not only that as you start to add a lot of different elements, each with bi-directional communication, the nicely ordered elements start to change places.


Version 4
graph LR
classDef cyan fill:cyanclassDef yellow fill:yellow
subgraph Internal Systems
AuthServer[“Oath v2.0)”]
UserDB(Login data)
DetailsDB(Customer Details)
Presenter[catalog system]
UserDB –>|WebSphere|AuthServer
class AuthServer yellow
class UserDB cyan
class DetailsDB cyan
subgraph Client Services Login
client(user/browser)–https –>AuthServer
AuthServer –>clientAuthServer –>extpgm
extpgm(ext system) — https –>AuthServerend
version 5
graph LR
classDef cyan fill:cyan
classDef yellow fill:yellow
subgraph Internal Systems
AuthServer[“Oath v2.0)”]
UserDB(Login data)
DetailsDB(Customer Details)
Presenter[catalog system]
UserDB –>|WebSphere|AuthServer
class AuthServer yellow
class UserDB cyan
class DetailsDB cyan
subgraph Client Services Login
client(user/browser)–https –>AuthServer
AuthServer –>client
AuthServer –>extpgm
extpgm(ext system) — https –>AuthServer
client –>Details
DBclient –>Presenter
linkStyle 2 stroke-width:2px,fill:none,stroke:green;
linkStyle 3 stroke-width:2px,fill:none,stroke:green;

The colors of the elements remains easy enough, but as the number of elements increases finding and changing the colors of the lines becomes more and more like software development.  The hacking kind, not the software engineering kind.

The task that I was given had enough elements on it to take up half of a keyboard but this type of graph doesn’t automatically look very good.  It is simply too much.

I did like the few hours that I spent fooling around with Mermaid.  I can see how this might be nice if you have some simple elements that should be graphed.

This example exist on Mermaid page

Perhaps Mermaid is an exceptional tool for either sequence diagrams or gantt charts but I don’t really need that at the moment.

If you really want, you can even add Mermaid to your web pages.  As for me, I am not certain that I would want the diagrams to be outside of my direct control and at the moment human beings are able to make more of the simplifying decisions for item placement.


I really with I could give this project two thumbs up but I did encounter a few things that would prevent me, certainly in larger sittings, from using this.

  1. It is not possible to have lines with arrows on each side
  2. It is not possible to simply add notes or legends to flow charts
  3. It is snot possible to have a line from one entire subgraph to another item or subgraph
  4. No influence on the element placement
  5. SVG output from the tool isn’t well supported by Microsoft products, or else there is a problem with the SVG image.
Posted in programming | Comments Off on dipping your toes into the ocean with Mermaid

Stupid postman tricks

First the technology. RESTful calls are actually pretty cool. It is neat to simply send off a GET or POST message and extract or update the server with vital information. I am not going to write up a long article, well at this point anyway, describing RESTful calls.

Due to the flexibility and function of these calls there are a lot of tools and systems that make use of them. One such tool is Postman. This is a perfect tool for testing your RESTful calls on your servers. This might be during testing or it could be during development.


I was tasked with setting up some performance tests in another tool and my specification was a Postman script. You cannot really ask for a better specification than something that almost works like a finished program.

The only problem was that I had to run a few different steps and one of the steps required value from the previous step. This is actually almost trivial in Postman but the problem was I needed both the name and the value.  The source code that I had needed parse looked like this.

<input type="hidden" name="xsrf_CppTDEqKjryFYA9agpaloQ" value="LugLnMWKGWyiZD64jwys4g">

I need to pass back a variable called xsrf_CppTDEqKjryFYA9agpaloQ with the value LugLnMWKGWyiZD64jwys4g in the next postman step.

The good news is that postman uses java script as its scripting language.  This allows you to do plenty of interesting things when testing response values.  In my case I decided to use java script to parse the login page that is retrieved and then essentially an inelegant  search through the text for these values.

mysplits=data.split(” “);

var idx;
var valueidx=-1;
var cnt=mysplits.length;

for (idx=0; idx < cnt; idx++)
var search = mysplits[idx].substr(0,10);
if (search == searchname)
var pieces=mysplits[idx].split(“\””);

if (valueidx == idx)
var pieces=mysplits[idx].split(“\””);

This isn’t the type of code you would want to use for any production solutions but it is a fun little hack to assist during development.

Posted in programming | Comments Off on Stupid postman tricks

Better late than never – LED cube

A few weeks back I did my blog “Just making it – a new cube” which was my experiences doing my next led cube.  This cube was an 8x8x8 cube.  The only thing that I didn’t do was to put out a video of the patterns.

This cube actually was really well programmed.  You can find a link to the video below.


Posted in programming | Comments Off on Better late than never – LED cube

Clone drone in the danger zone

Clone drone In the danger zone is a game made by Doborog games. You are a human mind implanted in a robot form. You can either battle royal, campaign or costum levels. You either have a sword or a hammer.

Here is a video of a challenge from clone drone in the danger zone.

clone drone in the danger Zone costs 15$ on steam.


Posted in Gaming | Comments Off on Clone drone in the danger zone