DST

Daylight Saving Time

According to this server

Sat, 25th Nov 2017, 00:17:13 AEDT Australia/Sydney (1511529433)
This timezone is currently in daylight saving time.
Daylight saving time began on: Sun, 1st Oct 2017, 03:00:00 AEDT
Standard time begins on: Sun, 1st Apr 2018, 03:00:00 AEST
In Sun days, on Sunday morning at 02:00:00 (2:00 AM), the clocks need to be put forward 60 minutes.

I have always thought there would have to be a programatic way of determining when daylight saving started and finished. I know that it’s an arbitrary date and it’s subject to change, but I knew there would be a way to somehow look it up.

I’ve been looking for this before and never really came across anything and even when looking at the date/time functions in php, and even though gettimezone retrieves the current timezone (including whether or not DST is currently in force or not), it didn’t do much to solve the “when does it start next” problem.

Then one day I was playing in the backend of a website and I noticed there was two lines of text under the timezone information that was intriguing:

DST Info

I opened up the trust text editor and went fishing inside the server.

Now, I’m pretty sure I’ve seen timezone_transitions_get before, but for whatever reason, something never clicked. It’s EXACTLY what I was looking for!

In the DateTimeClass there are a myriad of functions to do with what the offset from UTC is, what effect DST has on the timezone, is it in effect now, amongst others; including get_transitions. This returns all the DST transitions for the time zone, past and future.

The only caveat ere is your version of php would have to be reasonably up-to-date in the event that a local government changes when DST will start and finisg. and although that probably wouldn’t be too often, it’s something that still must be considered.

This snippet I’ve created here isn’t perfect, it’s just bits and pieces cobbled together and it does need a good cleaning out. However, I’ve included it here and it’s available to you if you’d like to use it under the MIT license.

add_shortcode('DST_Info', 'mad_dst_info');

function mad_dst_info(){
$r = "
<style>
table {
  border-collapse: collapse;
}
td {
  text-align:center;
  padding:10px;
  border: 2px solid black;
}
</style> \n"  ;


$day    = 1;
$month  = 1;
$year   = 2018;

$time = mktime(12,0,0,$month,$day,$year);

$time = gettimeofday(time(),true);
  
function _t1($arg) {
 return "  <tr><td colspan='2'> $arg </td></tr>\n";
}
function _t2($arg1, $arg2) {
 return "  <tr><td> $arg1 </td><td> $arg2 </td></tr>\n";
}

$my_format="D, jS M Y, H:i:s T ";

$current_offset = timezone_offset_get();
$tzstring = ini_get('date.timezone');
$tzstring = "Australia/Sydney";
date_default_timezone_set($tzstring);

$r .= "<table>";
	$r .= _t1("<h2>According to this server</h2>");
	$r .= _t2( date($my_format, time()) , "$tzstring (".time().")");

	$check_zone_info = true;

    // Set TZ so localtime works.
    date_default_timezone_set($tzstring);
    $now = localtime(time(),true); ////////////////////////////////////////////////////////////////////////time(), true);
    if ( $now['tm_isdst'] ){
		$r .= _t1("This timezone is currently in daylight saving time.");
    } else {
		$r .= _t1("This timezone is currently in standard time.");
    }
    $allowed_zones = timezone_identifiers_list();

    if ( in_array( $tzstring, $allowed_zones) ) {
      $found = false;
      $date_time_zone_selected = new DateTimeZone($tzstring);
      $tz_offset = timezone_offset_get($date_time_zone_selected, date_create());
      $right_now = time(); ///////////////////////////////////////////////////////////////////////////////////time();
      foreach ( timezone_transitions_get($date_time_zone_selected) as $tr) {
        if ( $tr['ts'] > $right_now ) {
            $found = true;

          break;
        }
        $tr_old = $tr;
      }

      if ( $found && $tr['offset'] != "UTC") {

        $message = $tr_old['isdst'] ? 'Daylight saving time began on: ' : 'Standard time began on: ';
          $r .= _t2( "  $message ",date($my_format , $tr_old['ts'] + ( $tz_offset - $tr_old['offset'] )));

        $message = $tr['isdst'] ? 'Daylight saving time begins on: ' : 'Standard time begins on: ';
          $r .= _t2( "  $message ",date($my_format , $tr['ts'] + ( $tz_offset - $tr['offset'] )));
		
		$damxdaystogo = date("D" , $tr['ts']);
		$damdayofweek = date("l" , $tr['ts']);
		$damtimeofday = date("H:i:s (g:i A)" , $tr['ts']);
		$damadjustment = ($tz_offset - $tr['offset'])/60 ;
		$dambackforward = ($damadjustment < 0) ? "back" : "forward";
		$message = "In $damxdaystogo days, on $damdayofweek morning at $damtimeofday, the clocks need to be put <em>$dambackforward</em> $damadjustment minutes.";
		  $r .= _t1( "  $message ");
		
		
      } else {
        $r .= _t1( 'This timezone does not observe daylight saving time.' );
      }
    }

    // Set back to UTC.
    date_default_timezone_set('UTC');
    date_default_timezone_set($tzstring);
	$r .=    "</table>";
  return $r;
}

