Failed RavenDB backup

I had a rather odd error with OctopusDeploy where the RavenDB backups were failing. Turns out the problem was because I had assigned 1 IPv4 address to OctopusDeploy and another IPv4 address for TeamCity. Oddly the RavenDB backup routine referenced the localhost address – 127.0.0.1, it appeared to be hardcode with no option other then changing port. This was especially weird as the OctopusDeploy service, was able to access it fine. To resolve – at least long enough to get a backup to migrate to v3 which uses SQL Server – was to setup a port proxy so accessing TCP port 10931 on the local loopback would resolve to the same port but on a the actual public IPv4

To do this run Command Prompt as Administrator (right-click, Run As Administrator) then type

netsh
interface portproxy
add v4tov4 listenaddress=127.0.0.1 listenport=10931 connectaddress={{your ip}} connectport=10931

Remember to replace {{your ip}} with the actual IP address

Swollen Business Objects database

Our new HR system uses SAP Business Objects for transactional reporting, as this was setup by our HR supplier we haven’t really got involved with it beyond writing a few custom reports, turns out we’ve written quite a few, so much so that the Business Objects CMS database has swollen to over 30 GBs. This, as you might have guessed, is causing a few performance problems. After a discussion with the supplier, we found out it was storing all the reports, even the ad-hoc one-off reports and we should have set a parameter to limit it.

After limiting it, the database still didn’t reduce the database size. A quick Google found someone saying that it is because it can’t handle over 1 million rows of old reports, which makes sense, running a SQL command that would delete over 30gb of data would have insane log file grow as well as massive performance problems.

The steps to resolve this, on MS-SQL, was to:

  1. Stop the Business Objects services on the app tier
  2. Ensure you have a backup of the database
  3. Set the recovery model to simple if it isn’t already
  4. Copy out all the required rows
  5. Truncate the table
  6. Re-insert the required rows back into the table
  7. Check everything looks ok, deal with the fact the database is now tiny
  8. Create another backup
  9. Start the app tier backup

New Azure features

Two new Azure features have caught my eye – the first is Logic App. In a nutshell this is workflow. You have connectors and you can add triggers and actions. So you could have a trigger on your HR system that when a new employee starts, it creates a user account then sends a welcome message to the existing staff informing them of the new starters.

The other is Data Catalog, this basically allows you to generate meta data about your data sources. Effectively this becomes your documentation, your point of reference when it comes data. This looks to solve a very real problem large enterprises have. Too much data, silo away.

Toshiba laptop update

Just an update to my previous post about the Toshiba Laptop, I’ve been thinking about reinstalling the Toshiba laptop with Ubuntu, but before I do that, I want a backup. Luckily, I still have the original 500GB hdd spare, I just need a USB caddy. Luckily my local Curry’s had a USB3.0 one (PNY SSD and 2.5″ Hard Drive Enclosure and Upgrade Kit), before anyone comments about how I could of got one cheaper off eBay, just remember, I was able to get it same day and it included Acronis.

Before I swapped the HDD out for a SSD, I ran a simple PowerShell script to get a list of installed applications, you can see the list here.

Desktop
Desktop
IE
Internet Explorer (Homepage)
hdd
HDD Warning

One of the problems with traditional HDD is the fact they have moving parts, if your moving your laptop around and you bang it, it can get damage, Toshiba have implemented a safely feature where when movement is detected it moved the HDD file header to a safe position. It make sound a little bit extreme, but when your talking about a disc that spins at over 4000 RPM and is wafer thin, you kinda get why they’ve add the feature. Personally, SSD is a better fix. No moving parts :)

Technical debt

I was talking to a colleague about one of our suppliers and the progress they were making on a new product they were developing. He was surprised to hear how little progress they appear to have made, they had previously been making huge steps in very little time with very few developers, especially surprising when they have been scaling up the development team over the past few months. I explained they are burning some of the technical debt they have collected whilst they still can. This of course then led to me explaining what I meant by using a common product, which then later prompted this tweet (which irony Capita hit the favourite button on)

