Swiftpoint The Z

Today I received an awesome long awaited new toy that I backed from Kickstarter, a shiny special launch edition Swiftpoint Award Winning mouse The Z


–Full RGB lighting and a small customizable OLED screen (see image)
–Gyroscope/accelerometer provides for joystick-like use
–Force-sensitive clicking that can be customized in the software
–Button variations to suite your preference
–Feet for “joystick” and “tilting” functions


–Large mouse mat
–Machined aluminum cable holder

After more than three years of development, we are ready to launch The Swiftpoint Z.

It’s the world’s first mouse to pivot, tilt and roll, with a brand new way of clicking buttons – meaning you can access dozens of different button actions while barely moving your fingers.

The Swiftpoint Z also senses how hard you click, giving variable speed/force control, and provides tactile feedback, so you know when you’ve made a ‘deeper click’. We built in an Accelerometer, Gyroscope, Force Sensor & Tactile Feedback to unleash a faster, more precise and highly intuitive mouse.

  • Series: SM700
  • Sensor resolution: 200 – 12,000 DPI, 5G Pixart PMW3360
  • Polling: 1000hz
  • Braided cord: cable length 6 feet (1.8 meters)
  • Scroll-wheel
  • Number of buttons: 16 including deep click with tactile feedback
  • Fast Access Fingertip Buttons: 12 buttons under finger tips with two thumb
  • Button Actions: 60 combine clicks with tilt left/right and pivot left/right
  • Wired: No Lag, No Drag
  • Pivot and Tilt
  • 6 Axis In-Air Control of Pitch / Yaw / Roll
  • Analogue Force Buttons to Control speed / throttle / power: 4 Buttons (Left/right click, & left/right fingertip)
  • Deep Click Buttons Multiple Threshold Levels with Tactile Feedback: 4 Buttons (Left/right click, & left/right fingertip)
  • OLED Screen
  • Automatic Configuration: Config mode is entered by tilting the mouse, see OLED screen.
  • Replaceable Hand Grips
  • Dimensions: 5.12″ x 3.54” x 1.57” (13 x 9 x 4 cm (L x W x H))
  • Weight: 4 ? ounces (117 grams) – without cable
  • Supported OS: Windows 10, Windows 8.1, Windows 8, Windows 7, Mac OS X Mountain Lion 10.8.x or later
  • Optimized for right-hand use
  • 3 year limited hardware warranty

Looking forward to seeing how the drivers develop, eager to try it on Linux, off to see how it performs piloting a ship around the Milky way in Elite Dangerous

April 17 updates

Both Android and Ubuntu received official updates today 🙂

Made a clean install of Ubuntu 17.04, everything works well out of the box.
Then there’s the compulsory: 17 Things To Do After Installing Ubuntu 17.04

Was surprised at the size of the Android security patch at over 300 MB to version 7.1.2!
All was well until a week later my phone bricked; I pulled it out of my pocket and it wouldn’t respond to my thumb print.

Thought nothing more of it, charged it overnight thinking the battery was drained, but it wouldn’t start the morning after 🙁

Tried booting into bootloader with zero success. So returned it to the store I picked it up from, stoked there’s a 2 year warranty… hope to get it back in the next few days.

In the mean time I’ve been using a fresh unboxed iPhone 6 we had sat around the house (don’t ask) and I’m shocled to say that I’m warming to it… or not as opposed as I thought I would be.


  • all the google apps I use are installed; mainly Gmail, Google Drive & Play Music
  • podcasts easy to subscibe, although the default player isn’t as intuitive as I’d like
  • think the sound and quality is better from Play Music
  • quicker to take photos, great quality… although not sure how the quality compares to Nexus 5x
  • photos upload to Google Drive
  • battery lasts longer than 5X, charges fast, but not close to the speed of USB-C


  • no NFC – can’t use Yubi Key
  • can’t set Firefox as default browser, but do get Firefox Focus