Tooth be told

I’ve never had a tooth out before.

In fact, it’s been over 25 years since I’ve even been to the dentist!

Not because my teeth are great or anything. Truth be told, they’re quite in need of some work. But after a couple of weeks of intense facial pain that has caused endless sleepless nights, I went and had the tooth taken out.

I’ve jumped out of aeroplanes, and broken my leg… but nothing prepares you for the fear and adrenaline of a dental visit

I saw the dentist last week and was given the option: root canal over 2-3 visits totalling ~$1500 plus a required crown at some point (about the same price again), or pull the bugger out in one visit for a couple of hundred.

Not that finances play a big part in the decision (although it does help), the decision was almost made for me. The torture of 3+ dental visits vs 1 and the jobs done.

It’s a no brainer.

I’ve just got home. I still can’t talk properly. My mouth, jaw and gum feel like they’re as big as a tennis ball. I feel like I’m drooling all over the place and keep wiping non existent blood and saliva from my bottom lip while at the same time try and wet my teeth because my mouth feels so dry. It’s a flurry of mixed emotions.

I’ve jumped out of aeroplanes, I’ve broken my leg jumping off mountains, I’ve even been in some pretty life threatening situations, but nothing prepares you for the fear and adrenaline of a dental visit.

As he’s inserting the needle I realised my head is pushed back into the headrest with so much force that my neck was tensing up. My hands were clenched on my stomach squeezing my phone so hard that I felt Apple phones may not be as strong as we think they are.

And that needle! Oh My GOD! How far in does that go?

It never seemed to stop. Any further and I’m sure it was going to come out the other side.

It was funny to watch someone grab a huge set of pliers (ok, he called them forceps) and start pulling at the tooth. Wiggling it this way and that, around and round in large circular motions, I’m just waiting for the inevitable THWANG (my effort to literally relate the sound of an electric pulse/shock zapping down my body).

He paused and went back for round 2 but after another minute or two he came to the conclusion that it was going to have to be split. If I could have spoken I would have asked, “c’mon doc, give it one more go!” But I just bit down and started doing mental back-flips as he wound up that drill and the sound paralysed me.

Even now an hour later I’m still visibly shaken. My pulse is racing and I feel a headache coming on that I know isn’t real, it’s just that I’d built myself up to expect so much pain, to have come out unscathed is such a relief. (Yes, the anaesthetic hasn’t worn off yet. I’m not looking forward to this)…

✧ ✧ ✧ ✧ ✧

And now three hours later the pain has kicked in. It’s more of an uncomfortableness, that exacerbated by paper-cuts of the mouth. What feels oddly more sore than the gap in the gums are the locations where the needle broke the surface of the gum and how he did the dance around the nerve area.

I’m continually salivating and feeling more and more queezy at the thought of all that blood and saliva congealing around the gause. I’ve changed it out numerous times. Bigger ones, smaller ones. I’ve determined smaller is better (they hold less saliva).

Time for some pain killers.

Remove the WordPress logo from the admin bar

no wordpress icon

Want to make your WordPress site more “white label” to users who are logged in?

Originally I was just going to remove the icon, but there is a whole wordpress menu under there. Let’s just remove the whole lot!

If you have a child theme in use, you can add the following code snippet to the functions.php file. Otherwise use a plugin like Code Snippets (not affiliated in anyway, it’s just a plugin I use), and create a new snippet. Make sure to “Save and Activate” the snippet.

add_action( 'admin_bar_menu', 'remove_wp_logo', 999 );

function remove_wp_logo( $wp_admin_bar ) {
$wp_admin_bar->remove_node( 'wp-logo' );
}

from the WordPress Codex: https://codex.wordpress.org/Function_Reference/remove_node

Incorrect wifi password in iOS

wifi under magnifying glass

My kids are always playing in areas of the iPad or iPhone that they really shouldn’t be. Unfortunately Apple have never allowed us to have a truly restrictive setup for kids in this way.

Every now and then they muck up the wifi and have tried connecting to someone else’s wifi and then they can’t reconnect to our own as it prompts for a password (or it simply doesn’t connect). Entering the correct password greets us with the annoying “incorrect password” dialog.