For secondary schools who use SIMS .net – which is most schools in the UK – this can be simply be explained by Nova-T. Nova-T6 is a perfect example. Technically, it should be written in C#/.NET, however, there is a no business case, so it’s still a Delphi program. From a end-user perspective if they re-wrote it, they would gain nothing. Personally however, this still doesn’t mean it should be ruled out. It’s easier to maintain C# code when you have a small army of C# developers vs only a hand full of aging Delphi coders. Not to mention the advantage of C# over Delphi. The longer Capita leaves it, the more the interest costs them. Just look at some of the technical problems SIMS customers have had, it can all be tracked back to that technical debt. That debt that Capita needs to pay before the interest becomes to high.

Toshiba R50-B-12Q

UPDATE: I’ve detailed the Toshiba default build a bit here

At the beginning of the month I order a new laptop, for the past few weeks I’ve been wanting something more mobile then my desktop, at first I was toying with the idea of selling my desktop and picking up a new Surface. The new Surface 3 which starts at £419 seemed like a good idea what with its sexy full hd touchscreen, however when you scratch the surface (ha ha) it doesn’t look so go

  • Atom processor
  • 2GB RAM
  • 64GB storage

Not really something beefy enough to be a main computer, add the fact my Blu-ray player is SATA and currently housed in my desktop means I’d need to buy either a caddy or get a whole new external drive.  So I’m now looking at £700 for a half decent laptop, to get something to match my desktop, I’m looking at around £1200. So as you might have guessed. I ruled that out.

I end up looking at cheap laptops, ideally I was after something that was upgradable – I had a spare solid state drive and I wanted to be able to upgrade the RAM later if needed. Ideally I would like a Full HD (1920 x 1280) screen, unfortunately no-one seems to pack a nice screen on a cheap laptop, unless you want a Chromebook like Toshiba Chromebook 2. In the end it came down to the Lenovo ThinkPad E555 and the Toshiba Satellite Pro R50-B-12Q. In the end I let cost decide, the Lenovo was £50 more expensive (after the £50 cash back), so I went for the Toshiba. The Toshiba was just under £200 from Dabs. I also ordered a 4GB stick of RAM (Crucial part code: CT51264BF160BJ, Dabs quick: 8PQFWS00).
WP_20150509_002

The laptop came with a Windows 8.1 Pro license, which is about £100 for a OEM license. It comes with Windows 7 Pro installed and pretty clean build. There was a annoying bits, like a unregistered evaluation copy of WinZip and some annoying favourite websites but nothing as bad as what Lenovo has been installing by default. All the drivers appears to have been loaded via Windows Updates, I then created a installable USB pen drive as there is a no DVD drive on the laptop. You can download the Windows 8.1 installation media direct from Microsoft for free. Once you’ve download it, it will turn a USB pen drive into installation media.

Opening the laptop was simple, they are standard cross screws. This particular model doesn’t have a optical drive.

WP_20150510_001

I’ve removed the hdd, I could buy a caddy to use the empty optical drive space, but I’m not a fan of the old traditional spindle hdd, so it had to go, plus I might add a optical drive later. Its nice to had options.

WP_20150510_002

The hdd wasn’t actually screwed in place. Its just wedged in, I guess they call this shock absorbing technology. Seems to work pretty well.

One thing I will say is to be careful re-assembling it. I stupidly over tighten the screws and now have a few bumps under the keyboard.

Version Control

I’ve been thinking lately about the adoption of version control. One of the common fears of using version control is that its permanent. All mistakes are visible and are in fact, highlight. Originals are updated with new commits which detail only the change and a nice comment. There is no hiding mistakes. The thing is

Mistakes are what make us human.

Everyone makes mistakes, we need to accept that fact. In doing so we can move forward faster.

Keyboard mapping [SQL 2014]

I’ve been working on SQL Server 2014 lately and one of the annoying problems I’ve stumbled across using SSMS is that F5 no longer means execute the SQL query, it now means Debug. Which brings up an annoying popup (least for me) about configuring my Windows Firewall.

This can be changed in SSMS by going Tools > Customize… > Keyboard…

The default is:

Debug.Start (F5 (Global))

And the traditional is:

View.Refresh

You can also do it by setting it to Visual Studio 2010 Compatible