My biggest gripe though is the fingerprint unlock button.
I’m used to the 5X opening first time, with fingers and thumbs able to open up the screen.

The iPhone unlock seemed to work first time for the first week but now only works periodically, frustrating.

Also been playing with OpenSUSE in VirtualBox.

It does everything I need and looks great.
I miss apt-get, but maybe not enough to be a barrier to try it as my main distro for a while… then again I have my graphics card working perfectly in Ubuntu so not keen on rocking the boat.

Geek Xmas 2016


Merry Xmas!

Our boy is still a little young to geek out at xmas, although last night visiting friends he picked up a controller and gave Minecraft a bash… not bad for one 20 months old 🙂

  • I’m still finishing off FFxv
  • have picked up Overwatch again looking to actually rank for the first time in season 3
  • re-installed Witcher 3 to finish off after FF
  • currently downloading the update 1.03 for one of my Xmas presents, The Last Guardian, which is one title (together with Street Fighter V) that I chose the PS4 over the XBONE

My darling wife has also bought me the coolest geek 4 letter registration plate, I’ll post a pic when it’s delivered in the New Year 🙂



Machine learning with R

I’ve been working my way through Trevor Stephens well written and informative Kaggle Titanic tutorial for R.

Competition Description

The sinking of the RMS Titanic is one of the most infamous shipwrecks in history. On April 15, 1912, during her maiden voyage, the Titanic sank after colliding with an iceberg, killing 1502 out of 2224 passengers and crew. This sensational tragedy shocked the international community and led to better safety regulations for ships.

One of the reasons that the shipwreck led to such loss of life was that there were not enough lifeboats for the passengers and crew. Although there was some element of luck involved in surviving the sinking, some groups of people were more likely to survive than others, such as women, children, and the upper-class.

In this challenge, we ask you to complete the analysis of what sorts of people were likely to survive. In particular, we ask you to apply the tools of machine learning to predict which passengers survived the tragedy.

Excel would have been my first weapon of choice, but I wanted to try a new approach and a new analytical tool.

I’ve a use for R in my salaried role, and can see how I can utilise what I’ve learned in the guide in real World projects.

So thanks to Trev I now have a top 400 ranked score, and I am driven to do better. Think I’ll manipulate the data in Excel, rather than mastering regex in R, let’s see how high up the rankings I can get 🙂

Electronic Frontier Foundation chic

I received my EFF member tshirt, together with membership card and bumper sticker 🙂

I’ve got back into GTAV, just before the announcement of Red Dead Redemption 2!

Been playing a little of one of the free games for October on PSN network Transformers: Devastation, although was very tempted to pick up the original Resident Evil HD remake.

I’ve been working on Machine Learning models in R and Python, playing with the new Google Studio 2.2, and Kali on the Rasp Pi 3

Raspberry Pi Twitter Bot


In a moment of weakness I ordered a Raspberry Pi 3 last week, on the basis that my current original Raspberry Pi is a little too slow.

I pretty much stopped playing with it after the USB stick / drive I was using bricked, so this weekend I’ve powered it up again and I’m quite impressed.

I’ve overclocked the Raspberry Pi to Pi2 settings, although not sure what this means except it’s running quite well:

1000 MHz ARM
500 MHz core
2 overvolt

I’ve set the Raspberry Pi to connect to Tor on boot,and run a couple of Python scripts 🙂
One posts how long the box has been live, and the temperature it’s running at, the other retweets any mention of SPAM, SPAM, SPAM, SPAM, and EGGS!

If you’re interested here’s the account: @PiCookingTime
I’ll post the code if anyone is interested, although it was all plagiarised from great thinkers online 🙂

tidal cycles


No time to install and code just now, but I’m very excited of playing with this application in my (salaried) work space

TidalCycles (or Tidal for short) is a language for live coding pattern. It allows you to make musical patterns with text, describing sequences and ways of transforming and combining them, exploring complex interactions between simple parts.

To see and hear Tidal in action, check out some videos of performances and demos.