You know it’s the right password, it hasn’t changed in years (that’s probably the first thing we’re doing wrong right there, but that’s a whole other bag of problems).

If you have tried entering in the password, and you’re confident the password is correct there are three things you can try, the last of which will almost always work, but I like to start with the softer options:

  1. Forget the wifi network and then try to reconnect. This one will generally work if it wasn’t prompting for a password to begin with and just not connecting.
  2. You could change the wifi password in your wifi router and try connecting to that. It IS a good idea to change it once in a while anyway. If the device then connects, you could then change it back and try connecting again.
  3. Go to:
    settings >> General >> Reset >> Reset network settings
    and clear the network settings. You’ll need to confirm this with your pin but you will lose no data. DO NOT do a factory reset, in that case YOU WILL lose data. Make sure you are only resetting the network settings and continue.  After the device restarts you should be able to login without any issues.

Good luck and I hope this has helped solve your issue

LS Colours in OSX

I don’t like the default black on white in OSX Terminal (in fact, I’ve just remembered, I don’t like OSX Terminal, I’ll make another post about that). And the only dark background that’s close to anything good is homebrew, but ls doesn’t have colour.

A quick search pulls up a stack post on Ask Different that details the appropriate exports:

export CLICOLOR=1
export LSCOLORS="ExGxBxDxCxEgEdxbxgxcxd"

I didn’t really like the bold directory and found another in the comments:

export LSCOLORS="gxBxhxDxfxhxhxhxhxcxcx"

yeah, but I didn’t really like that either. Then *further* in the comments I found a link to: https://geoff.greer.fm/lscolors/ where you can customise the colour scheme to your hearts content. :)

I fumbled around for a bit, but in the end I settled with: gxfxcxdxbxegedabagacad

Here’s Where Google Hid Chrome’s SSL Certificate Information

Tonight I wanted to know where a particular site had their SSL certificate issued. Upon clicking the green padlock in Chrome, I found that there were no certificate details to be found anywhere. After a good minute or two of not being able to find it, I did what any other reasonable person would do.

I googled it.

Surprisingly, it’s been moved. Why? I don’t know. But it’s certainly not intuitive.

“Google Chrome users have been contacting me wondering why they no longer could access the detailed status of Chrome https: connections, or view the organization and other data associated with SSL certificates for those connections,” writes Slashdot reader Lauren Weinstein, adding “Google took a simple click in an intuitive place and replaced it with a bunch of clicks scattered around.”

Up to now for the stable version of Chrome, you simply clicked the little green padlock icon on an https: connection, clicked on the “Details” link that appeared, and a panel then opened that gave you that status, along with an obvious button to click for viewing the actual certificate data such as Organization, issuance and expiration dates, etc. Suddenly, that “Details” link no longer is present

The full certificate data is available from the “Developers tools” panel under the “Security” label. In fact, that’s where this info has been for quite some time, but since the now missing “Details” link took you directly to that panel, most users probably didn’t even realize that they were deep in the Developers tools section of the browser.
On some systems you can just press F12, but the alternate route is to click on the three vertical dots in the upper right, then select “More Tools”, and then “Developer Tools”. (And if you don’t then see “Security”, click on the ” >>”.)

 

reference: https://tech.slashdot.org/story/17/01/29/1820232/heres-where-google-hid-chromes-ssl-certificate-information

reference: https://lauren.vortex.com/2017/01/28/heres-where-google-hid-the-ssl-certificate-information-you-may-need

tar tips

tar

You’d think I’d just learn how to use this, but I suppose I use it so infrequently that I just can’t remember it. So here are my quick “go-to” tar references.

uncompressing

tar -xzvf filename.tar.gz

x:- eXtract
z:- parse through gzip
v:- verbose (show files)
f:- file archive

archiving/compressing

tar -cf archive.tar file1 file2 dir1
tar -czf archive.tar.gz file1 file2 dir1

notes to above:

  • you don’t HAVE to run the archive through gzip, although there’s no real reason not to. If you chose just to archive without compression, it merely means your file will be larger. This may or may not be a big deal
  • you [b]must[/b] specify a file archive (-f option), not specifying a file is an unrecoverable error and tar will exit
  • recursion is on by default, so if a directory name is specified, recursion will occur. To override that option specify (–no-recursion). Alternatively, if recursion is turned off within the environment it can be re-instated by stating (–recurse).

show me the contents

What if you just want to look at what’s in the archive?

Do a test (-t / –list) run.

tar -tvf archive.tar

This will output (list) the files to stdout without extracting the contents. Useful to see what’s in the archive.

Other useful options:

Here are just a few other useful options and command line usage options to tar that I find useful.

C:- Change to directory and extract at that location
–strip-components=1 :- use this if you need to remove the baseline directory from the archive