• Reverse engingeer MS SQL’s SA login

    From time to time, you may come across a Microsoft SQL serer that you can connect to, but don’t know the SA password to.

    The piece of software I support during my day job still uses the SA password for the initial installation.

    This script, assuming you can connect via Windows Authentication will generate an alter login statement with the current password, so in my usage it would be:

    • Use windows authentication to connect to SQL,
    • Run this script and grab it’s output
    • Change the SA password to our standard one
    • Install the software – this installs our own SQL users so we don’t need to use the SA password after this
    • Run the grabbed output from this script to set the password back to what the DBA had originally set it to
    SET NOCOUNT ON
    GO
    CREATE TABLE #sa_backup
    	(
    		 ServerName VARCHAR(45)
    		,Pass_Hash VARCHAR(514)
    	)
    
    DECLARE @PWD_varbinary  VARBINARY(256)
    DECLARE @PWD_string  VARCHAR(514)
    DECLARE @SID_varbinary VARBINARY(85)
    DECLARE @SID_string VARCHAR(514)
    DECLARE @tmpstr  VARCHAR(4096)
    
    SET @PWD_varbinary = CAST(LOGINPROPERTY('sa', 'PasswordHash') AS VARBINARY(256))
    SET @SID_varbinary = 0x01
    EXEC master.dbo.sp_hexadecimal @PWD_varbinary, @PWD_string OUT
    EXEC master.dbo.sp_hexadecimal @SID_varbinary,@SID_string OUT
    
    SET @tmpstr = 'ALTER LOGIN ' + QUOTENAME( 'sa' ) + ' WITH CHECK_POLICY = OFF; ALTER LOGIN ' + QUOTENAME( 'sa' ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED; ALTER LOGIN ' + QUOTENAME( 'sa' ) + ' WITH CHECK_POLICY = ON;'
    
    INSERT INTO #sa_backup
    SELECT @@SERVERNAME, @tmpstr
    GO
    SET NOCOUNT OFF
    
    SELECT * FROM #sa_backup
    
    DROP TABLE #sa_backup

    Source: SQLServerCentral.com

    This script won’t tell you what the SA password is of course, that’d be foolish, but it will let you change it and reset it back to what it was as outlined above

     
  • My first post….. in morse code!

    .-.. — .-. . — .. .–. … ..- — -.. — .-.. — .-. … .. – .- — . – –..– -.. — — .. -. –. -.-. — -. …- . -. .. .-. . ..- – –.- ..- .. .-.-.- -. — …. .. … — — -. . … –.- ..- . … .- .-.. ..- – .- – ..- … -.. .. … … . -. – .. .- … –..– -. . -.. ..- — -.-. — — – — -.. — -.. . .-.. .. -.-. .- – .- .-.-.- .- -. … .. – ..-. .- -.-. .. .-.. .. … .. … -.. . ..-. .. -. .. – .. — -. . … –..– .- –. .- — …- . .-. — … . -.. -. . .-.-.- ..- … ..- – . — .–. — .-. – .- — –.- ..- .- — – . — .–. — .-. .. -… ..- … – . .-.-.- .- -.. . … … . -. – … .- .–. . .-. . – -.-. ..- — –..– …- .. — . .. .- .-.. .. .. .- .-.. .. –.- ..- .- — .-.-.- — ..- -. -.. .. -. . -.-. . … … .. – .- – .. -… ..- … . .- .–. . .-. .-.-.- -. .- — .–. — … … . ..-. .- -… ..- .-.. .- … .. -. -.. — -.-. – ..- — .- – –..– ..-. . ..- –. .- .. – -.. .. … … . -. – .. ..- -. – –.- ..- .. -.-. ..- –..– -. . …- .. — .- .-.. .. .. . .–. .. -.-. ..- .-. . .. . .-.. .- -… — .-. .- .-. . – .-.-.- .- – – .- — –.- ..- .- — .- .–. . .. .-. .. .- -. .- -.-. -.-. ..- … .- — ..- … …. .- … .-.-.- .. -.. .- –. .- — .-. . –.- ..- . .- -. .. — .- .-.. — . .-.. –..– .- – — . .. . .-.. .. – .–. .-.. .- – — -. . — –..– -.. ..- — … .. -. – — . .-.. .. — .-. . -.-. — .-. .-. ..- — .–. .. – .. -. .-.-.- – . …- . .-. — .–. .-. — -… .- – ..- … … . -.. –..– . … – .-.. .- ..- -.. . — .-.. . –. . .-. . -.. — -.-. . -. -.. .. . – .-.-.- …- .. -..- . .- .- .-.. – . .-. .- -.. .. -.-. ..- -. – . .-.. — –.- ..- . -. – .. .- — .-.-.- -. — … – .-. ..- -.. -… — -. — .-. ..- — . .-. .-. — .-. .. -… ..- … .–. .-. .. .- -. –..– …- .. — .- – .–. — … … .. — -. — — .. -. .- …- .. –..– .. -.. …- .. … — . .. … …- .. …- . -. -.. — .-.-.- — . .. .– .. … .. — ..- -. . .-. . ..- – –..– .. ..- -.. .. -.-. — ..- .-. -… .- -. .. – .- … …. .. … – . –..– … .. – -.-. ..- .. -. . .-. — .. … –.- ..- .- . … – .. — -.. .. –. -. .. Read the rest of this entry »

     
  • Ajax now playing script for Shoutcast 1.9.8

    OK, so the fab new Shoutcast 2.0 is out, but for those of you who don’t want to upgrade, or pay the licence fee you need for MP3 streaming, here’s a script to display your now playing.

     

    This script checks to see if the current DJ is title streaming, our station has this set to “Live Default User” when no titles are being streamed. If the now playing is shown as that, then this string is hidden

     

    If you want a demo, check here. It’s purposefully not got any CSS or anything, so it will be easier for you to theme to your own site.

    The only things you should need to run this script is PHP and fsockopen allowed on the same port that your shoutcast server is on (especially if they are on different boxes)

    Save this file as playing.php

    <?php
    //Do not put http:// in front of the IP address or the script will not work
    $sc_url_ip = "YOUR SHOUTCAST IP ADDRESS"; 
    $sc_url_port = "8000"; 
    ////////////////////
    // END OF CONFIG AREA
    //
    // DO NOT EDIT BELOW
    // UNLESS YOU KNOW WHAT YOU ARE DOING
    ////////////////////
    
    function getNowPlaying($sc_url_ip,$sc_url_port)
    {
    
    $open = fsockopen($sc_url_ip,$sc_url_port,$errno,$errstr,'.5'); 
    	if ($open) { 
    	fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n"); 
    	stream_set_timeout($open,'1');
    	$read = fread($open,200);
    	$text = explode(",",$read);
    	if($text[6] == '' || $text[6] == '</body></html>'){ $msg = ' live stream '; } else { $msg = $text[6]; }
    	$text = '<strong>Now Playing:</strong> '.$msg; 
    	} else {  return false; } 
    	fclose($open);
    	
    	return $text;	
    }
    
    //////////////////
    
    //get the now playing
    $current_song = getNowPlaying($sc_url_ip,$sc_url_port);
    if(preg_match('/Live - Default User/',$current_song))
    echo " ";
    else
    print $current_song;
    ?>
    

    If you don’t want to check for what’s now playing and just display it regardless, change the end of the script to

    //get the now playing
    $current_song = getNowPlaying($sc_url_ip,$sc_url_port);
    print $current_song;
    ?>
    

    OK, now for the ajax part, because we want the script to automatically update, ours is set to 10 seconds here. I’ve named this file index2.php

    <script type="text/javascript">
    function loadXmlHttp(url, id) {
    var f = this;
    f.xmlHttp = null;
    /*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
    /*@if(@_jscript_version >= 5)
    try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
    @end @*/
    if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
    f.xmlHttp = new XMLHttpRequest();
    else if (/(object)|(function)/.test(typeof createRequest))
    f.xmlHttp = createRequest();
    else {
    f.xmlHttp = null;
    /*@cc_on @*/
    /*@if(@_jscript_version >= 5)
    try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
    catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
    @end @*/
    }
    if(f.xmlHttp != null){
    f.el = document.getElementById(id);
    f.xmlHttp.open("GET",url,true);
    f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
    f.xmlHttp.send(null);
    }
    }
    
    
    loadXmlHttp.prototype.stateChanged=function () {
    if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
    	this.el.innerHTML = this.xmlHttp.responseText;
    }
    
    var requestTime = function(){
    new loadXmlHttp('playing.php', 'timeDiv');
    setInterval(function(){new loadXmlHttp('playing.php?t=' + new Date().getTime(), 'timeDiv');}, 10000); //Time in milliseconds 10000 = 10 seconds //
    }
    
    
    
    if (window.addEventListener)
     window.addEventListener('load', requestTime, false);
    
    else if (window.attachEvent)
     window.attachEvent('onload', requestTime);
    
    </script>
    </head>
    	<script language="javascript">
    
    </script>
    
    <body>
    
    <div id="timeDiv">
    
    </div>
    

    So far so good!

    The last part of the script, is to simple insert a require where you want the now playing to actually display, (index.php for example)

    <?php 
    require ("./index2.php") ;
    ?>
    

    And there you have it, job done!

     
  • Script MS SQL users between servers

    Found this stored procedure for scripting MS SQL logins to move to another server, but the formatting was all over the place and refused to neatly copy and paste, hopefully this will be easier!

    USE [master]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE FUNCTION [dbo].[fn_hexadecimal]
    (
    -- Add the parameters for the function here
    @binvalue varbinary(256)
    )
    RETURNS VARCHAR(256)
    AS
    BEGIN
    DECLARE @charvalue varchar(256)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF'
    WHILE (@i BEGIN
    DECLARE @tempint int
    DECLARE @firstint int
    DECLARE @secondint int
    SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
     SELECT @firstint = FLOOR(@tempint/16)
    SELECT @secondint = @tempint - (@firstint*16)
     SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
     SUBSTRING(@hexstring, @secondint+1, 1)
     SELECT @i = @i + 1
    END
     return @charvalue
    END
    GO
    SET NOCOUNT ON
    GO
    --use MASTER
    GO
    PRINT '-----------------------------------------------------------------------------'
    PRINT '-- Script created on ' + CAST(GETDATE() AS VARCHAR(100))
    PRINT '-----------------------------------------------------------------------------'
    PRINT ''
    PRINT '-----------------------------------------------------------------------------'
    PRINT '-- Create the windows logins'
    PRINT '-----------------------------------------------------------------------------'
    SELECT 'IF NOT EXISTS (SELECT * FROM master.sys.server_principals WHERE [name] = ''' + [name] + ''')    CREATE LOGIN [' + [name] + '] FROM WINDOWS WITH
    
    DEFAULT_DATABASE=[' +         default_database_name + '], DEFAULT_LANGUAGE=[us_english]
    GO
    '
    FROM master.sys.server_principals
    where type_desc In ('WINDOWS_GROUP', 'WINDOWS_LOGIN')
    AND [name] not like 'BUILTIN%'
    and [NAME] not like 'NT AUTHORITY%'
    and [name] not like '%\SQLServer%'
    GO
    PRINT '-----------------------------------------------------------------------------'
    PRINT '-- Create the SQL Logins'
    PRINT '-----------------------------------------------------------------------------'
    select 'IF NOT EXISTS (SELECT * FROM master.sys.sql_logins WHERE [name] = ''' + [name] + ''')
    CREATE LOGIN [' + [name] + ']
    WITH PASSWORD=' + [master].[dbo].[fn_hexadecimal](password_hash) + ' HASHED,
    SID = ' + [master].[dbo].[fn_hexadecimal]([sid]) + ',
    DEFAULT_DATABASE=[' + default_database_name + '], DEFAULT_LANGUAGE=[us_english],
    CHECK_EXPIRATION=' + CASE WHEN is_expiration_checked = 1 THEN 'ON' ELSE 'OFF' END + ',
    CHECK_POLICY=OFF
    GOI
    F EXISTS (SELECT * FROM master.sys.sql_logins WHERE [name] = ''' + [name] + ''')
    ALTER LOGIN [' + [name] + ']
    WITH CHECK_EXPIRATION=' +
    CASE WHEN is_expiration_checked = 1 THEN 'ON' ELSE 'OFF' END + ', CHECK_POLICY=' +
    CASE WHEN is_policy_checked = 1 THEN 'ON' ELSE 'OFF' END + '
    GO
    '
    --[name], [sid] , password_hash
    from master.sys.sql_logins
    where type_desc = 'SQL_LOGIN'
    and [name] not in ('sa', 'guest')
    PRINT '-----------------------------------------------------------------------------'
    PRINT '-- Disable any logins'
    PRINT '-----------------------------------------------------------------------------'
    SELECT 'ALTER LOGIN [' + [name] + '] DISABLE
    GO
    '
    from master.sys.server_principals
    where is_disabled = 1
    PRINT '-----------------------------------------------------------------------------'
    PRINT '-- Assign groups'
    PRINT '-----------------------------------------------------------------------------'
    select
    'EXEC master..sp_addsrvrolemember @loginame = N''' + l.name + ''', @rolename = N''' + r.name + '''
    GO
    
    '
    from master.sys.server_role_members rm
    join master.sys.server_principals r on r.principal_id = rm.role_principal_id
    join master.sys.server_principals l on l.principal_id = rm.member_principal_id
    where l.[name] not in ('sa')
    AND l.[name] not like 'BUILTIN%'
    and l.[NAME] not like 'NT AUTHORITY%'and l.[name] not like '%\SQLServer%'
    
    DROP FUNCTION fn_hexadecimal
    

    If that still doesn’t neatly copy and paste for you, download the file here

    The author comments:
    Read the rest of this entry »

     
  • OK, let’s get one thing straight….

    It’ll be the first straight thing I’ve done in my life!

    <rant>If I help you out on a forum with a SQL script, a piece of PHP code, it’s because I’m doing it out of the goodness of my heart, it’s because I want to.

    Making me feel like I have an obligation to deconstruct a template that a lot of hours have gone into coding, designing and crafting, just because you want to use it on your own site and (basically) demanding that you deserve my assistance, isn’t going to happen, no matter how loud or long you shout.

    The template is there, use it, mutilate it, blow it up and put it back together again by all means, just don’t expect me to bend over backwards to help you, especially when you haven’t even tried to help yourself (you think some people have never heard of a little website called Google)

    Now my little rant doesn’t mean I’m not going to help people, not at all, just don’t think it is a right!

    If you want to have the right to my services to help you code your site, you pay the going rate of £40 GBP per hour which I think is reasonable for  PHP freelance work. </rant>

     
  • Ubuntu – Batch rename

    OK, so one of the biggest things people seem to find it a pain in the arse to handle when switching to Linux, is that most file systems are case sensitive.

    There are many theories behind this: Because it’s faster and easier for the OS to sort, because C is a case sensitive language, which most Linux distros are written in and I’m sure you could google many more.

    So music.Mp3 and music.mp3 can exist side by side, which can’t happen in Windows (Because it’s dumb and can’t handle case sensitive file names)

    So what if you’ve use a program to batch edit file names and you’ve accidentally changed all your mp3 files to Mp3?

    Simples! Open up the terminal, and cd into the directory (or if you’re lazy like me open the folder normally, right click on a blank bit and select ‘Open in Terminal’)

    rename -v 's/\.Mp3$/\.mp3/' *Mp3

    Job done!

     

    Of course there are programs out there that will do this through the GUI, but why waste time!

    A quick and simple answer on how to batch rename linux command

     
  • What powers me?

    OK, after recent developments, I thought I’d post a review about my webhosting company, PowerVPS.

    I’ve been with the company for 5 years now, and I have to say, I can’t fault them!

    Recently I’ve had trouble with Apache restarting at 0420 BST daily, which in itself shouldn’t cause a problem, unless you’re running shoutcast as one of your Apache users, so it was also killing off any child processes owned by that user (and rightly so)

    After a bit of digging, I wrote a script to automatically restart shoutcast, but that wasn’t really fixing the root cause.

    PowerVPS to the rescue! Not only did they take ownership of the problem, they kept me informed every step of the way, making sure it was OK to do some testing, which in itself might restart Apache, and the problem was soon rectified.

    Now, I will admit, I have shopped around from time to time, and yes, there are other providers out there, but for the price (I’m on their Fuse starter package  at $60 USD a month (or £35 quid if you prefer) and the specification of the server, you really can’t do much better.

    Even if I did find someone who was able to offer me a cheaper deal, I still wouldn’t switch due to the amazing support and service from the PowerVPS guys. Even if you log a ticket as non-urgent, which you might think would take them a few days to respond to, the response is usually the same day.

    Price, features, performance, support, and importantly uptime, there’s none better.

     
  • EDF Customer Service (or distinct lack thereof!)

    OK, so major suppliers are withdrawing the old style card operated prepayment meters, replacing them with key meters, so far so good.

    Earlier this week, we received a letter about it and asking to call them to discuss it and book an appointment, again, so far so good, and a call back was arranged.

    ONE attempt was made which I  missed, no problem, they booked an appointment and sent another nice letter about it.

    Now, given the fact that I wanted to discuss going over to a normal credit meter, as the card one just happened to be here when we moved in a few months ago, I phoned them up. Knew they were going to be busy, but it’s a freephone number so that’s OK. 10 minutes, 20 minutes, 30 minutes someone answers, and then promptly hangs up.

    Getting rather miffed by this point, I promptly call back, 10 minutes, 20 minutes, 30 minutes and hurrah! I’m through, to someone who has about as much idea of what I’m talking about as their office cleaner.

    10 minutes into the call he tells me that an appointment has been made (yup, know that bit already) and that I don’t need to do anything. No, I want to discuss what type of meter you’re installing.

    “Ahhh…… we’ll need to install the key meter before we can switch you over to a credit meter”

    What the hell? How is that business sense to send someone out twice?

    So, he then tells me he’s putting me on hold

    Call me old fashioned, but I was always trained to gain the customer’s agreement before putting them on hold?

    5 minutes later, he tells me that he’s spoken to his manager (who just happened to be the one who sent the letter, first time that’s ever happened) but she’s on a break and will call me back.

    Just had the phone call back, so that’s something I suppose.

    Exceptional customer experience?

    Nope, think I’ll use this as an example of bad customer experience when I’m next talking about the subject at work…….

     
  • Auto restarting Shoutcast 1.9.8

    OK, so I have a problem where Apache is restarting at 4am every morning (0420 to be precise) which is fine, no problem, apart from the fact that it also kills processes owned by apache users (Cpanel username), namely Shoutcast.

    OK, this can be solved by restarting sc_serv, but who wants to do that at 0400 every day?

    So, here is my solution (Assuming you’re running the script from the same directory sc_serv and sc_serv.conf are in)

    
    #!/bin/sh
    PORT="8000"
    PROCESS=`netstat -tulpn | grep :$PORT`
    if [ "$PROCESS" = "" ]
    then
    # Not found - start process
    ./sc_serv 8000.conf &
    echo "Shoutcast on port $PORT started at $(date)" >>/home/results.txt
    else
    # Found it - don't do anything
    echo ""
    fi
    
    

    Save it as xyz.sh.

    I’m sure that there are more elegant scripts around, but it should sort the problem, especially if you set it to run as a cron job.

    Read the rest of this entry »

     
  • PHP Error_log… how do you eat yours?

    OK, so we all know that PHP is great for logging errors, and generally you don’t want to disable logging, as you won’t know what’s going wrong.

    You can limit your PHP log size, but personally, I don’t want to do that either, I’d rather review them periodically, even if they are large.

    So what to do, on a server that hosts multiple accounts? (And every directory on every account could, in theory have it’s own ERROR_LOG file)

    You want to review the logs, not limit the size, but need to tidy them up from time to time?

    Read the rest of this entry »

     
  • Sparkle sparkle sparkle!

    My amazing baby hobbit!

     
  • Database connections

    Frequently I’m asked, why do I need to open an exception to my firewall, or configure port forwarding on my router.

    The answer is simple. Adding an exception to your firewall allows traffic through, be it a port, or an executable.

    But what if your database is not on the same machine as your web server (which is quite common for radio automation software)

    Think of it like this, one full tank of water and one empty tank connected by a pipe (port) with a tap at each end (firewall). You open one tap (eg opening port 3306 on the firewall on your server) water can flow out one end but not into the other tank, it’s blocked.

    Close the tap again and open the other one, you have the same problem but in reverse, the traffic is blocked at your SQL machine but not at your server.

    You can probably see where I’m going with this, but unless you have both taps open, at the same time, can water (data traffic) flow freely on this port.

    OK, so that’s firewalls, and why you need them open on ports you plan to use.

    Now, port forwarding, why do we need this?

    Port forwarding can be demonstrated using a similar analogy.

    We want our port to be forwarded to a specific computer.

    Imagine this time, a large tank of water, connected to 3 empty tanks. Only one of these has a fish in it. We need all the water from the large tank to fill the tank with the flapping fish in it.
    Now that you’ve opened the taps, the water can flow freely, but it’s going to go to all the empty tanks, not just the one with the fish in it.

    Enter port forwarding. Once you’ve got this configured, you’ve effectively blocked the water from flowing to the other two tanks, so all the water will flow freely into the tank with the fish in it.

    Congratulations on saving the fish*!

    A very hastily drawn diagram shows what I’m wittering on about.
    If you have a problem at any one of A, B or C, then it’s simply not going to work!

    *No fish were harmed in the production of this post.
     
  • Preloaded

    No, not a post about getting pissed before you go out (or whatever else crossed your mind!)

    I’m talking about the utility preload, a bit like Superfetch for Windows, and obviously it’s not going to do much for a server.

    OK, so it’s going to add a few seconds your boot time, but if general app startup speed is more important once your system has booted, this is a must.

    sudo apt-get install preload

    It’ll take 2-3 days to work out what you use the most, and improve the start up times of those applications and if you’ve more than a gig of RAM then the following tweaks are also worth checking out:

    sudo pico /etc/preload.conf

    Change

    memtotal = -10

    to

    memtotal = 0

    and change

    memcached = 0

    to

    memcached = 50

    Reboot for this to take effect, and that’s job done!

     
  • Bye bye MonkeyPigs Web Services

    I have a hand full of customers, I cover my costs. I enjoy the relationship I have with those customers, so therefore, I am no longer taking on any new customers.

    If you are a current paying customer please be assured that there will be no changes to your service, or that I will stop hosting, I won’t stop hosting, and that your current and future plans with me remain unchanged.

    The decision to do this has not been taken lightly, and has in fact been made to allow me to concentrate on the projects that matter to me (That’s Tim, Harry, Jonathan, Andy with their sites, sights, and goals.)

     

     
  • Disclaimer

    Terms and Conditions:This website  is meant for educational purposes only. Any resemblance to real persons living or dead is purely coincidental. Void where prohibited. Some assembly required. List each check separately by bank number. Batteries not included. Contents may settle during shipment. Use only as directed. No other warranty expressed or implied. Do not use while operating a motor vehicle or heavy equipment. Postage will be paid by addressee. Subject to CAB approval. This is not an offer to sell securities. Apply only to affected area. May be too intense for some viewers. Do not stamp. Use other side for additional listings. For recreational use only. Do not disturb. All models over 18 years of age. If condition persists, consult your physician. No user-serviceable parts inside. Freshest if eaten before date on carton. Subject to change without notice. Times approximate. Simulated picture. No postage necessary if mailed in the United States. Please remain seated until the ride has come to a complete stop. Breaking seal constitutes acceptance of agreement. For off-road use only. As seen on TV. One size fits all. Many suitcases look alike. Contains a substantial amount of non-tobacco ingredients. Colors may fade. We have sent the forms which seem right for you. Slippery when wet. For office use only. Not affiliated with the  Red Cross. Drop in any mailbox. Edited for television. Keep cool; process promptly. Post office will not deliver without postage. List was current at time of printing. Return to sender, no forwarding order on file, unable to forward. Not responsible for direct, indirect, incidental or consequential damages resulting from any defect, error or failure to perform. At participating locations only. Not the Beatles. Penalty for private use. See label for sequence. Substantial penalty for early withdrawal. Do not write below this line. Falling rock. Lost ticket pays maximum rate. Your canceled check is your receipt. Add toner. Place stamp here. Avoid contact with skin. Sanitized for your protection. Be sure each item is properly endorsed. Sign here without admitting guilt. Slightly higher west of the Mississippi. Employees and their families are not eligible. Beware of dog. Contestants have been briefed on some questions before the show. Limited time offer, call now to ensure prompt delivery. You must be present to win. No passes accepted for this engagement. No purchase necessary. Processed at location stamped in code at top of carton. Shading within a garment may occur. Use only in a well-ventilated area. Keep away from fire or flames. Replace with same type. Approved for veterans. Booths for two or more. Check here if tax deductible. Some equipment shown is optional. Price does not include taxes. No Canadian coins. Not recommended for children. Prerecorded for this time zone. Reproduction strictly prohibited. No solicitors. No alcohol, dogs or horses. No anchovies unless otherwise specified. Restaurant package, not for resale. List at least two alternate dates. First pull up, then pull down. Call toll free number before digging. Driver does not carry cash. Some of the trademarks mentioned in this product appear for identification purposes only. Objects in mirror may be closer than they appear. Record additional transactions on back of previous stub. Unix is a registered trademark of AT&T. Do not fold, spindle or mutilate. No transfers issued until the bus comes to a complete stop. Package sold by weight, not volume. Your mileage may vary. Known as Hellman’s east of the Rockies. Beware of greeks bearing gifts. Beware of gifts bearing greeks. This side up. Don’t take any wooden nickels. Don’t take candy from strangers. Void where prohibited. Caveat Emptor (Buyer beware) Caveat Vendor (Beware of street people). Donde esta el bano. Beware of DOS. Look both ways before crossing the street. All your base are belong to us. Always wear safety belt. Always wear deodorant. Don’t forget to breathe. If you park, don’t drink…accidents cause people. This supersedes all previous notices.This modified disclaimer may not be copied without the expressed written consent of whoever I stole it from.

    DISCLAIMER

    Read the rest of this entry »

     
  • MyShinyEye

    OK, you know I don’t often write website reviews that often, but I thought I’d make a post today about one I came across last week, myshinyeye.co.uk – the name itself lured me in as you know I like shiny toys!

    On Wednesday I decided to order a set of new speakers and they’ve arrived today!

    Black and glossy they perfectly complement my monitors and have a fantastic sound built into such a small size.

    The fact that you get free (swift) postage, combined with a little gizmo to keep your headphones tangle free with every order makes it even sweeter!

    If you’re looking for any accessories for any Apple mobile device at a reasonable price place to go!

    First class service and I’ll definitely be buying from them again in the near future!

     
  • Checking battery state……

    If you’re upgrading Ubuntu to 12.04 and your system hangs on “Checking battery state” after the update, fear not!

    Press Ctrl-Alt-F1 to open the console and do

    sudo apt-get install gdm

    Once it’s installed, select GDM (as opposed to lightdm) on the config screen and reboot!
    Job done.

     
  • Shiny new toys!

    OK, so you know we’ve rambled on about LED bulbs before but our two latest additions have just arrived today.

    The first is a set of RF remote controlled LED strips, just over 2m in length comprising of 4 x 520mm strips.

    We planned to use them as downlighters behind a pelmet on the ceiling, however we’ve just decided to have them under the windowsill instead.

    Beautiful, bright and brilliant, just what we wanted! Have a mosey over to Amazon and take a look

    Our second order, also LED related, was a replacement for a disco light that takes a 50W halogen bulb, the case usually gets too hot within seconds of use.

    Replaced with a 2.$W LED bulb, equivilent to about 20W and it’s almost as bright, using a fraction of the energy, and cool as anything! Can’t wait till a 5 watt one comes out so we can see how bright the light is with that! This one can be found on Amazon here

     
  • Woah! Where did the time go?

    Is it really 5 months since I last updated my blog? Shit!

    Well since then there has been a lot of activity in our lives, we’ve moved house has got to be the biggest change, it was a long struggle, but finally we made it, and all thanks to the most special wonderful amazing man in my life for giving me the kick up the arse I needed!

     
  • The death of the 60 watt bulb

    The EU has recently banned the production of 60watt light bulbs. (See http://www.bbc.co.uk/news/uk-14743785) Yes you can still buy them, as long have shops have stock.

    So, in the light of this, and a much heated debate on low energy saving bulbs on the BBCs facebook page, I thought I’d disseminate some of the myths about energy saving and low energy bulbs.

    Read the rest of this entry »