Tidal allows you to express music with very flexible timing, providing a little language for describing patterns as step sequences (which can be polyphonic and polymetric), some generators of continuous patterns (e.g. sinewaves, sawtooths) and a wide range of pattern transformations. Tidal is highly ‘composable’ in that pattern transformations can be easily combined together, allowing you to quickly create complex patterns from simple ingredients.

Tidal does not make sound itself, but is designed for use with the SuperDirt synth, and can control other synths over Open Sound Control or MIDI.

Tidal is embedded in the Haskell language. You don’t have to learn Haskell to learn Tidal, but as you get deeper, it might help to pick up an introduction. You could try Graham Hutton’s “Programming in Haskell”, Miran Lipova?a’s Learn you a Haskell for Great Good. Or, you could try learning just by playing with Tidal..

Tile find and track things

I vaguely remember back in the 80’s as Rubik cubes were popular, the miners were striking, and Thatcher was invading the Falklands the height of technology was a keyring that would beep in response to a whistle.

This technology has been brought into the modern age with a cool little blue-tooth device named a Tile
Tile keychain
From the site:

Never lose anything again

Are your things always running off? Not on our watch. Tile is a tiny Bluetooth tracker that helps find your lost stuff in seconds. Attach, stick, or place Tiles inside everyday items and keep track of them in our easy-to-use app.

Ring your things

Ring lost items just like you’d call a lost phone. If your Tile is within the 100-foot Bluetooth range, it will play a loud tune until you find it.

Ring your phone

Can’t find your phone? Press any one of your Tiles to make your lost phone ring—even if it’s on silent.

See where you had it

Give your memory a break. The app automatically records the last time and place it saw your item. So, if you left it somewhere, you know where to look first.

Ask others to help

Still can’t find your Tiled item? Expand your search using all Tile apps in our community. This feature is 100% private, so no one knows you’re looking for a lost item but you.

I’ve picked up a few and am looking for things to track 🙂

So keys, and wallet are obvious, then I thought what would actually be useful to track?

I thought what do we look for most? The TV remote was a top contender, as was my drone, but my first choice is one of my cats; the one that doesn’t seem to mind wearing a collar.

Now there is one issue with the Tile device, the app has to be open on your phone to log the location, and blue-tooth has to be active with GPS, that can drain battery life.

At first I was a little despondent about this until I had an epiphany; I’ve found a use for my Nexus 7 🙂

I can leave the N7 at home each day charging and it can be used to track the cats coming and goings.

One tile left, and I decided with this one I’d track the most valuable thing I own, the car… well wife’s car really. So apart from hiding another Tile in the interior of the car I want to know where it is, and rather than relying on other Tile users having the app open I thought I’d use another of my redundant Nexus devices, my N4.

As a bonus I have access to a public wifi network for no additional cost, so the N4 doesn’t need to be using 3G / 4G data that costs $’s… If I were using this as a security device rather than an exercise in geek then I’d probably go with a prepaid sim card.

So now I get to keep track of a few important items, I’ll post an update on how long I keep having the app live on my main phone (N5x) when out and about; thinking I might be able to use Xposed to open the app on boot. Having the N7 always live while in the home is a big bonus and makes the Tile’s a usable solution for now.

I am off on an overseas grand tour later in the year, and am tempted to drop a tile in my luggage to keep track of it in transit. It will be cool to know when it’s arriving on the conveyor 🙂

Google Keep to Ubuntu

I’ve not been posting as often as I’d like due to the Android WordPress app not connecting… that’s another post.

What I have been doing over the last couple of days is dropping any stories that I like to Google Keep. This has to be the one mobile app that I find the most useful; from shopping, book, movie, games, and to-do lists, to inspirations, notes, and shit I must blog otherwise I’ll never think of the topic again 🙂

Trials of a 21st century digital life eh?

Google Keep is choice, but how do I access it from Ubuntu, I don’t even use Chrome?

Here’s a well explained guide from the Ubuntu Handbook: Install Google Keep in Ubuntu 14.04 Trusty

