tag:blogger.com,1999:blog-24590635319002950322024-03-14T05:46:05.945+00:00Tech TalkA nerd waffling on a bit.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.comBlogger36125tag:blogger.com,1999:blog-2459063531900295032.post-26982033493043134382022-11-15T18:45:00.000+00:002022-11-15T18:45:15.374+00:00Allow embedded YouTube video to go fullscreenHave you ever seen this little annoyance?<br/>
<br/>
<div class="separator" style="clear: both;">
<img alt="Full screen is unavailable" border="0" data-original-height="113" data-original-width="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUUPQlo65b_JcInlDPPhTJh9t6Z7vTL3146PWdpSWyMzvEJUgVtAFo2v5wSxDIragjnVAS5pb1X8ALVzzFIqRds9RFPf59kjGG8_bY21LcSOcDyiUe42KNaFFdHUMJD-t6ta0B4yMc0oVgaf0Pti31Aq68CRcWdK9hVWXPtXaQTl38-DKtGwFaB94eoQ/s1600/Screenshot%20at%202022-11-15%2018-25-26.png" itemprop="image"/>
</div>
<br/>
YouTube's <a href="https://support.google.com/youtube/answer/72689" itemprop="url" rel="external noopener nofollow" target="_blank">help section</a> tells you very little about how to solve it.<br/>
<br/>
Thankfully, it's pretty simple.<br/>
<br/>
Assuming you've been given some HTML to embed into your website, such as:<br/>
<pre><code itemscope itemtype="https://schema.org/SoftwareSourceCode"><iframe src="https://www.youtube.com/embed/?list=UULFZXXi0dM4r7-sKFNo1kGlwg" width="480" height="400"></iframe></code></pre>
<iframe src="https://www.youtube.com/embed/?list=UULFZXXi0dM4r7-sKFNo1kGlwg" width="480" height="400"></iframe><br/>
<br/>
Then you only need to add one attribute, <code>allowfullscreen</code>:<br/>
<pre><code itemscope itemtype="https://schema.org/SoftwareSourceCode"><iframe allowfullscreen src="https://www.youtube.com/embed/?list=UULFZXXi0dM4r7-sKFNo1kGlwg" width="480" height="400"></iframe></code></pre>
And that's it! It works!<br/>
<br/>
<iframe src="https://www.youtube.com/embed/?list=UULFZXXi0dM4r7-sKFNo1kGlwg" width="480" height="400" allowfullscreen></iframe>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-55875953577555660852022-10-24T15:05:00.007+01:002022-10-24T15:49:58.027+01:00Google's Rich Results Test incorrectly parses <iframe> Microdata<p>Google's Search Console has been pestering me for years about missing information in videos shared on Blogger. I have ignored this because I knew the information provided was correct.</p>
<p>However, I have recently launched a new website and wanted to validate the Microdata added to it, so I decided to go back to a <a href="https://kennystechtalk.blogspot.com/2016/06/evileye.html" itemprop="url" target="_blank">post</a> that has had issues and try to solve them. Immediately the Rich Results Test reported a problem. A problem that only exists for Google.<br/>
<br/>
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject">
<img alt="VideoObject test results" border="0" data-original-height="324" data-original-width="874" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtnR8Nt3Sv7v8CdgSooX0INs4GbIxPneo2gVL_dWIrgDJDQUXTOxwGiEAY0BmRxmlvepD24fIvjdivyWLn83uNZQCNMgKzRGYz2sDqT5Kv-bhc2Zd7TOXzNjwmW3YQTDuBt94w9sPxqPRGNijR-srfVhoBkzr7BhvgbEkHC1BQog14hjlrdIS82id1Ww/s1600/video.png" itemprop="contentUrl" width="100%"/>
</span>
</p>
<p>Maybe the VideoObject is picked up as part of the Article?<br/>
<br/>
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject">
<img alt="Is the VideoObject picked up as part of Article?" border="0" data-original-height="193" data-original-width="530" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUC_Y4pfVkPY6Jz6ooexf4fAHJ7C9cna3-h6fFLDLzrqfP3b3y95bXERjy4Q1iTp26bHcvUVzZgv4kdWG0mklkM6Raz4Ipj4xuKmesQe0QutGH_ToExbid4V2TShQ2UJSN9GXix16QlrbrHO9FpegnNPpDvO6CbRq_V_VB4F-fMuWLLUGezRIjXf8elw/s1600/article.webp" itemprop="contentUrl" width="100%"/>
</span><br/>
<br/>
Yes, but none of the details.</p>
<p>So what does the Schema.org <a href="https://validator.schema.org/" itemprop="url" rel="external" target="_blank">validator</a> have to say on the subject?<br/>
<br/>
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject">
<img alt="Schema.org validates the Microdata" border="0" data-original-height="325" data-original-width="728" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp62XPqteSbnL1uS10gXI88CQMyYxRwvGEPDSC33Z-nY3NwekivuYrFuBu4lJeZZO2rCXNBrnj9yAx3QPj4V9ML2KpbcJ86Os4eRIFtOpXBbn_kgmuy0lYMosOeaPoh0Hiq3EFFVKkMog5-eNxuG3bwTcpfj57OwAu1ZZBPBJXdGrNbLZZZlLoU02ttg/s1600/schema.webp" itemprop="contentUrl" width="100%"/>
</span><br/>
<br/>
Nothing. It's happy. Everything is picked up and validates correctly.</p>
<p>Surely the validator from the official schema site must be correct. Just in case there was a bug in there somewhere I thought I'd give <a href="https://webmaster.yandex.com/tools/microtest/" itemprop="url" target="_blank">Yandex a go.</a><br/>
<br/>
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject">
<img alt="Yandex validator test results" border="0" data-original-height="453" data-original-width="911" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYOQLmpV9ryFWeYgIlIHv4S10B2m2YsK3PkIteIXy1DocY2N7LiIsegMqo0V2vNQnSdZT8HrY2H6rNBp7yCurmgXDNpwa6sl2SFll30z7g9TAR-gcGhLV4JlG-5dgk7qwFj4DrC3tT9EotIaX1jg0kGU73ppAre5ptDti-m9gXbzo7uFEShzftXQboZw/s1600/yandex1.webp" itemprop="contentUrl" width="100%"/>
</span><br/>
<br/>
</p>
<p>Well, it does a better job than Google but there is clearly something it is not happy about. It turns out that Yandex does not like having URLs in <code><meta></code> tags. I couldn't find anything in the HTML5 spec about this, but <a href="https://yandex.com/support/video/partners/schema-org.html" itemprop="url" rel="external nofollow" target="_blank">Yandex</a> suggest using <code><link></code> and <code>href</code> instead.
</p>
<p>Confusingly, <a href="https://www.w3schools.com/tags/att_link_rel.asp" itemprop="url" rel="external nofollow" target="_blank">W3Schools</a> states, in reference to the <code><link></code> tag:</p>
<blockquote cite="https://www.w3schools.com/tags/att_link_rel.asp">The <strong>required</strong> rel attribute specifies the relationship between the current document and the linked document/resource.</blockquote>
<p>This is only partially true. From the HTML5 <a href="https://html.spec.whatwg.org/multipage/semantics.html#attr-link-rel" itemprop="url" rel="external" target="_blank">Living Standard</a>:</p>
<blockquote cite="https://html.spec.whatwg.org/multipage/semantics.html#attr-link-rel">A link element must have either a rel attribute or an itemprop attribute, but not both.</blockquote>
<p>Despite Schema.org being quite happy with my original layout, I caved in to Yandex and updated all my <code><meta content=</code> tags to <code><link href=</code> tags. This pleased Yandex.</p>
<p>Trying again with Google, just in case this was the issue, gave the same result. Indeed, to get Google to accept the Microdata I had to move it <em>outside</em> of the <code><iframe></code> tag. Google was unhappy about:
</p>
<pre><code><div itemprop="sharedContent video" itemscope itemtype="https://schema.org/VideoObject">
<iframe itemprop="embedUrl" src="foo.html">
...Microdata...
<iframe>
<div></code></pre>
<br/>
So I changed it to:<br/>
<br/>
<pre><code><div itemprop="sharedContent video" itemscope itemtype="https://schema.org/VideoObject">
<iframe itemprop="embedUrl" src="foo.html"><iframe>
...Microdata...
<div></code></pre>
<p>Finally this made Google <em>almost</em> happy and the Microdata was picked up.</p>
<p>But, why would I put the Microdata in between <code><iframe></code> tags to begin with? Well, there was no reason not to. Schema.org was happy with it, the code was invisible to the user, and it it looked a little bit neater to me. I have tried searching for the “rules” around data between the <code><iframe></code> tags and there doesn't seem to be any information about this. It doesn't seem to be defined. Once again: Schema.org seems to be happy with this.</p>
<p>However, <em>undefined</em> might be the problem here: if something is not defined in a standard, such as HTML5, then the treatment and behaviour of such a practice is itself undefined. Maybe, then, it's not fair to say that Google incorrectly parses the data, rather it discards this data as <em>undefined</em>. I would love to reach out to Google about this, but as everybody knows there is no way to contact anyone at Google about anything. Which is nice.</p>
<p><em>..almost</em>, you say? Sadly, yes. One problem remains for Google that isn't present for Schema.org nor for Yandex.<br/>
<br/>
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject">
<img alt="Google's one remaining issue" border="0" data-original-height="39" data-original-width="428" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2feLzMerIfohheKYgqGrbUZz1uN9anO65rpe8-CP36szSSDTBOSapDVnC5giC2RtrCCq2S4wWvX9UFsfQUU_MDyyjcEEHd7nGxOb2y9DgZYzYTY_qur_R7_VOBb1WvSUKa_0i7racac72V5ssYPFoAYQMNGksAmD9VG7ruSnr6g7rt3S7lahpR9e05w/s1600/embedUrl.webp" itemprop="contentUrl" max-width="428"/>
</span>
</p>
<p>Despite actually having <code>itemprop="embedUrl"</code> in the <code>iframe</code> tag, Google cannot pick this up. This time I believe this is Google's fault. The <a href="https://html.spec.whatwg.org/multipage/microdata.html#names:-the-itemprop-attribute" itemprop="url" rel="external" target="_blank">Living Standard</a> states:</p>
<blockquote cite="https://html.spec.whatwg.org/multipage/microdata.html#names:-the-itemprop-attribute">Every HTML element may have an itemprop attribute specified<br/>
<br/>
Each token must be either:<br/>
<br/>
<span style="display:list-item">A valid URL string that is an absolute URL defined as an item property name allowed in this situation by a vocabulary specification</span></blockquote>
<p>So, in my opinion, Google is erroneously missing this particular <code>itemprop</code>. The workaround? Move the <code>itemprop</code> into a new <code>link</code> element.</p>
<p> I'm not overly pleased that two search engines seem to disagree on how to implement Microdata. To apparently disagree with standards is even worse. Nonetheless I am now aware of the limitations of both Yandex and Google, and what I need to do to work around them.</p>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com1tag:blogger.com,1999:blog-2459063531900295032.post-20035906318097739242020-11-04T23:02:00.005+00:002020-11-04T23:02:51.357+00:00Running Etherape without root or sudoTo run Etherape without having to use <code>sudo</code> each time then, after installation, run the following command:<br>
<br>
<code>sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/etherape</code><br>
<br>
Your executable may be in another location.<br>
<br>
Make sure you understand the security implications of doing this.<br>
<br>
You will need your administrator to run this command for you if you do not have <code>sudo</code> access.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-40844692495500797542018-10-21T00:36:00.002+01:002018-10-26T15:32:13.661+01:00ATLAS@Home native app on Ubuntu Bionic<style> code { background-color: black; color: white; display:block; font-family: Monospace; } </style><br />
In case you haven't heard: the ATLAS@Home app is available for download in Linux. This app normally runs inside a Virtualbox VM, which is a good way to get things working with different operating systems, but adds the overhead of a virtual machine. This can be avoided when ATLAS@Home is running on your Ubuntu Bionic computer by following the steps outlined below.<br />
<br />
First, let's make sure you have the essentials:<br />
<br />
<code>sudo apt update && sudo apt -y dist-upgrade<br />
sudo apt install attr autofs curl boinc-client fuse gawk gdb lsb-release perl psmisc python2.7 singularity-container uuid-dev uuid wget</code><br />
Next step is to add the repositories and install cvmfs.<br />
<br />
<code>wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb \<br />
http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/bionic-testing/main/cvmfs-config-default_1.4-1_all.deb \<br />
http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/bionic-testing/main/cvmfs_2.5.1~1+ubuntu18.04_amd64.deb<br />
sudo dpkg -i cvmfs*.deb</code><br />
Before you continue, however, you may have noticed the following warning:<br />
<br />
<code>Warning: this distribution is not supported. Using Ubuntu 12.04 packages as fallback.</code><br />
If you don't get this: excellent! If you do: it simply means that the repository hasn't been correctly configured for Bionic yet. The fix is simple enough:<br />
<br />
<code>sudo sed -i 's/precise/bionic/g' /etc/apt/sources.list.d/cernvm.list</code><br />
Note that an update to the cvmfs-release package may overwrite these changes, so you'll have to do it again.<br />
Also note that, at time of writing, the Bionic repos have not been set up correctly, which is why you need to manually download the packages. If the packages change (usually due to a version update), you can find the required packages at <a href="http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/bionic-testing/main/">http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/bionic-testing/main/</a>. Once the repositories are set up properly, the packages will update as expected.<br />
<br />
And now a few more steps:<br />
<br />
<code>sudo cvmfs_config setup<br />
printf "CVMFS_REPOSITORIES=atlas.cern.ch,atlas-condb.cern.ch,grid.cern.ch\nCVMFS_HTTP_PROXY=DIRECT\n" | sudo tee /etc/cvmfs/default.local<br />
sudo systemctl restart autofs</code><br />
Finally, check everything is okie dokie:<br />
<br />
<code>$ cvmfs_config probe<br />
Probing /cvmfs/atlas.cern.ch... OK<br />
Probing /cvmfs/atlas-condb.cern.ch... OK<br />
Probing /cvmfs/grid.cern.ch... OK</code><br />
Cushty.<br />
<br />
Notes:<br />
<ul><li>If you have a proxy, you should use that in place of <code style="display:inline">CVMFS_HTTP_PROXY=DIRECT</code>. However, this must be set to something or it will fail.<br />
<li>If you have a lot of machines and a server which runs all the time (such as a proxy server), you will probably be better off installing cvmfs on the server, and exporting the share over NFS. This will save a lot of duplication and inbound bandwidth.<br />
<li>At time of writing, none of the LHC@Home applications run on GPU for mainly historical reasons. Given improvements in the way VMs are handled this <a href="https://twiki.cern.ch/twiki/bin/view/Main/AtlasEdinburghGPUComputing">may change in the future</a>. If you wish to use your GPU then you will also need to install the relevant drivers and libraries.<br />
</ul>References: <ol><li><a href="https://cernvm.cern.ch/portal/filesystem/quickstart">https://cernvm.cern.ch/portal/filesystem/quickstart</a><br />
<li><a href="https://lhcathomedev.cern.ch/lhcathome-dev/forum_thread.php?id=348">https://lhcathomedev.cern.ch/lhcathome-dev/forum_thread.php?id=348</a><br />
<li><a href="http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/">http://cvmrepo.web.cern.ch/cvmrepo/apt/pool/</a><br />
<li><a href="https://twiki.cern.ch/twiki/bin/view/CvmFS/ClientSetupCERN">https://twiki.cern.ch/twiki/bin/view/CvmFS/ClientSetupCERN</a><br />
</ol>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-35774801485849948042016-06-27T17:09:00.010+01:002022-10-24T14:51:32.889+01:00The Ghost in the Machine<div>A great number of years ago a CRT monitor I was using gave up. It had served its master well for many years. My father (yes I was still a child!), just out of interest, rang the company he bought the original equipment from. To our surprise they sent us a replacement LCD screen. It works just as well as the original CRT and had the same sort of specs so we were more than happy with the result.</div><br />
<div>The monitor itself has no identifying marks other than a model number: M15EWA. A Google search suggests two brand names but neither may be the original manufacturer. <aside style="display: inline; font-style: italic;">There was also one result suggesting that it might be a ¥4,200 bed but I am unconvinced by that result.</aside></div><br />
<div>I discovered that using a very simple procedure I can get a rather unusual effect from the monitor.</div><br />
<div itemprop="sharedContent video" itemscope itemtype="https://schema.org/VideoObject">
<iframe width="560" height="315" src="https://www.youtube.com/embed/wPsFfwnUuV0" frameborder="0" allowfullscreen></iframe>
<link itemprop="embedUrl" href="https://www.youtube.com/embed/wPsFfwnUuV0">
<span itemscope itemprop="author copyrightHolder publisher" itemtype="https://schema.org/Person">
<link itemprop="url" href="https://www.youtube.com/user/UncleKennybobs">
<meta itemprop="name" content="UncleKennybobs">
<link itemprop="image" href="https://yt3.ggpht.com/-bx5fWub4ar4/AAAAAAAAAAI/AAAAAAAAAAA/2rMsTedVoVM/s100-c-k-no/photo.jpg">
</span>
<meta itemprop="copyrightYear" content="2016">
<meta itemprop="description headline" content="A dæmon is living within the computer">
<meta itemprop="duration" content="PT3M41S">
<meta itemprop="isFamilyFriendly" content="True">
<link itemprop="license" href="https://www.youtube.com/t/terms">
<meta itemprop="name" content="Evil eye - The ghost in the machine">
<link itemprop="thumbnail thumbnailUrl" href="https://i.ytimg.com/vi/wPsFfwnUuV0/default.jpg">
<meta itemprop="uploadDate" content="20160622T1925Z">
<link itemprop="url" href="https://www.youtube.com/watch?v=wPsFfwnUuV0">
<a href="https://1.bp.blogspot.com/-JbRrkdTR3hI/V3FUwq9wJAI/AAAAAAABRLE/liq_egb6z0QkWkfJvqt92iiuavC-NazOgCKgB/s1600/vlcsnap-2016-06-27-17h27m46s55.png"><img src="https://1.bp.blogspot.com/-JbRrkdTR3hI/V3FUwq9wJAI/AAAAAAABRLE/liq_egb6z0QkWkfJvqt92iiuavC-NazOgCKgB/s320/vlcsnap-2016-06-27-17h27m46s55.png" style="display:none"></a>
</div><br />
<div>The monitor presents to me its evil eye. If you are a little worse for wear and sat in the dark when this happens, then staring into the eye is quite an experience.</div><br />
<div>The answer of course is that the monitor is possessed by a dæmon intent on bringing destruction to the world. First by making me switch the monitor on and off. Oh, the seconds I have wasted doing this! It could even be a full minute by now.</div><br />
<div>Other options are that this is either and Easter egg, albeit an unusual one, or a firmware issue. It is far from being a major issue but I did find it interesting.</div><br />
<div>To trigger this behaviour:<br />
<ol><li>Switch off the monitor.<br />
<li>Allow the computer to put the graphics card to sleep.<br />
<li>Simultaneously switch the monitor back on and wake the computer.<br />
</ol></div><div>It looks as if waking the computer during the monitor's POST gets it a little confused, and makes it do pretty things. The same thing occurs on any computer I test it on. Or it's a djinn.</div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-86057400106695508922016-03-06T13:00:00.001+00:002020-12-19T16:33:16.960+00:00Raspberry Pi 3 on sale now<blockquote cite='https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/' itemprop='citation'><h4>RASPBERRY PI 3 ON SALE NOW AT $35</h4><p>In celebration of our fourth birthday, we thought it would be fun to release something new. Accordingly, Raspberry Pi 3 is now on sale for $35 (the same price as the existing Raspberry Pi 2), featuring: <ul style="list-style: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAHCAYAAADam2dgAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAAB3RJTUUH3gMZFysJmJRFAgAAACtJREFUGNNjfHb6zH8G7OA1AwODqJSpCSPjMUlDXIoYGBgYGCQ6yhiGLAAAar4IKPKtRvsAAAAASUVORK5CYII=)"><li>A 1.2GHz 64-bit quad-core ARM Cortex-A53 CPU (~10x the performance of Raspberry Pi 1)<br />
<li>Integrated 802.11n wireless LAN and Bluetooth 4.1<br />
<li>Complete compatibility with Raspberry Pi 1 and 2</ul><div class="separator" style="clear: both; text-align: center;" itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><figure> <a href="https://4.bp.blogspot.com/-mAvQCLd8IS0/VttfRHu6BFI/AAAAAAABOh4/MiF_s-eUrDQ/s1600/Pi%2B3.jpg" itemprop="contentUrl url" style="margin-left: 1em; margin-right: 1em;"><img alt="Raspberry Pi 3 Model B" itemprop="image" src="https://4.bp.blogspot.com/-mAvQCLd8IS0/VttfRHu6BFI/AAAAAAABOh4/MiF_s-eUrDQ/s320/Pi%2B3.jpg"></a> <figcaption itemprop="caption">Raspberry Pi 3 Model B</figcaption> <meta itemprop="representativeOfPage" content="True"> <meta itemprop="thumbnailUrl" content="https://4.bp.blogspot.com/-mAvQCLd8IS0/VttfRHu6BFI/AAAAAAABOh4/MiF_s-eUrDQ/s72-c/Pi%2B3.jpg"> <meta itemprop="isBasedOnUrl" content="https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/"> <span itemprop="copyrightHolder" itemscope itemtype="https://schema.org/Organization" style="display:none"> <meta itemprop="legalName name" content="Raspberry Pi Foundation"> <meta itemprop="sameAs url" content="https://www.raspberrypi.org/"> </span> <meta itemprop="license" content="https://www.raspberrypi.org/creative-commons/"> <meta itemprop="isFamilyFriendly" content="True"> </figure></div><h4>BCM2837, BCM43438 AND RASPBERRY PI 3</h4><p>For Raspberry Pi 3, Broadcom have supported us with a new SoC, BCM2837. This retains the same basic architecture as its predecessors BCM2835 and BCM2836, so all those projects and tutorials which rely on the precise details of the Raspberry Pi hardware will continue to work. The 900MHz 32-bit quad-core ARM Cortex-A7 CPU complex has been replaced by a custom-hardened 1.2GHz 64-bit quad-core ARM Cortex-A53. Combining a 33% increase in clock speed with various architectural enhancements, this provides a 50-60% increase in performance in 32-bit mode versus Raspberry Pi 2, or roughly a factor of ten over the original Raspberry Pi. <p>James Adams spent the second half of 2015 designing a series of prototypes, incorporating BCM2837 alongside the BCM43438 wireless “combo” chip. He was able to fit the wireless functionality into very nearly the same form-factor as the Raspberry Pi 1 Model B+ and Raspberry Pi 2 Model B; the only change is to the position of the LEDs, which have moved to the other side of the SD card socket to make room for the antenna. Roger Thornton ran the extensive (and expensive) wireless conformance campaign, allowing us to launch in almost all countries simultaneously. Phil Elwell developed the wireless LAN and Bluetooth software. <p>All of the connectors are in the same place and have the same functionality, and the board can still be run from a 5V micro-USB power adapter. This time round, we’re recommending a 2.5A adapter if you want to connect power-hungry USB devices to the Raspberry Pi. <p>You’ll need a recent NOOBS or Raspbian image from our downloads page. At launch, we are using the same 32-bit Raspbian userland that we use on other Raspberry Pi devices; over the next few months we will investigate whether there is value in moving to 64-bit mode.</blockquote><div style="text-align:right">Source: <span itemscope itemtype="https://schema.org/URL"><a href="https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/">RaspberryPi.org</a></span> (<a href="http://creativecommons.org/licenses/by-sa/4.0/" target="new" title="Licence">CC BY-SA 4.0</a>) </div><div class="nooptimize" style="font-size:larger;text-align:center;"><style type="text/css">
table.afflinks, table.afflinks * { border: 1px solid black; border-collapse: collapse; }
table.afflinks a, a.vglnk * { border:none !important; color:blue; }
table.afflinks a:visited { color:blue; }
table.afflinks a:hover { color:fuchsia; }
table.afflinks td:hover { background: lightblue }
</style> Find a Raspberry Pi 3: <table class='afflinks' style="margin-left:auto;margin-right:auto;"><tr> <th>Amazon</th> <td><td><td><td><td> <td itemscope itemtype="https://schema.org/URL"><a href="http://www.amazon.de/gp/search?ie=UTF8&camp=1638&creative=6742&index=aps&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbl0f-21" rel="external nofollow">DE</a> <td itemscope itemtype="https://schema.org/URL"><a href="http://www.amazon.es/gp/search?ie=UTF8&camp=3626&creative=24790&index=aps&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbl06-21" rel="external nofollow">ES</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://www.amazon.fr/gp/search?ie=UTF8&camp=1642&creative=6746&index=aps&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbly-21">FR</a> <td> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://www.amazon.it/gp/search?ie=UTF8&camp=3370&creative=23322&index=aps&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbl0b-21">IT</a> <td> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://www.amazon.co.uk/gp/search/ref=as_li_qf_sp_sr_tl?ie=UTF8&camp=1634&creative=6738&index=aps&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbl07-21">UK</a> <td itemscope itemtype="https://schema.org/URL"><a href="http://www.amazon.com/gp/search?ie=UTF8&camp=1789&creative=9325&index=pc-hardware&keywords=raspberry%20pi%203&linkCode=ur2&tag=wibblywobbl09-20&linkId=MCQARIWSRDPBUYEM" rel="external nofollow">US</a><br />
<tr> <th>eBay</th> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/5221-53469-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229473&kwid=902099&mtid=824&kw=lg">AT</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/705-53470-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229515&kwid=902099&mtid=824&kw=lg">AU</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/1553-53471-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229522&kwid=902099&mtid=824&kw=lg">BE</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/706-53473-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229529&kwid=902099&mtid=824&kw=lg">CA</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/5222-53480-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229536&kwid=902099&mtid=824&kw=lg">CH</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/707-53477-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229487&kwid=902099&mtid=824&kw=lg">DE</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/1185-53479-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229501&kwid=902099&mtid=824&kw=lg">ES</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/709-53476-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229480&kwid=902099&mtid=824&kw=lg">FR</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/5282-53468-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229543&kwid=902099&mtid=824&kw=lg">IE</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/724-53478-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229494&kwid=902099&mtid=824&kw=lg">IT</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/1346-53482-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229557&kwid=902099&mtid=824&kw=lg">NL</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/710-53481-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229508&kwid=902099&mtid=824&kw=lg">UK</a> <td itemscope itemtype="https://schema.org/URL"><a rel="external nofollow" href="http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=9&pub=5575158157&toolid=10001&campid=5337827560&customid=RaspPi3Blog&icep_uq=raspberry+pi+3&icep_sellerId=&icep_ex_kw=&icep_sortBy=12&icep_catId=&icep_minPrice=&icep_maxPrice=&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg">US</a> </table></div><meta itemprop="isBasedOnUrl" content="https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/"> <meta itemprop="isFamilyFriendly" content="True">Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-87181014898640240922016-03-03T22:32:00.001+00:002016-03-08T05:54:03.246+00:00Blogger Template Designer does not apply web font selectionsThe Blogger Template Designer offers a quick and easy way to (re-)design your blog without having to faff around with the template code.<br />
<br />
<div class="separator" style="clear: both; text-align: center;" itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://3.bp.blogspot.com/-5WkIxfe7CWI/VtixjCPz_WI/AAAAAAABOcE/-CUB9ENI6o0/s1600/Blogger%2BTemplate%2BDesigner.png" itemprop="contentUrl url" style="margin-left: 1em; margin-right: 1em;"><img alt="Blogger Template Designer" itemprop="image" src="https://3.bp.blogspot.com/-5WkIxfe7CWI/VtixjCPz_WI/AAAAAAABOcE/-CUB9ENI6o0/s400/Blogger%2BTemplate%2BDesigner.png" /></a></div><br />
...except that it doesn't work properly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;" itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://3.bp.blogspot.com/-BokMWDRVGIs/Vtiyip0TlWI/AAAAAAABOcM/wj6GuU6Np4Q/s1600/No%2Bfont.png" itemprop="contentUrl url" style="margin-left: 1em; margin-right: 1em;"><img alt="Header is not using the selected font" itemprop="image" src="https://3.bp.blogspot.com/-BokMWDRVGIs/Vtiyip0TlWI/AAAAAAABOcM/wj6GuU6Np4Q/s1600/No%2Bfont.png" /></a></div><br />
Why?<br />
<br />
Well, it would appear that when you open the <abbr title="Blogger Template Designer">BTD</abbr> it nicely downloads all the web fonts so that you can preview them easily. The problem is that once you have made your selection the only part of the template code that is changed is the font name. There is nothing to instruct the browser that it needs to download the font in order to render it. Sadly, you will have to faff around with the template code.<br />
<br />
The first thing to do is to find the font you wanted over at Google Fonts. In my case it is Gruppo: <span itemscope itemtype="https://schema.org/URL"><a href="https://www.google.com/fonts/specimen/Gruppo" target="new">https://www.google.com/fonts/specimen/Gruppo</a></span>. There should be a link that takes you into Google Fonts where you can play around with the fonts of your choice, and the styles of your choice. The buttons along the bottom will take you to a page that shows you what code you need to add to your page. In my case this was:<br />
<br />
<pre><code><link href='https://fonts.googleapis.com/css?family=Gruppo' rel='stylesheet' type='text/css' /></code></pre><br />
And now your selection should work. The BTD should have inserted enough into the template at this point to allow the browser to render your font correctly. If not... 😕.<br />
<br />
Note: Things may not work nicely in Internet Explorer. That's tough luck - <span itemscope itemtype="https://schema.org/URL"><a href="https://www.change.org/p/discontinue-internet-explorer" title="Petition Microsoft: Discontinue Internet Explorer">don't</a></span> use Internet Explorer.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-23428849956010797452016-03-02T12:20:00.001+00:002023-05-04T21:01:15.626+01:00Google Analytics, despite ad blockers<style scoped="" type="text/css">code { word-wrap:normal; } sup { font-size: x-small; }</style><meta itemprop="alternativeHeadline" content="Working around ad blockers with Google Analytics"><meta itemprop="about" content="Google Analytics">You have noticed that ad blockers also block Google Analytics in some valiant attempt to protect your privacy. If you're one of the normals then you use Analytics so you have some idea what is going on when people visit your website, not to create a vast database of users. Indeed Google Analytics itself anonymises some of its data to try to allay the fears of the truly paranoid.<br>
<br>
You therefore need a way of tracking what is going on.<br>
<br>
First, let's have a quick look at what is going on with the Analytics code.<br>
<br>
Once you have created your property, you are told to add a code snippet to your pages:<br>
<br>
<pre itemprop="sharedContent" itemscope itemtype="https://schema.org/Code"><code itemprop="text">(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create','UA-12345678-90','auto');
ga('send','pageview');</code></pre><br>
<a href="https://kennystechtalk.blogspot.com/2016/03/adblockanalytics.html#more">Continue reading »</a>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-50964993200633406012016-02-29T09:51:00.000+00:002018-10-01T12:10:44.842+01:00/usr/bin/env: node: No such file or directory<div><style> code { background-color: black; color: white; display:block; font-family: Monospace; } </style><br />
<h3>The Problem</h3><br />
You have installed <em>npm</em> or <em>nodejs</em> and the second you go to use it you receive an error message:<br />
<br />
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/Code"><code itemprop="text">/usr/bin/env: node: No such file or directory</code></span><br />
<br />
<h3>The Cause</h3><br />
Package managers. <span style="font-style: italic;">*sigh*</span> What is normally named <em>node</em> is named <em>nodejs</em>.<br />
<br />
<code>$ which nodejs<br />
/usr/bin/nodejs</code><br />
<br />
<h3>The Solution</h3><br />
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/Code"><code itemprop="text">[ -d ~/bin ] || mkdir ~/bin<br />
ln -s $(which nodejs) ~/bin/node</code></span><br />
This will allow your system to find <em>node</em>.<br />
<br />
There must be some reason behind the package maintainers renaming <em>node</em> to <em>nodejs</em>, probably to avoid a conflict, so you don't really want to be renaming files, or making the changes system-wide (<code style="display:inline-block">/usr/local/bin</code>) unless you know what you are doing.<br />
<br />
<code>$ node --help<br />
Usage: node [options] [ -e script | script.js ] [arguments] <br />
node debug script.js [arguments] <br />
<br />
Options:<br />
-v, --version print node's version<br />
-e, --eval script evaluate script<br />
-p, --print evaluate script and print result<br />
-i, --interactive always enter the REPL even if stdin<br />
does not appear to be a terminal<br />
--no-deprecation silence deprecation warnings<br />
--trace-deprecation show stack traces on deprecations<br />
--v8-options print v8 command line options<br />
--max-stack-size=val set max v8 stack size (bytes)<br />
<br />
Environment variables:<br />
NODE_PATH ':'-separated list of directories<br />
prefixed to the module search path.<br />
NODE_MODULE_CONTEXTS Set to 1 to load modules in their own<br />
global contexts.<br />
NODE_DISABLE_COLORS Set to 1 to disable colors in the REPL<br />
<br />
Documentation can be found at http://nodejs.org/</code><br />
<br />
Great stuff!<br />
<br />
<span style="font-size: x-small;">References:<br />
<a href="https://github.com/nodejs/node-v0.x-archive/issues/3911#issuecomment-8956154" itemprop="sameAs" itemscope itemtype="https://schema.org/URL" target="_blank">https://github.com/nodejs/node-v0.x-archive/issues/3911#issuecomment-8956154</a></span></div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-18939078105238286672016-02-20T17:02:00.002+00:002023-04-17T00:13:18.705+01:00YouTube Poll Cards are git lush, honest!<div lang="en-GB"><div itemprop="alternativeHeadline" content="YouTube Poll Cards - A new way to interact with your audience"></div><div itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject" style="text-align:center"><a href="https://1.bp.blogspot.com/-q_ibbLxa8-I/VsczrudFryI/AAAAAAABOEY/UtxMDnpKXUc/s1600/Teaser.png" itemprop="contentUrl url"><img alt="Card teaser on a YouTube video" itemprop="image" src="https://2.bp.blogspot.com/-ba9vU3yb6C0/Vsc4e-vFU4I/AAAAAAABOEk/HR8Z_YBRSyU/s1600/Teaser.png"/></a><br />
</div><br />
Everyone loves polls. It's just a fact. YouTube know this so they have introduced Poll Cards to creators.<br />
<br />
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://2.bp.blogspot.com/-mw_DTYoNs7A/Vsc6HohyF9I/AAAAAAABOE0/wR-hMGa_kXs/s1600/Amazing%2Bvideo%2Bpoll%2Bcard.png" itemprop="contentUrl url"><img alt="A YouTube video showing a Poll Card" itemprop="image" src="https://2.bp.blogspot.com/-mw_DTYoNs7A/Vsc6HohyF9I/AAAAAAABOE0/wR-hMGa_kXs/s320/Amazing%2Bvideo%2Bpoll%2Bcard.png" style="margin-right:1em;position:relative;vertical-align:top"></a></span><span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://4.bp.blogspot.com/-EfX4EeDqqLk/Vsc6HolFRpI/AAAAAAABOEw/OOqTjAorN2Q/s1600/Amazing%2Bvideo%2Bpoll%2Bcard%2B%2528copy%2529.png" itemprop="contentUrl url"><img alt="Close-up of a YouTube Poll Card" itemprop="image" src="https://4.bp.blogspot.com/-EfX4EeDqqLk/Vsc6HolFRpI/AAAAAAABOEw/OOqTjAorN2Q/s1600/Amazing%2Bvideo%2Bpoll%2Bcard%2B%2528copy%2529.png"></a></span><br />
<br />
<dfn>Cards</dfn> are interactive elements that slide into view during a YouTube video which prompts a user to interact in one of a number of ways. You can use a Card to:<br />
<ul><li>Promote a video or playlist</li>
<li>Promote a channel</li>
<li>Ask users to take part in a poll</li>
<li>Link to an approved website</li>
<li>Ask users to donate to a non-profit</li>
<li title="Fan Funding">Beg for money</li>
</ul><br />
Unless you're using an overbearing adblock, you'll see them in the video that you're watching.<br />
<br />
<div itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://3.bp.blogspot.com/-Zyzo6dZnDjg/Vsc8WlyvJEI/AAAAAAABOFA/fXkV0G7SUBY/s1600/First%2Bchoice%2B48%253A21.png" itemprop="contentUrl url"><img alt="Filling out a YouTube Poll Card" itemprop="image" src="https://3.bp.blogspot.com/-Zyzo6dZnDjg/Vsc8WlyvJEI/AAAAAAABOFA/fXkV0G7SUBY/s1600/First%2Bchoice%2B48%253A21.png" /></a><br />
</div><br />
This, of course, allows users to give you quick feedback where they might not be able to use the comments section, such as when the video is embedded into another site or a third-party application, assuming the application can handle them; or if they just can't be bothered to scroll down a bit. It offers the user an easy way to interact.<br />
<br />
The cards can be updated at any time to ask a different set of questions. The video, of course, cannot without uploading a whole new video, bar simple editing like video quality. If you add your own comment asking questions it could be buried under the avalanche of xenophobic bilge that always fills a YouTube comments thread. This way your question will be seen.<br />
<br />
You can change your answer too, should you choose the wrong option the first time.<br />
<br />
<div itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://4.bp.blogspot.com/-DmZIoiIY4sY/Vsc93HsBl8I/AAAAAAABOFM/_1WsLgTTjLM/s1600/Second%2Bchoice.png" itemprop="contentUrl url"><img alt="Changing my choice on a YouTube Poll Card" itemprop="image" src="https://4.bp.blogspot.com/-DmZIoiIY4sY/Vsc93HsBl8I/AAAAAAABOFM/_1WsLgTTjLM/s1600/Second%2Bchoice.png" /></a><br />
</div><br />
If you're a creator in good standing it is incredibly easy to add a Poll Card.<br />
<br />
From your <em>My Videos</em> click on the drop-down menu next to the video you want to add a card to and select <em>Cards</em>.<br />
<br />
<div itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://4.bp.blogspot.com/-mla8q-SOt7Q/Vsc_GzwM-rI/AAAAAAABOFU/BtjpQ0_9Psk/s1600/My%2BVideos.png" itemprop="contentUrl url"><img alt="Selecting 'Cards' from the drop-down menu in 'My Videos'" itemprop="image" src="https://4.bp.blogspot.com/-mla8q-SOt7Q/Vsc_GzwM-rI/AAAAAAABOFU/BtjpQ0_9Psk/s1600/My%2BVideos.png" /></a><br />
</div><br />
Once you're in there, pick the position of the video where you want your teaser to appear then click <em>Add card</em>. From there you can select <em>Poll</em> and fill in the details. It is a very simple interface: there's no room for confusion.<br />
<br />
<span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://4.bp.blogspot.com/-_VACeb1VjTY/VsdA9aadGrI/AAAAAAABOFk/H9IPUcq2NB8/s1600/Adding%2Bpoll%2Bcard.png" itemprop="contentUrl url"><img alt="Selecting the 'Add Card' drop-down" itemprop="image" src="https://4.bp.blogspot.com/-_VACeb1VjTY/VsdA9aadGrI/AAAAAAABOFk/H9IPUcq2NB8/s320/Adding%2Bpoll%2Bcard.png" style="margin-right:1em;vertical-align:top;width:45%" /></a></span><span itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://3.bp.blogspot.com/-BMtWBL_e35w/VsdA9S5uAOI/AAAAAAABOFg/MTdaXq2gLFs/s1600/Filling%2Bin%2Bthe%2Bpoll%2Bcard.png" itemprop="contentUrl url"><img alt="Filling out the Poll Card options" itemprop="image" src="https://3.bp.blogspot.com/-BMtWBL_e35w/VsdA9S5uAOI/AAAAAAABOFg/MTdaXq2gLFs/s320/Filling%2Bin%2Bthe%2Bpoll%2Bcard.png" style="width:45%" /></a></span><br />
<br />
Click <em>Save</em> and it's done! You can click on the little <span style="background-color:rgb(244, 241, 241);border-radius:1em;color:black;display:inline-block;height:1em;line-height:1em;text-align:center;width:1em">i</span> to see your new Poll card. Lush.<br />
<br />
<div itemprop="sharedContent" itemscope itemtype="https://schema.org/ImageObject"><a href="https://2.bp.blogspot.com/-WulgChziwUI/VsiaMtan8yI/AAAAAAABOF4/tTYmTMTUPhE/s1600/Poll%2Bcard%2Badded.png" itemprop="contentUrl url"><img alt="A video with cards added" itemprop="image" src="https://2.bp.blogspot.com/-WulgChziwUI/VsiaMtan8yI/AAAAAAABOF4/tTYmTMTUPhE/s320/Poll%2Bcard%2Badded.png"/></a><br />
</div><br />
<div itemprop="sharedContent video" itemscope itemtype="https://schema.org/VideoObject"><iframe content="6a937f62aa60" itemprop="embedUrl" width="480" height="360" src="https://www.youtube.com/embed/omUeTcG7jms" frameborder="0" allowfullscreen>
<link itemprop="embedUrl" href="https://www.youtube.com/embed/omUeTcG7jms">
<meta itemprop="about" content="Supernatural phenomena">
<span itemscope itemprop="author copyrightHolder publisher" itemtype="https://schema.org/Person">
<meta itemprop="url" content="https://www.youtube.com/user/UncleKennybobs">
<meta itemprop="name" content="UncleKennybobs">
<meta itemprop="image" content="https://yt3.ggpht.com/-bx5fWub4ar4/AAAAAAAAAAI/AAAAAAAAAAA/2rMsTedVoVM/s100-c-k-no/photo.jpg">
</span>
<meta itemprop="copyrightYear" content="2006">
<meta itemprop="description headline" content="One of the most amazing videos you will ever watch. You will NOT believe your eyeses.">
<meta itemprop="duration" content="PT34S">
<meta itemprop="inLanguage" content="en">
<meta itemprop="isFamilyFriendly" content="True">
<meta itemprop="keywords" content="amazing,supernatural,paranormal,ufo,alien,sasquatch,incredible,Hartlepool,الجسم,الغريب,خارق,للخوارق,مدهشه,غريبة,لا,تصدق,ديناصور,حقيقي,Изумителен,Паранормални,чужденец,невероятни,реални,驚人的超自然超自然飛碟外星人,令人難以置信的真正的恐龍,nadnaravnim,Nadnaravno,NLO,vanzemaljac,nevjerojatne,úžasné,nadpřirozené,paranormální,cizích,neuvěřitelné,forbløffende,overnaturlige,paranormale,fremmede,utrolig,ongelooflijke,echte,verbazingwekkende,bovennatuurlijke,vreemdeling,yliluonnollisia,paranormaaleja,uskomatonta,todellista">
<meta itemprop="license" content="https://www.youtube.com/t/terms">
<meta itemprop="locationCreated" content="Hartlepool">
<meta itemprop="name" content="Truly amazing">
<meta itemprop="thumbnailUrl" content="https://i.ytimg.com/vi/omUeTcG7jms/2.jpg">
<meta itemprop="uploadDate" content="20080706T1449Z">
<meta itemprop="url" content="https://www.youtube.com/watch?v=omUeTcG7jms">
</iframe><br />
</div></div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-256396713236654062016-02-03T11:12:00.000+00:002016-02-20T01:11:06.164+00:00New frontiers in communication systems<blockquote cite="http://phys.org/news/2016-02-frontiers.html">New research by the universities of Bristol, Keio and industrial partners have unlocked 80 THz of fibre-optic bandwidth that will enable future exascale data centres and transform 5G networks.<br />
<br />
The research on optical communication technologies, wavelength division multiplexing and networks form the backbone of every wired network across the whole Internet. Work until now has been focused and limited on utilizing ~11 THz of bandwidth (C and L Band) centred at 193 THz.<br />
Optical networks based on this frequency bands have been able to support up to 230 channels at 50 GHz spacing.<br />
<br />
The technology fabricated and tested is based on cascaded arrayed waveguide gratings (AWGs) and is designed to potentially construct a 1600 x 1600 wavelength router that can guide data at the speed of light. Specially designed quantum dot chips are used for light sources.<br />
<br />
This single passive optical system can route immense information offering manifold increase from current systems. It can single-handedly interconnect over one million end points while offering at least ten Gb/s per end point. Critically it is also future proof since it's transparent to any communication signal and it can also potentially consume zero power due to its passive nature.</blockquote><br />
Read the full article at <a href="http://phys.org/news/2016-02-frontiers.html"><cite>New frontiers in communication systems</cite></a>.<br />
Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-22009522535090369492016-01-09T15:41:00.001+00:002016-02-25T02:39:53.304+00:00YouTube's "Remove a Song" - Wow!Anyone who has been wasting time reading my drivel on this blog will know that I have been somewhat irritated by the lack of response from YouTube regarding spurious copyright claims on videos. I had given up for a while but felt that I simply couldn't let <a href="/search/label/Warner%20Chappell" target="_blank"><i>them</i></a> get away with it!<br />
<br />
Anyone else who has found their way here might be familiar with the copyright claims being slapped on their own videos, and how annoying that can be.<br />
<div class="separator" style="clear: both; text-align: center;"><img alt="Copyright notices on videos" src="http://3.bp.blogspot.com/-4hx2ktPKN2w/VpEPU5EelvI/AAAAAAABNfY/l_8YVtjm7O8/s1600/Screenshot%2Bfrom%2B2016-01-09%2B06%253A58%253A36.png" title="*sigh* -.-"></div><br />
Copyright claims can have the following effects:<br />
<ol><li>You are unable to monetise your video, or have to share the monetisation with the claimant.</li>
<li>You are forced to have adverts show on your videos when you don't want them.</li>
<li>You may struggle to upgrade your channel to include certain features, such as live broadcasts.</li>
<li>Your video(s) may be blocked altogether in certain regions.</li>
</ol><br />
To my delight and amazement I discovered that a fair bit of work has gone into solving the issue:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-pkM8jE03aMI/VpEQhEsarpI/AAAAAAABNfk/U5SXoVBozqg/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A01%253A04.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Notice showing that a piece of copyrighted music has been detected in a video" height="83" src="http://1.bp.blogspot.com/-pkM8jE03aMI/VpEQhEsarpI/AAAAAAABNfk/U5SXoVBozqg/s640/Screenshot%2Bfrom%2B2016-01-09%2B07%253A01%253A04.png" width="640" /></a></div><br />
<a href="http://1.bp.blogspot.com/-s-emm7CPmDQ/VpEQhDmUwzI/AAAAAAABNfo/qmQFE1qXOYc/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A04%253A32.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Two notices showing that two pieces of copyrighted music has been detected in a video" height="114" src="http://1.bp.blogspot.com/-s-emm7CPmDQ/VpEQhDmUwzI/AAAAAAABNfo/qmQFE1qXOYc/s640/Screenshot%2Bfrom%2B2016-01-09%2B07%253A04%253A32.png" width="640" /></a><br />
<br />
Could it be that easy?<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Fkxb68syFyg/VpERjSUc7gI/AAAAAAABNf4/IHJmZgpAygA/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A02%253A17.png" style="margin-left: 1em; margin-right: 1em;"><img alt="After clicking the remove button" height="66" src="http://4.bp.blogspot.com/-Fkxb68syFyg/VpERjSUc7gI/AAAAAAABNf4/IHJmZgpAygA/s640/Screenshot%2Bfrom%2B2016-01-09%2B07%253A02%253A17.png" width="640" /></a></div><br />
<a href="http://4.bp.blogspot.com/-O9GKwpnRFNU/VpERjR8YmsI/AAAAAAABNf0/4Z7xmymC8vo/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A05%253A32.png" style="margin-left: 1em; margin-right: 1em;"><img alt="After clicking both remove buttons" height="90" src="http://4.bp.blogspot.com/-O9GKwpnRFNU/VpERjR8YmsI/AAAAAAABNf0/4Z7xmymC8vo/s640/Screenshot%2Bfrom%2B2016-01-09%2B07%253A05%253A32.png" width="640" /></a><br />
<br />
Certainly looks like it!<br />
<br />
YouTube have, rather quietly, introduced this "<a href="https://support.google.com/youtube/answer/2902117" target="_blank" title="YouTube Help: Remove Content ID claimed songs from my videos">Remove a Song</a>" tool to remove the music from your videos without affecting the rest of the audio.<br />
<br />
So now we just hit "Save" and let the gremlins cast their magic.<br />
<br />
<img alt="Notice letting you know that it might take a while to remove the song from your video" src="http://4.bp.blogspot.com/-TsUUmIOKmm4/VpER9f5x3SI/AAAAAAABNgE/CtiuyAQcllU/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A03%253A05.png" /><br />
<br />
And when the processing is finished...<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-KumrMtgT0Qg/VpEVQ0hboHI/AAAAAAABNgc/RdRF_KABXFI/s1600/Screenshot%2Bfrom%2B2016-01-09%2B14%253A09%253A59.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Some noticed have been removed from the updated videos" src="http://1.bp.blogspot.com/-KumrMtgT0Qg/VpEVQ0hboHI/AAAAAAABNgc/RdRF_KABXFI/s1600/Screenshot%2Bfrom%2B2016-01-09%2B14%253A09%253A59.png" /></a></div><b>Success!</b> Well, almost. One video failed.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-4p5s0QKqvp8/VpEWWRyWCfI/AAAAAAABNgk/q33hPvNMMcI/s1600/Screenshot%2Bfrom%2B2016-01-09%2B07%253A37%253A10.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Notice telling you that there was an error when attempting to remove a song from a video" height="58" src="http://3.bp.blogspot.com/-4p5s0QKqvp8/VpEWWRyWCfI/AAAAAAABNgk/q33hPvNMMcI/s640/Screenshot%2Bfrom%2B2016-01-09%2B07%253A37%253A10.png" width="640" /></a></div><br />
But let's not forget what has happened here: YouTube have managed to remove the music from the video without affecting the rest of the audio. It's very impressive and not something I would know how to do myself. My planned solution was to simply mute parts of the track, but now that isn't necessary. Yes, one failed, but the service is still in beta. Hopefully this will be one of the features that remains on YouTube. Some other features have quietly come and gone with time.<br />
<br />
Of course if you want to do covers of songs then removing the music probably isn't an option. But that's up to you. In that case you may be able to share the advertising revenue, or simply be given permission from the copyright owner.<br />
<br />
<b>My videos no longer have copyright claims against them. Hurrah!</b><br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/4RcjEQ1DvT4" width="560"></iframe>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-56548264655866286042016-01-09T11:15:00.000+00:002016-01-15T12:00:19.926+00:00Update: YouTube does NOT listen to copyright claimsPreviously I have written about how <a href="http://kennystechtalk.blogspot.com/2012/07/youtube-does-listen-to-copyright-claims.html" target="_blank">YouTube does listen to copyright claims</a> and followed it up a year later with how <a href="http://kennystechtalk.blogspot.co.uk/2013/07/youtube-does-not-listen-to-copyright.html" target="_blank">YouTube does NOT listen to copyright claims</a>. Confusing, I know. To make sense of it all I recommend reading those posts, if you're interested in that sort of thing.<br />
<br />
I have had to do a lot of research on this damned problem to fight the copyright claims on my videos, which I <b>really</b> shouldn't have to do. They don't even receive that many hits but the lack of response pissed me off. I think I have found an answer on how these wallies came to their conclusion.<br />
<br />
<a href="http://europa.eu/rapid/press-release_PRES-11-303_en.htm" target="_blank">On the 12th of September, 2011</a>, the Council of Europe adopted Directive 2011/77/EU, which in accordance with Article 4 came into force on the 20th of the same month. The Directive recommends extending <a href="http://europa.eu/rapid/press-release_PRES-11-303_en.htm" target="_blank"><i>protection of the rights of performers and phonogram producers on music recordings within the EU from 50 to 70 years</i></a>; the exact details vary and can be gleaned from the text of the Directive, as well as some other protections and recommendations.<br />
<br />
This is somewhat crucial to my story: my video, <a href="https://www.youtube.com/watch?v=4RcjEQ1DvT4" target="_blank">Sunderland Airshow 2012</a>, was of course recorded in 2012, which was seven years after the expiration of the copyright, under the old rules, on The Dam Busters March, which appears in the video. Presumably this was overlooked by the original claimant in my story.<br />
<br />
The general idea behind the Directive is that recording artists aren't paid for long enough for their work and they should be paid for even longer. The texts leading up to, and included in, the Directive suggest that this will help poorer performers receive adequate compensation for their work, whereas nobody really cares how hard-up the millionaires think that they are. The E.U. have, at times, been criticised for making some rather ridiculous suggestions and recommendations, some of which end up being law. I'll let you decide if this one is a sensible one or not....<br />
<br />
<aside>Imagine I build a wall. I should be paid for building that wall. I receive the payment. Job done.<br />
<br />
Imagine I write a song. I should be paid for writing that song. I receive the payment but depending on the contracts and local legislation I may go on receiving payments for that song for many years to come.<br />
<br />
Imagine again that I build another wall. I should be paid for building that wall. I receive payment for that wall for fifty years. Kind of ridiculous, right? Imagine that this was the case though. Imagine I was paid for something I did fifty years before. I'd be very pleased with myself. Imagine how bloody greedy I would have to be to think that fifty years isn't long enough and that this should be extended another twenty years. I could easily have built more walls in this time. Imagine those things. Do it. Imagine it. You're imagining something completely different, aren't you? Pervert.<br />
<br />
Of course the public won't have to pay <i>en masse</i> just to use the wall, whereas they do to use the music, which explains why copyright makes sense. But seventy years?<br />
</aside><br />
....I digress.<br />
<br />
The Directive wouldn't have affected me at all if it was not applied retroactively. From the rather in-depth <a href="http://ec.europa.eu/internal_market/copyright/docs/term/ia_term_en.pdf" target="_blank">Impact Assessment</a>:<br />
<blockquote cite="http://ec.europa.eu/internal_market/copyright/docs/term/ia_term_en.pdf" class="tr_bq"><span style="font-family: Courier New, Courier, monospace;">It appears that a partially retro-active extension, with a specific cut off date, would be the simplest solution as regards the legal and administrative aspects and would bring the most benefit to right holders from the start.</span></blockquote>The Impact Assessment explains what it means by the term <i>partially retro-active</i> but it could be inferred that I am affected by this.<br />
<br />
I certainly don't know enough about law to give any kind of in-depth analysis of what this all means, but I did wonder if this did not violate Article 7 of the <a href="http://www.echr.coe.int/Documents/Convention_ENG.pdf" target="_blank">European Convention on Human Rights</a> (codified in U.K. law under the Human Rights Act 1998):<br />
<blockquote cite="http://www.echr.coe.int/Documents/Convention_ENG.pdf" class="tr_bq"><span style="font-family: Courier New, Courier, monospace;">No one shall be held guilty of any criminal offence on account of any act or omission which did not constitute a criminal offence under national or international law at the time when it was committed.</span></blockquote>I would suggest that the E.C.H.R. only applies to government bodies, though there have been a number of high-profile cases in the U.K. in which the E.C.H.R. has been deemed to apply to businesses (mainly the press). Crucially, though, Article 7 states that it applies to criminal offences, and any legal matters arising from my circumstances would almost definitely fall under civil law. Indeed, there was no criminal act or intent (not on my behalf anyway).<br />
<br />
So there we go. Not very technical but it almost concludes the story so I thought I should share.<br />
<br />
Now if only there were some way to <a href="/2016/01/youtubes-remove-song-wow.html" title="Hello, cheeky! - YouTube's 'Remove a Song' tool">remove the musical composition from the audio track</a> of my video....<br />
<br />
<span style="font-size: x-small;">References:</span><br />
<ul><li><a href="http://ec.europa.eu/internal_market/copyright/docs/term/ia_term_en.pdf"><span style="font-size: x-small;">http://ec.europa.eu/internal_market/copyright/docs/term/ia_term_en.pdf</span></a></li>
<li><a href="http://europa.eu/rapid/press-release_PRES-11-303_en.htm"><span style="font-size: x-small;">http://europa.eu/rapid/press-release_PRES-11-303_en.htm</span></a></li>
<li><a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:265:0001:0005:EN:PDF"><span style="font-size: x-small;">http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:265:0001:0005:EN:PDF</span></a></li>
</ul><div><span style="font-size: x-small;"><br />
</span> <span style="font-size: x-small;">Aside:</span></div><div><span style="font-size: x-small;">An interesting read on a possible E.C.H.R. Article 10 violation:</span></div><div><a href="http://echrblog.blogspot.in/2013/01/copyright-vs-freedom-of-expression.html"><span style="font-size: x-small;">http://echrblog.blogspot.in/2013/01/copyright-vs-freedom-of-expression.html</span></a></div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-59282687006752258872015-12-18T23:29:00.002+00:002016-03-16T19:19:25.503+00:00How long does a deprecated IPv6 address remain attached to an interface?This may be obvious to normal folk but it wasn't to me, hence this post to remind me in the future.<br />
<br />
The question posed to mine bad self was:<br />
<br />
<i>How long does a deprecated IPv6 address remain attached to an interface?</i><br />
<br />
You may already know the answer. But in case you don't...<br />
<br />
I packed a bag full of things I'd need - crab paste sandwiches, weak lemon drink, a compass, silk stockings and a plastic carrot - and set off on my journey through the Googles, a bit of oxygen but mainly laughing gas in my lungs.<br />
<br />
My first stop, and first sip of weak lemon drink, was at an Oracle <a href="http://docs.oracle.com/cd/E19253-01/816-5166/6mbb1kq31/" target="_blank">manpage</a>:<br />
<br />
<span style="color: #222222; font-family: 'arial', 'helvetica', 'nimbus sans l', sans-serif; font-size: 12px;">An IPv6 deprecated address will eventually be deleted when not used,</span><br />
<br />
Excellent! But when?<br />
<br />
My next stop pointed out the bleeding obvious (good, old <a title="Wikipedia" href="https://en.wikipedia.org/wiki/IPv6_address#Address_lifetime" target="_blank">Wiki</a>):<br />
<br />
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 20.3636px; display:inline-block;">When an address is assigned to an interface it gets the status "preferred", which it holds during its preferred-lifetime. After that lifetime expires the status becomes "deprecated" and no new connections should be made using this address. The address becomes "invalid" after its valid-lifetime also expires</span><br />
<br />
Er, yeah, that actually makes sense. Indeed:<br />
<br />
<div style="background-color: black; color: cyan;">$ ip addr | fgrep -A 1 temporary<br />
inet6 fd3c:c307:7f95:0:6957:dcf5:f759:e2e9/64 scope global temporary dynamic<br />
valid_lft 575828sec preferred_lft 56828sec<br />
inet6 fd3c:c307:7f95:0:d5b5:b1d0:a807:21a9/64 scope global temporary deprecated dynamic<br />
valid_lft 490031sec preferred_lft 0sec<br />
inet6 fd3c:c307:7f95:0:10d:8171:ff7f:777f/64 scope global temporary deprecated dynamic<br />
valid_lft 404233sec preferred_lft 0sec<br />
inet6 fd3c:c307:7f95:0:4dc0:7c07:c401:490b/64 scope global temporary deprecated dynamic<br />
valid_lft 318436sec preferred_lft 0sec</div><br />
When <b>valid_lft = 0</b> then it's curtains for that address. The default on my computer seems to be to set a <b>valid_lft = 604800</b> (7 days) that is seven times the <b>preferred_lft = 86400</b> (24 hours). Not a massive deal but it does mean that after seven days I'd have six or seven deprecated <a title="Unique Local Address" href="https://en.wikipedia.org/wiki/Unique_local_address" target="_blank">ULA</a> addresses hanging around per interface, and eventually another six or seven deprecated global unicast addresses per interface too, assuming privacy extensions are enabled. Messy.<br />
<br />
I know, I know, I can disable ULA if I want to. But I don't want to. So that's that solved.<br />
<br />
There is a <b>max_addresses</b> parameter (default 16). I tried to find out if the system would remove the old deprecated addresses or report a failure when this limit is reached, but the bloody stupid thing gave up long before I got near this limit and removed all deprecated addresses far too early, and refused to create more ULAs.. I may visit this again sometime. Of course with this default of 16 I could easily exceed this limit assuming two routers with two global IPv6 addresses are reachable via one NIC, and ULA is enabled - easily achievable using fibre and LTE on one router, for example.<br />
<br />
<a href="https://tools.ietf.org/html/rfc4862" target="_blank">RFC 4862</a> talks about how deprecated and invalid addresses should be treated but doesn't mention when the node should simply drop the address altogether. It makes sense for an operating system to simply rid itself of the burden as soon as the address has expired.<br />
<br />
You may now enjoy the crab paste and put the plastic carrot to good use.<br />
<br />
For reference (at time of writing):<br />
<br />
<b>valid_lft</b> and <b>preferred_lft</b> can be set/queried in <a href="https://www.kernel.org/">Linux</a> at <b>/proc/sys/net/ipv6/conf/default/temp_valid_lft</b> and <b>/proc/sys/net/ipv6/conf/default/temp_preferred_lft</b>, respectively:<br />
<br />
<div style="background-color: black; color: cyan;">$ cat /proc/sys/net/ipv6/conf/default/temp_*<br />
86400<br />
604800</div><br />
<div style="font-size: small;">References:<br />
<ul><li><a href="https://home.regit.org/2011/04/ipv6-privacy/">https://home.regit.org/2011/04/ipv6-privacy/</a></li>
<li><a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/ip-sysctl.txt?id=HEAD">http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/ip-sysctl.txt?id=HEAD</a></li>
</ul></div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-3005246188809777522015-12-10T19:26:00.001+00:002016-01-15T00:32:15.445+00:00Roku / Now TV hidden menus<div style="text-align: center;">
<b>Bit Rate Override</b><br />
Home x5, Rewind x3, Fast Forward x2<br />
<br />
<b>Channel Info</b><br />
Home x3, Up x2, Left, Right, Left, Right, Left<br />
<br />
<b>Developer Settings</b><br />
Home x3, Up x2, Right, Left, Right, Left, Right<br />
<br />
<b>Platform/Wi-Fi Secret Screen</b><br />
Home x5, Fast Forward, Play, Rewind, Play, Fast Forward<br />
<br />
<b>Reboot</b><br />
Home x5, Up x1, Rewind x2, Fast Forward x2<br />
<br />
<b>Secret Screen</b><br />
Home x5, Fast Forward x3, Rewind x2</div>
Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com1tag:blogger.com,1999:blog-2459063531900295032.post-6993012557903894962015-04-10T05:10:00.000+01:002018-07-18T03:43:27.193+01:00Throttling CPU usage with Linux cgroupsThere are a number of reasons you may want to throttle rather than limit a process's CPU usage on your system. One very good reason is to keep the CPU temperature down or to simply reduce the amount of energy a certain process uses.<br>
<br>
<b>Limiting versus throttling</b><br>
<br>
The term "limit" is nearly always used where throttling is actually required. A good example of why the two are not interchangeable would be the current ISP industry:<br>
<br>
Example 1: Sally signs up for super fast broadband (100 Mbps) but hasn't read the small print: she can only download 10 GB of data before her connection is terminated and she has to wait for the next month before she can continue to use her service. Sally's service is not throttled but it is limited.<br>
<br>
Example 2: Tony signs up for a basic package (1 Mbps) as he doesn't need to use the Internet a great deal. However he had the good sense to use an unlimited package so that he doesn't hit any usage caps. His router syncs at 100 Mbps but he only receives a 1 Mbps service. The ISPs equipment is throttling his service, but not limiting it.<br>
<br>
Example 3: Benedict has signed up for some deal without reading any of the details. He receives a 20 Mbps service and is happy with the speeds. Unfortunately for him after downloading 5 GB of data his download rate drops to 1 Mbps. He has limits on his service which has led to it being throttled.<br>
<br>
There are many instances where you may wish to both limit and throttle CPU usage. The former is very easy and well documented, the latter not so much.<br>
<br>
<a href="https://kennystechtalk.blogspot.com/2015/04/throttling-cpu-usage-with-linux-cgroups.html#more">Continue reading »</a>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-19859521991908083142015-04-07T21:48:00.000+01:002016-01-09T14:00:09.477+00:00Xpra failing on localhostIf you know <a href="http://www.xpra.org/" target="_blank">Xpra</a> then you know you can access a "background" X session remotely. It's reasonable to assume that you may also want to access it locally from time to time.<br />
<br />
On Ubuntu Precise I was finding that attempting to access the local session failed silently. I have been using:<br />
<br />
<b>$ xpra attach -z0 ssh:user@localhost:99</b><br />
<b><br />
</b> This produces no output. The server log isn't very forthcoming either:<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;">
New connection received<br />
Handshake complete; enabling connection<br />
encoding set to rgb24, client supports ['rgb24', 'jpeg', 'png'], server supports ['rgb24', 'jpeg', 'png']<br />
Unhandled error while processing packet from peer<br />
Traceback (most recent call last):<br />
File "/usr/lib/xpra/xpra/protocol.py", line 338, in _process_packet<br />
self._process_packet_cb(self, decoded)<br />
File "/usr/lib/xpra/xpra/server.py", line 1957, in process_packet<br />
self._packet_handlers[packet_type](self, proto, packet)<br />
File "/usr/lib/xpra/xpra/server.py", line 1371, in _process_hello<br />
f = open(mmap_file, "r+b")<br />
IOError: [Errno 13] Permission denied: '/tmp/xpra.QGv7UA.mmap'<br />
connection lost: empty marker in read queue<br />
Connection lost</div>
<br />
The clue is in the <b>.mmap</b>. The server needs to be started with the <b>--no-mmap</b> option.<br />
<br />
From the man page:<br />
<br />
<div style="background-color: black;">
<span style="color: white; font-family: Times, Times New Roman, serif;"> --no-mmap</span><br />
<span style="color: white; font-family: Times, Times New Roman, serif;"> Disables memory mapped pixel data transfer. By default it is normally enabled automatically</span><br />
<span style="color: white; font-family: Times, Times New Roman, serif;"> if the server and the client reside on the same filesystem namespace.</span></div>
<br />
All good!Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-69593261301243738012014-01-30T12:55:00.000+00:002015-01-20T15:38:19.939+00:00Installing Wine on Ubuntu SaucyThis is a very short post because it is very simple, if not immediately obvious.<br />
<br />
<b>Symptom:</b><br />
<b><br />
</b> You are trying to install or build Wine from either the official Ubuntu repositories or from the PPA and are constantly receiving dependency errors.<br />
<br />
<b>Cause:</b><br />
<b><br />
</b> Multiarch is supposedly working on Ubuntu now so you should see everything work! You won't.<br />
<br />
<b>Solution:</b><br />
<br />
<div style="background-color: #ffe599; color: blue;">
$ sudo dpkg --add-architecture i386<br />
$ sudo apt-get update<br />
$ sudo install wine</div>
<br />
Apt will now pull the FULL dependency list. The same is true for apt-get build-dep.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-80398018435622223102014-01-22T14:10:00.000+00:002015-11-02T07:10:01.178+00:00Resetting the Rhythmbox music databaseMonths and months and months ago my Rhythmbox decided that it needed to duplicate its database. Every song was repeated. The result being if I put an album on, I got the bloody song played twice.<br />
<br />
At the time I searched and searched and searched for a solution, and then I gave up. All I could find was the usual utter bollocks from people who have no idea what they're talking about. Warnings about how removing the music database will leave the whole application in an unusable state. What a load of crap. I gave up because I couldn't be arsed with this chew. Well, it's annoying me again.<br />
<br />
Logically: a new user running Rhythmbox doesn't have a music database; it has to be created. Therefore I should be able to remove the database and a new one will be created.<br />
<br />
Solution:<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;">
$ mv ~/.local/share/rhythmbox/rhythmdb.xml ~/.local/share/rhythmbox/rhythmdb.xml.old</div>
<br />
<b>Easy!!!</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-w9WzPQk0eOY/Ut_PhKt2U0I/AAAAAAAApmk/evb2l_YTmOc/s1600/Screenshot+from+2014-01-22+13:58:18.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="259" src="http://4.bp.blogspot.com/-w9WzPQk0eOY/Ut_PhKt2U0I/AAAAAAAApmk/evb2l_YTmOc/s1600/Screenshot+from+2014-01-22+13:58:18.png" width="640" /></a></div>
<b><br />
</b> <b><br />
</b><br />
<b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> <b><br />
</b> Predictably, the new database is half the size of the old one.<br />
<b><br />
</b> <b><br />
</b>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-63923741683600420162014-01-08T19:48:00.000+00:002014-03-10T19:52:16.722+00:00Silencing rtkit-daemon in the syslogIf you're running Ubuntu and use applications that call for realtime priority then you have probably noticed your syslog filling up with garbage:<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;">
Jan 8 18:26:18 aspire rtkit-daemon[1955]: Supervising 6 threads of 2 processes of 1 users.<br />
Jan 8 18:26:18 aspire rtkit-daemon[1955]: Successfully made thread 31761 of process 31676 (n/a) owned by '1000' RT at priority 2.<br />
Jan 8 18:26:18 aspire rtkit-daemon[1955]: Supervising 6 threads of 2 processes of 1 users.<br />
Jan 8 18:26:18 aspire rtkit-daemon[1955]: Successfully made thread 31761 of process 31676 (n/a) owned by '1000' RT at priority 2.<br />
Jan 8 18:26:18 aspire rtkit-daemon[1955]: Supervising 6 threads of 2 processes of 1 users.<br />
Jan 8 18:26:19 aspire rtkit-daemon[1955]: Successfully made thread 31761 of process 31676 (n/a) owned by '1000' RT at priority 2.</div>
<br />
I have, anyway! Thousands of lines obscuring the "interesting" parts of the system log.<br />
<br />
Solving this little problem is not immediately obvious and certainly not well documented. It can be solved in three relatively easy steps. You do need root access.<br />
<br />
Step 1: Create the configuration file for rsyslog.<br />
Step 2: Reload rsyslogd.<br />
Step 3: Reload rtkit-daemon.<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;">
$ sudo cat > /etc/rsyslog.d/20-rtkit-daemon.conf <<EOF<br />
if \$programname == 'rtkit-daemon' then /var/log/rtkit-daemon.log<br />
& ~<br />
EOF<br />
sudo service rsyslogd restart<br />
sudo rtkitctl -k</div>
<br />
Notes:<br />
<ul>
<li>Tell rsyslogd to restart, reloading doesn't work.</li>
<li><span style="font-family: Times, Times New Roman, serif;">rtkitctl -k</span> should kill rtkit-daemon and then allow it to automatically re-spawn. If not you will also need to issue <span style="font-family: Times, Times New Roman, serif;">sudo rtkitctl --start</span>.</li>
<li>See <a href="https://bugs.launchpad.net/ubuntu/+source/rtkit/+bug/1267212" target="_blank">https://bugs.launchpad.net/ubuntu/+source/rtkit/+bug/1267212</a>.</li>
<li>I used a number before 50-default.conf (i.e. 20-rtkit-daemon.conf) because otherwise the logs are duplicated in both the syslog and rtkit-daemon.log [20 < 50].</li>
<li>The <b>\$ </b>is needed if you are copying the above exactly into your command shell.</li>
</ul>
Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-60826734968795518122013-09-13T18:50:00.000+01:002013-10-01T17:26:28.970+01:00Configuring zRAM on the Sony Xperia Play with FreeXperia ZeusIf you have unlocked your Xperia Play and installed FreeXperia (<a class="g-profile" href="http://plus.google.com/117962666888533781522" target="_blank">+CyanogenMod</a> 9.1) then you will quickly discover that enabling zRAM via the Performance settings has no effect whatsoever.<br />
<br />
<a href="http://3.bp.blogspot.com/-_XwlKKspFoQ/UjNMU4S-i6I/AAAAAAAAjB4/mz7iq-7yg90/s1600/Screenshot_2013-09-13-18-25-48.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-_XwlKKspFoQ/UjNMU4S-i6I/AAAAAAAAjB4/mz7iq-7yg90/s320/Screenshot_2013-09-13-18-25-48.png" width="179" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
I have <a href="https://code.google.com/p/freexperia/issues/detail?id=1672" target="_blank">reported this as a bug</a> but the project team seem more interested in burying their head in the sand so you won't get any help at all from them. I even asked for help on the <a class="g-profile" href="http://plus.google.com/117512736228443543679" target="_blank">+FreeXperia</a> <a class="g-profile" href="http://plus.google.com/101560853443212199687" target="_blank">+Google+</a> page but I gave up on asking for any help from anyone there a long time ago.<br />
<br />
The provided Linux kernel definitely does have zRAM enabled.<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;"># ll /dev/block/zram*<br />
brw------- 1 root root 253, 0 Sep 10 13:10 /dev/block/zram0</div><br />
The problem lies within the UI to configure it. No scripts seem to be created or executed so either the option is a stub or it is simply broken.<br />
<br />
Initially I decided to use <a href="http://play.google.com/store/apps/details?id=com.SetXperia.Inteks.org&reviewId=Z3A6QU9xcFRPRTE4aVcya2FKZ3l6cDA3OVlHNHp2NHNQVkhiNGlBZGkzTTB6TTB0UHplMlBOWDlaNzVjNGZZR2Ruem04V1p1aDhzSHc5dVhJU1BIc1VJc2Vn" target="_blank">SetXperia</a> which, again, proves that the kernel part is fine, but SetXperia remains in RAM all the time, and even in the notification area. I just don't see the point in that.<br />
<br />
It can't be that difficult to enable zRAM, right?<br />
<br />
Using the Ubuntu <a href="http://packages.ubuntu.com/precise/zram-config" target="_blank">zram-config</a> package it was fairly easy to work out what was needed and hence create a script.<br />
<br />
<div style="background-color: black; color: white; font-family: Times, Times New Roman, serif;">#!/system/bin/sh<br />
<br />
SWAPPINESS="35"<br />
TAG="zram-config"<br />
<br />
log -p i -t $TAG "Setting vm.swappiness to $SWAPPINESS"<br />
logwrapper sysctl -w vm.swappiness=$SWAPPINESS<br />
log -p i -t $TAG "Done."<br />
<br />
log -p i -t $TAG "Setting up zram"<br />
echo 75497472 > /sys/block/zram0/disksize<br />
logwrapper mkswap /dev/block/zram0<br />
logwrapper swapon /dev/block/zram0<br />
log -p i -t $TAG "Done."<br />
<br />
log -p i -t $TAG "All done."</div><br />
I dropped this script into <span style="font-family: Courier New, Courier, monospace;">/data/local/userinit.d/zram-config</span> (remember to set <span style="font-family: Courier New, Courier, monospace;">+x</span> on the script).<br />
<br />
All the <span style="font-family: Courier New, Courier, monospace;">log</span> and <span style="font-family: Courier New, Courier, monospace;">logwrapper</span> stuff is obviously to send details to the log. It probably doesn't work as the script is run before Android is loaded. Indeed, I've never seen anything using <span style="font-family: Courier New, Courier, monospace;">logcat</span> unless it's run manually. They are not needed for the script to work.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">vm.swappiness</span> is set to <span style="font-family: Courier New, Courier, monospace;">60</span> by default. You shouldn't change that unless you know what you're doing. In my case <span style="font-family: Courier New, Courier, monospace;">sysctl -w vm.swappiness=35</span> does this. I could not find a config file for <span style="font-family: Courier New, Courier, monospace;">sysctl</span> (such as <span style="font-family: Courier New, Courier, monospace;">/etc/sysctl.conf</span>) as is the case for most Linux distributions.<br />
<br />
The Ubuntu script sets up the amount of zRAM based on the amount of RAM and creates separate devices based on the number of cores, which makes sense because it's a generic script to be used on a vast array of machines including, recently, mobile platforms. There's no real need to do that unless you plan on dropping the script on a variety of different devices. You should decide for yourself how much zRAM you want to configure.<br />
<span style="font-family: Courier New, Courier, monospace;"><br />
</span> <span style="font-family: Courier New, Courier, monospace;">echo 75497472 > /sys/block/zram0/disksize</span> sets my zRAM device to 75 MB.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">mkswap /dev/block/zram0</span> sets up the device as a swap device, as you would with any normal swap.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">swapon /dev/block/zram0</span> enables the swap.<br />
<br />
This can, of course, be used with any device that has zRAM enabled in the kernel.<br />
<br />
<div><div style="background-color: black; color: green; font-family: Times, 'Times New Roman', serif;"># uname -a</div><div style="background-color: black; color: green; font-family: Times, 'Times New Roman', serif;">Linux localhost 2.6.32.9-FXP #1 PREEMPT Fri Apr 19 17:37:58 EEST 2013 armv7l GNU/Linux</div><br />
I recommend installing <a href="http://play.google.com/store/apps/details?id=id.co.ptskp.android.zs" target="_blank">ZRAM Status</a> from the Play Store so that you can see that your zRAM is being used, along with some interesting, nerdy statistics.<br />
<br />
<a href="http://3.bp.blogspot.com/-iOOpxxgHiOk/UjNSYSIDwiI/AAAAAAAAjCI/74e3X0Ou5EY/s1600/Screenshot_2013-09-13-18-55-28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-iOOpxxgHiOk/UjNSYSIDwiI/AAAAAAAAjCI/74e3X0Ou5EY/s320/Screenshot_2013-09-13-18-55-28.png" width="179" /></a><br />
<br />
<br />
Remember that you will need to reboot your device (or run the script manually) to enable zRAM the first time.</div><div><br />
</div>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-45399297944017823512013-08-23T02:52:00.000+01:002015-04-18T20:55:15.828+01:00Start the Android media scanner from the command lineIf you're like me, and let's hope for your sake that you're not, you find it much easier to run an <a href="http://kennystechtalk.blogspot.co.uk/2013/06/dropbear-ssh-server-on-android.html" target="_blank" title="Dropbear SSH server on Android">SSH server</a> on your Android device than using something like adb or USB Mass Storage or any of the other crap out there.<br>
<div>
<br></div>
<div>
With SSH I can simply and easily check logcat, netstat, issue commands, copy files and generally bugger about.</div>
<div>
<br></div>
<div>
Sometimes you have moved quite a lot of files around and you need your media scanner to launch to update its database. This can be done via the CLI.</div>
<div>
<br>
</div><a href="https://kennystechtalk.blogspot.com/2013/08/start-android-media-scanner-from.html#more">Continue reading »</a>Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-74955120845183789122013-08-20T16:35:00.000+01:002016-01-15T00:37:41.525+00:00Putting Windows XP to sleep remotelyHave you noticed that when connected to Windows XP via RDP that the Start Menu option for putting the machine to sleep vanishes? What the Hell is that all about?<br />
<br />
It doesn't even make sense when you can wake the machine with Wake-on-LAN to reconnect if you need to. Saving energy not really a priority here.<br />
<br />
To make things worse the Task Manager's menus have Standby and Hibernate disabled too.<br />
<br />
You could mess about installing VNC, but why bother? Turns out the solution is incredibly easy!<br />
<br />
Open a command prompt and enter:<br />
<br />
<div style="background-color: black; color: cyan;">
C:\> rundll32 powrprof.dll,SetSuspendState</div>
<br />
That's it! The computer will enter Suspend.<br />
<br />
If you're looking to hibernate the machine instead then:<br />
<br />
<div style="background-color: black; color: cyan;">
C:\> rundll32 powrprof.dll,SetSuspendState Hibernate</div>
<br />
Job's a good un.<br />
<br />
Now go install Linux.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0tag:blogger.com,1999:blog-2459063531900295032.post-73909264530414156662013-08-08T16:26:00.001+01:002013-08-08T16:26:37.700+01:00.nomedia is recursive on Android devicesJust a small note but I thought I best mention it as not everyone realises this.<br />
<br />
Your /sdcard can often have a lot of garbage in it that you do not necessarily want to appear in your Media Album.<br />
<br />
A solution to this is to add .nomedia (a zero byte file) to the directories that you do not want the Media Scanner to scan. What you need to be aware of is that the Media Scanner will skip this whole directory and will not recurse into subfolders. The result being if you drop the file /sdcard/.nomedia then <u>nothing</u> on the SD card will be scanned nor added to the Media Library.<br />
<br />
If you're one of those people who drops everything on /sdcard then you need to tidy it up a bit. /sdcard/downloads for example is nearly always the best place to drop your downloads, and you rarely want that stuff scanned. If you do then create new directories:<br />
<br />
/sdcard/Music<br />
/sdcard/Movies<br />
/sdcard/Porn<br />
<br />
for example.<br />
<br />
This way you can simply <span style="background-color: black; color: lime; font-family: Times, Times New Roman, serif;">touch /sdcard/Porn/.nomedia</span> so that it doesn't appear in your Media Album.Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com1tag:blogger.com,1999:blog-2459063531900295032.post-50680057993887686642013-08-08T15:24:00.000+01:002013-08-23T03:32:52.375+01:00Installing gcc on OpenIndianaThis shouldn't have been such a difficult task, but it has taken me four days (on and off) to work it out.<br />
<br />
Problem: Install gcc on OpenIndiana<br />
Pain level: 8/10<br />
Solution: Simple!<br />
<br />
I Googled around a huge amount and all the articles I found were utterly useless. They suggested that once gcc is installed that is should be in /usr/sfw/bin, and the reason a configure script cannot find it is because /usr/sfw/bin is not in the $PATH by default.<br />
<br />
Well, doing a pkg search gcc reveals a load of different packages, which is quite nice - it's always nice to have a choice, but after installing a bunch of them it didn't seem to make any difference. To be honest I have no idea what files have actually been added to my system, and I haven't yet worked out how to get the file list (yes, I'm a Solaris n00b).<br />
<br />
<b>Anyway: easy, really: <span style="font-family: Times, Times New Roman, serif;">pkg install SUNWgcc</span></b><br />
<br />
And that's it! Solved! You don't even need to update your path. Marvellousfish.<br />
<br />
<div style="background-color: black; color: lime; font-family: Times, Times New Roman, serif;">$ uname -a<br />
SunOS openindianaVM 5.11 oi_151a7 i86pc i386 i86pc Solaris</div><br />
Thanks: <a href="http://hashbang0.com/2008/05/19/installing-gcc-on-opensolaris/">http://hashbang0.com/2008/05/19/installing-gcc-on-opensolaris/</a><br />
<br />
It should be noted that SUNWgcc has problems with .visible, but the <b>gcc</b> package cannot find it's own dependencies! (Binaries in /opt/gcc/4.4.4/bin). Buyer beware!Kennybobshttp://www.blogger.com/profile/07093672022261267772noreply@blogger.com0