The ruby ODBC & TDS gems took quite a version jump after upgrading and required a newer version of FreeTDS than was available via the apt repositories (debian backports was no help either). As a result the only option is to fetch, compile and install freetds yourself. It's always nice to have things configured in an easily reproducible way and so this little script performs the necessary. Simply adjust the version variables (V) and execute the script as root. You should of course ensure you've removed the native freetds-common and freetds-dev packages before you do this. I hope you find it useful.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Note as indicated in the script above, if you're receiving a client library returned TDS_INT_CANCEL error during connect then this is probably related to the openssl ciphers you're using. You should adjust the ciphers used on either your server or client library so they're compatible.
]]>Of course, as is common with small to medium sized businesses - whatever works gets used at least until it breaks and so there's a lot of these systems still being used in production today. A long standing client of mine had to recently go about upgrading their primary Microsoft SQL database server and while the server had been providing many years of reliable uninterruptable service it was just starting to become problematic. The final straw was when the PSU suddenly failed one night. The PSU was replaced but it was time to upgrade to a newer machine. A new poweredge server was purchased from Dell Computer Corp. Then the fun and games began...
Bear in mind we're talking about a small 'mom-and-pop' style business here and in order to survive, thrifty is the name of the game. They will typically run whatever technical solution they can get away with for as long as they can get away with it. The old server was running Windows 2000 - not a big problem thou since the sole purpose of the server is just to run SQL server. This meant the new server was providing a massive leap forwards in terms of the technology which would be used. Installing Windows 2000 was no-go at this stage so we had to look at what our options were. Purchasing a newer version of Windows meant more cost for them. I had recently read the news of Microsoft releasing the first 'stable' release of SQL Server 2017 for Linux. It seemed like the perfect opportunity to go test the waters.
The latest copy of Debian Linux was installed on the server and Microsoft SQL Server for Linux was then installed. Here was the test.. I restored a copy of the live database from the SQL Server 2005 instance to the 2017 instance running on Linux. The restore operation went without a hitch - impressive! Next up was the real test thou, I reconfigured one of the existing POS systems to point at the SQL 2017 database running on the Linux server. The application started up like it didn't even realise anything underlying had been changed. So far, so good!
A further barrage of real world tests were conducted and everything seemed to work like the database server was still running on Windows. Seemed to good to be true so for the next couple of weeks I ran the two systems side by side in case we needed to fallback in the event of something going wrong, but nothing did go wrong. Everything worked without a hitch. All the machines on the network functioned exactly how they did as if they were still being supported by a database server running Windows. I don't often tip my hat to Microsoft but you have to hand it to them - it's pretty amazing that you can migrate such a complex piece of software from one OS to another and have it work almost exactly the same. Yes, I've read the technical details of how they architected a platform abstraction layer so they could re-use much of the existing code but it's still an incredible achievement nonetheless.
It's been over 6 months now and the Linux server running SQL server 2017 is actually more stable than the Windows one was. There's no need for a clunky UI and everything is accessible remotely via a terminal which makes it even easier to support. The backup application which was used on Windows was dumped and replaced with a shell script run via cron which performed the necessary. Mozy Pro cli then takes care of the offsite backup aspect.
This was just one of those times a crazy plan came together and went off without a hitch. I felt I had to write about it here since during the migration process I actually found there wasn't much information on the internetz about SQL Server on Linux. The conclusion: it works, and it works really well too!
]]>So I'm making a conscious effort to get back to bloging at least on a semi regular basis. Here's hoping I can stick to that commitment!
For the last 5 years I've been travelling the world leading the life of a digital nomad, hopping from one country to another, exploring this fabulous planet we share. As I write this blog post I'm currently travelling by bicycle ("bikepacking") across the north coast of Italy. The starting point for this trip was the North Coast of France and so far it's taken over 2000km. By the time it's over it will probably be a further 2000km and I'll be somewhere in Germany. At that point I'll pack the bike in a box and fly it back to Ireland.
In case you're unfamiliar, bikepacking is not like your typical road riding cycling affair. Normally you utilize a sturdier (and as a result heavier) bicycle which is typically loaded with panniers which contain your stuff (clothes, laptop, etc.). In my case it's a trusty steel framed "Sutra" bike from Kona cycles. It's not possible to race around the place with this type of configuration as you're just carrying too much weight -- average speed is around 20km/ph, depending on terrain of course. This is my bike:
At least in terms of this blog, I plan on keeping it up to date with the usual type of material; technical articles relating to topics I encounter on a day to day basis as well as topics of interest to me; e.g. digital privacy & security.
]]>To reiterate, this was done all without GPS services and without Spitz requesting his movements be tracked — it was automatically generated simply by his mobile phone communicating with cell phone towers. It very much goes to show the importance of regulations that limit retention periods for this kind of data, given how detailed a reconstruction can be made of an individual’s life.
]]>If this move leaves you high and dry then perhaps something like Cabbage Texter will work instead?
Thanks for using TextBuddy!
]]>Assuming you're running a current version of Debian or a derivative then iptables will already be present on your system. One of the first things to
take note is that iptables won't hold its ruleset during a reboot so to start off this tutorial the first thing I ensured was
that the ruleset will be restored when the machine is rebooted. So, as root I edited /etc/rc.local
and before the exit line i added /etc/iptables-init
. Because this was a fresh install my rc.local ended up looking like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Next, I created the script which we've setup to be executed from rc.local:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
Finally, I set the script executable and executed the script now to load the new rules in to iptables:
1 2 |
|
And that's it! Remember - it's always good to test your configuration from a remote host or better still from a 'bad' remote host and a 'good' (whitelisted) host.
REMEMBER: The above script is just an example! You should modify the script to meet YOUR needs (as it stands this met mine) but it still serves as a useful starting point. It should also be noted that ICMP ping replies will be blocked using the above setup - this may not be desirable but in my case it was!
]]>To know how good you are at something requires the same skills as it does to be good at those things. Which means if you're absolutely hopeless at something, you lack exactly the skills that you need to know that you're absolutely hopeless at it. And this is a profound discovery - that most people who have absolutely no idea what they're doing, have absolutely no idea that they have no idea what they're doing.
It explains a great deal of life.
...
It also explains why so many people in charge of so many organisations have no idea what they're doing, they have a terrible blind spot.
Watch the video here:
]]>I plan to post again soon, this time with something more substantial until then I'll leave you with my "tune of the trip", "Black Ash Veil" by Apparat:
]]>I recently upgraded to the latest version of Chromium (aka Google Chrome) and noticed that the folks at Google have decided to drop the http:// prefix from the "omnibox":
CNet reported this back when the feature first appeared in the developer beta's but I must say I'm surprised at the results I found in the following article:
Really? You'd prefer to see the http:// stay?
In my opinion, dropping it is one of the best damn things they have ever done because in this day and age, it's no longer necessary. It just doesn't matter anymore because the web is all about http:// now. It's implicit and the UI should mirror this - people don't need to know about it. I recall what my good friend anto once said...
This is just one of the things which makes Chrome stand out from all the others, Jeff Atwood recently wrote that
Chrome was a completely respectable browser in V1 and V2. The entire project has moved forward so fast that it now is, at least in my humble opinion, the best browser on the planet. Google went from nothing, no web browser at all, to best-of-breed in under two years.]]>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
If you don't plan on using the dl() method to load this module dynamically then you may need to modify the php configuration so it autoloads the pdf.so extension.
]]>I'm using a Lenovo Thinkpad T400 which has a synaptics based touchpad. This fix only works if you're using a synaptics based touchpad! If you're not using a synaptic touchpad then this fix probably won't work for you.
First off, we need to edit our xorg.conf at /etc/X11/xorg.conf. I appended the following to my file since I had not Mouse based input device section:
1 2 3 4 5 6 7 |
|
if you have an input device section then you'll need to ensure it features the same Option and Driver lines as above.
Once you've made these changes you'll need to restart the X server. You can do this using
1
|
|
or alternatively kill the X server using ctrl+alt+backspace and let gdm bring it back up. BEFORE we restart the X server, let's setup a tapping delay. I created a xinitrc file at ~/.xinitrc and put the following in it:
1 2 |
|
You can experiment with different delays once you've restarted your X server by executing the two lines above from within your .xinitrc (or simply re-execute ~/.xinitrc). Half a second turned out to be the perfect delay for me but it's entirely down to your own preferences.
Have fun!
]]>Removing Pulseaudio in Karmic means you lose some sound related gnome goodness. You lose the volume control applet (aka speaker icon) and the hardware keyboard volume control keys stop working too. The OSD that normally displays when you volume up/down/mute also disappears. Really, I didn't care about this loss, since I never use the graphical mixer anyway - that's kinda the point of having the hardware volume keys, isn't it ? The OSD is just bling, and I could live without it as long as I could just get the hardware keys working.
And so here's what I ended up with - hardware keys work and the increment/decrement of the up/down buttons is now configurable. I don't have an OSD and I don't have gnome sound volume control applet anymore. If like me, you want to remove Pulseaudio no matter what, then follow these very gratifying steps:
Use Synaptic via System » Administration » Synaptic Package Manager or sudo apt-get remove --purge pulseaudio
from the shell
Disable the gnome keyboard volume related shortcuts since they are pulseaudio dependent and will no longer work. Go to System »Preferences » Keyboard Shortcuts and disable the three volume shortcuts (up, down and mute). You can disable a shortcut by clicking on the line and then pressing the backspace key (i.e. backspace, NOT the key on your keyboard labeled 'delete')
I use compiz, so I opted to setup custom commands with custom keyboard bindings using the compizconfig settings manager. If you don't use compiz, then you'll need to configure the keybindings in whatever you use. If you are using compiz go to System » Preferences » CompizConfig Settings Manager. Then go to Commands and setup your keybindings like this:
Keep in mind you can easily attach these commands to edge or button bindings too. Keyboard bindings is all I wanted thou:
The jbw-mute-audio is a small shell script which uses amixer to check whether the audio is muted or not and then mutes/unmutes accordingly:
#!/bin/sh # Mute or unmute # jbw Mon, 08 Feb 2010 (amixer sget Master | grep '\[off\]' && amixer sset Master unmute) \ || amixer sset Master mute
Save the above script and customize it accordingly (man amixer). Don't forget to chmod the script so it's executable.
That's it! Enjoy life without Pulseaudio woes!
]]>Have fun!
]]>What kind of maintenance lasts 96 hours anyway? Couldn't they leave the old site in place until they're ready to launch the updated version? It bamboozles me how companies of this size can get away with this kind of thing.
]]>Having used this configuration for the last few weeks, things have now evolved a little further. The folder layout on *nix machine "feels right" compared with Windows. All of "your stuff" is stored in your home directory -- which means that there's less emphasis on "the desktop", giving me the opportunity to easily keep it organised. Grouping all current desktop icons into logical groups (directories), I arranged them around my screenlets. I figured this is the best approach since all the useful bits (screenlets and icons) are all in one place. I disabled the nautilus (using gconf -> apps > nautilus > desktop preferences) desktop trash icon since I have a screenlet taking its place instead.
My only regret now is that when I built this machine I went with an ATI graphics card. ATI's Linux support sucks, the official proprietary drivers (the dreaded ``fglrx'') suck and the opensource radeon/radeonhd drivers aren't much better. Video performance is now the only major bottleneck on this machine and to "solve it" I decided I'd live with some high quality albeit closed-source drivers from nVidia -- an nVidia GTS 250 is on its way to me as I type.
]]>Many things have changed under the hood, in addition, it handles larger multiline texts much more gracefully, and also remembers the last window size and position. I discovered that Vodafone support was broken for quite sometime (as a result of a recent vodafone.ie update) this is now working again.
Get it while it's hot - you can download it here.
]]>The big thorn in the heel for WebDevelopers, Internet Explorer still remains at large with a 60% holding while Opera, Chrome and Safari are all below 5%.
]]>If you receive this error then it's most likely that you've built subversion with the STATIC make option. Building a static version means that no shared libraries will be built and this is the reason you get the svn_client-1 does not exist error. The solution is to:
cd /usr/ports/devel/subversion && make config
Ensure you untick the STATIC option then rebuild and reinstall the subversion port. Once you've done this you can return to your trac build and live in happiness once again.
]]>