It does mean installing Google Chrome, not sure of any security risks, except the usual exposure to Google?

sudo dpkg -i google-chrome-stable_current_*.deb && sudo apt-get -f install

and voilà!

Robot Wars returns to the BBC in 2016

Robot Wars

With new technological advances making for an even more exciting and immersive experience, this is a fantastic example of the kind of content-rich factual entertainment that BBC Two excels at.

Robot Wars returns to the BBC in 2016 – BBC Media Centre

I’m quite stoked about the return of Robot Wars, although a pity Craig Charles probably won’t be hosting this season due to Red Dwarf commitments… pray they don’t [bring back Jeremy Clarkson!

The iconic entertainment show will return as a 6×60’ series and will feature a new structure with more robots, more battles and more science than ever before.

The new series includes a raft of technological advances since the show first aired over a decade ago, and viewers can expect to see more innovative fighting machines as teams of amateur roboteers battle it out to win the coveted Robot Wars title.

The show will be recorded in a new purpose-built fighting arena in Glasgow, allowing viewers to get even closer to the action, with state-of-the-art cameras capable of capturing every crushing, sawing and scorching moment in incredible detail.

Haha I imagine robots fueled on Buckfast[a drink with almost supernatural powers of destruction], wielding broken bottles, with names like FukU2 🙂

Hope there are cameos from Chaos2, Hypno-disk, and Razer; even better if they’re house robots.

Would also like to see George Francis (chaos george) as pit commentator.

Hard to believe there was never a successful Robot Wars video game created; I remember playing a couple although they weren’t too impressive. But times have changed and I’m sure some budding entrepreneur won’t let the opportunity slide this time around.

Robots ready!

yubikey-neo lock closed

So in a spurt of geekdom the other night I changed all of my passwords to work on a combination of different passwords for each login together with one of 2 static passwords, and 2 factor authentication, that I’ve set up on my new yubikey-neo.

Within 8 hours I had locked myself out of 2 Google accounts, a Reddit account, PayPal, and I’ve just gained access back to this blog 🙂

Think the secret is to do one at a time, acclimatise, then do another login credential.

I do love the functionality, and am just setting up KeyPass on my Linux box and Android devices, in the hope this will keep my passwords secure from my shitty easily distracted memory 🙂

On the up side I’ve been enjoying Metal Gear Solid V, and was treated to a surprise shower scene from Quiet this evening… nearly as good as the birthday FMV 🙂

Quiet Shower

I’ve maxed Quiet out to 100, and now she’s a formidable ally when armed with a silenced tranquilliser sniper rifle… need to now give the walker a run about and play a few missions guns blazing rather than stealth.

It looks like my twitter feeds from Yahoo Pipes have finally dried up; when I have the time and motivation I will set them up from another provider, I do kind of miss the constant geek news through the day.

remove all sheet and workbook passwords microsoft excel

Here is a script that I found this week that allows you to remove all sheet and workbook passwords in Microsoft excel, bonza!

Anyone that has worked in a corporate environment long enough will need this script, who has inherited reports from an employee who left the company 6 months before you arrived… or maybe just like to use it 🙂

Great news; it also works in the latest Office 2013.

Thanks to McGimpsey & Associates for making this VBA script available.

Read through this before implementation to get a better understanding od what it does, or just out of interest; the core script is not that complex, in fact it is the simplicity that is impressive 🙂

Press Alt + F11 and paste the below code into the editor and run as and when needed.

Public Sub AllInternalPasswords()
' Breaks worksheet and workbook structure passwords. Bob McCormick
' probably originator of base code algorithm modified for coverage
' of workbook structure / windows passwords and for multiple passwords
' Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1)
' Modified 2003-Apr-04 by JEM: All msgs to constants, and
' eliminate one Exit Sub (Version 1.1.1)
' Reveals hashed passwords NOT original passwords
Const DBLSPACE As String = vbNewLine & vbNewLine
Const AUTHORS As String = DBLSPACE & vbNewLine & _
"Adapted from Bob McCormick base code by" & _
"Norman Harker and JE McGimpsey"
Const HEADER As String = "AllInternalPasswords User Message"
Const VERSION As String = DBLSPACE & "Version 1.1.1 2003-Apr-04"
Const REPBACK As String = DBLSPACE & "Please report failure " & _
"to the microsoft.public.excel.programming newsgroup."
Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _
"now be free of all password protection, so make sure you:" & _
DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _
DBLSPACE & "Also, remember that the password was " & _
"put there for a reason. Don't stuff up crucial formulas " & _
"or data." & DBLSPACE & "Access and use of some data " & _
"may be an offense. If in doubt, don't."
Const MSGNOPWORDS1 As String = "There were no passwords on " & _
"sheets, or workbook structure or windows." & AUTHORS & VERSION
Const MSGNOPWORDS2 As String = "There was no protection to " & _
"workbook structure or windows." & DBLSPACE & _
"Proceeding to unprotect sheets." & AUTHORS & VERSION
Const MSGTAKETIME As String = "After pressing OK button this " & _
"will take some time." & DBLSPACE & "Amount of time " & _
"depends on how many different passwords, the " & _
"passwords, and your computer's specification." & DBLSPACE & _
"Just be patient! Make me a coffee!" & AUTHORS & VERSION
Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _
"Structure or Windows Password set." & DBLSPACE & _
"The password found was: " & DBLSPACE & "$$" & DBLSPACE & _
"Note it down for potential future use in other workbooks by " & _
"the same person who set this password." & DBLSPACE & _
"Now to check and clear other passwords." & AUTHORS & VERSION
Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _
"password set." & DBLSPACE & "The password found was: " & _
DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _
"future use in other workbooks by same person who " & _
"set this password." & DBLSPACE & "Now to check and clear " & _
"other passwords." & AUTHORS & VERSION
Const MSGONLYONE As String = "Only structure / windows " & _
"protected with the password that was just found." & _
Dim w1 As Worksheet, w2 As Worksheet
Dim i As Integer, j As Integer, k As Integer, l As Integer
Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer
Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer
Dim PWord1 As String
Dim ShTag As Boolean, WinTag As Boolean

Application.ScreenUpdating = False
With ActiveWorkbook
WinTag = .ProtectStructure Or .ProtectWindows
End With
ShTag = False
For Each w1 In Worksheets
ShTag = ShTag Or w1.ProtectContents
Next w1
If Not ShTag And Not WinTag Then
MsgBox MSGNOPWORDS1, vbInformation, HEADER
Exit Sub
End If
MsgBox MSGTAKETIME, vbInformation, HEADER
If Not WinTag Then
MsgBox MSGNOPWORDS2, vbInformation, HEADER
On Error Resume Next
Do 'dummy do loop
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
With ActiveWorkbook
.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If .ProtectStructure = False And _
.ProtectWindows = False Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND1, _
"$$", PWord1), vbInformation, HEADER
Exit Do 'Bypass all for...nexts
End If
End With
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
If WinTag And Not ShTag Then
MsgBox MSGONLYONE, vbInformation, HEADER
Exit Sub
End If
On Error Resume Next
For Each w1 In Worksheets
'Attempt clearance with PWord1
w1.Unprotect PWord1
Next w1
On Error GoTo 0
ShTag = False
For Each w1 In Worksheets
'Checks for all clear ShTag triggered to 1 if not.
ShTag = ShTag Or w1.ProtectContents
Next w1
If ShTag Then
For Each w1 In Worksheets
With w1
If .ProtectContents Then
On Error Resume Next
Do 'Dummy do loop
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If Not .ProtectContents Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND2, _
"$$", PWord1), vbInformation, HEADER
'leverage finding Pword by trying on other sheets
For Each w2 In Worksheets
w2.Unprotect PWord1
Next w2
Exit Do 'Bypass all for...nexts
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
End If
End With
Next w1
End If
End Sub