Showing posts with label APPLE. Show all posts
Showing posts with label APPLE. Show all posts

2024-08-15

Cool feature on VoLTE

Our SIP2SIM SIMs run through ONSIM/Tango, and uses VoLTE normally. OK a lot of acronyms, I know.

The key point is we feed the call to the mobile network using SIP.

SIP allows the calling number to be set with a number (well, technically anything in the local part of the sip address) and a name.

Eg. I could have From: "Adrian" <sip:401@whatever>

On my SIP phone on my desk it shows both Adrian and 401, which is great. It has options to show one or the other or both.

I use this feature in our call routing, so, for example, if someone calls my 02000 number, I prefix the name part with a 2, and then the calling number. Similarly if someone calls my 0800 number I prefix it with 080. That way, even if all I can see is the name part, I get to see the calling number and a prefix indicating which of my numbers was originally called. In hindsight I may make the 0800 just have 8 as 080 then 0 looks even more confusing at first.

For example, this call:

As you see, the name part is 0800759...

What I have noticed is that the name part gets all the way to my mobile (iPhone).

I know this because of the missed call list.

Sadly when the call comes in, the main phone screen only shows the CLI, not the name part, which is a shame. Though on my Mac (which also shows the incoming call) it shows both.

It would be nice to have an option to show name, or both.

P.S. I cannot tinker with the actual CLI due to OFCOM rules - it has to be a plausible number. The fact the name gets through gives some hope of handling better local / internal CLI using Name field.

2024-04-13

Apple sleep tracking

I only post this because someone else may be as confused as I.

It is confusing - the instructions are very very clear that the Apple Watch will track sleep only when in "sleep focus", and you can set a schedule for that.

My issue is that I do not got to sleep at the same time - I could go to bed as early as 6pm or as late as 11pm. I could sleep all night, or sleep, and be awake, and sleep again (the old school "two sleeps" that apparently was the norm in medieval times) - last night I was awake and watched the really good "Miss Potter" film between sleeps. And no, I was not "in bed" all that time, so it is a tad confused and probably could have worked that out.

So I did not want to set a sleep focus schedule that was too soon as it stops notifications/alerts/calls. But also did not want to set too late so it does not record sleep. I did not want to set manually as I would forget, plus, it seems, you have to tell it to end the sleep focus (even if you have a schedule). I do get up consistently in the morning, so that helps.

My concerns were totally unfounded, as it seems that Apple are happy to record sleep starting way before your sleep focus is scheduled to start. So I can simply set for a sensible later time.

Why the hell don't Apple explain this? Why make me think I have to fuck about with "sleep focus schedule"?

2021-07-26

Fun with DHCP

We have had a slight issue at the house here, we have some Apple HomePod things. My son decided to put several in the house when staying here and now my wife is using one.

The snag is that they keep falling off the internet! A power cycle fixes, but it is very frustrating.

I have found the solution though, and I think it points a finger at the cause.

And it is all down to DHCP. Yep, not DNS this time. Not IPv6 even. DHCP!

So what's the problem?

First off, what's the kit?

  • FireBrick doing DHCP and Internet gateway
  • Aruba APs
  • Apple HomePods

The failure did not seem to be all the time, but could be. Sandra has almost given up using them as they never work. But it seems it can usually renew its DHCP without problems, but sometimes it gets stuck. The logs on the FireBrick showed we kept sending a DHCP "Offer" to the HomePo, but it keeps asking.

I added lots of debug, and confirmed that the request being sent, the DHCP "Discover", does not request a broadcast reply, which is fine, so we send the reply to the MAC of the HomePod and its "new" IP address. This is normal.

On a whim, I decided to try fudging the code to treat the discovery as if it has asked for a broadcast reply. This then meant a Discover, Offer, Request, and Ack - but the HomePod did not see the Ack and so kept asking. I then forced the broadcast on the Ack as well, and bingo, it worked. So the issue is the broadcast used for Offer and Ack.

This is a massive clue.

So more investigating.

The RFC says the broadcast request is in the left most bit of a 16 bit flag field.

PLEASE DO NOT DO SPECIFICATIONS LIKE THIS!

I fully understand that bits in a byte may be sent "on the wire" low or high bit first, or high to low bit first. I fully understand that bytes in a word may be ordered big endian or little endian. The above diagram is for a 16 bit "network byte order" value (i.e. big endian).

They number the bits from 0 to 15. Actually they number the gaps between the bits 0 to 15.

In my view there is only one way you should number bits - by their binary power of two value. I would always write that in the way we write numbers, most significant first, so would write that as bits 15 to 0, and it is bit 15 that is the B flag. I don't mind if showing as bits 15 to 8, and 7 to 0 (big endian) or even as 7 to 0, 15 to 8 (little endian), but number each bit by its power of two value, please!

Some people number as order on the wire, starting from 1. So 1 to 8 may be 0 to 7 or 7 to 0, who knows! Please do not do that. But at least if numbering bits 1 to 8, you have some clue that something is wrong.

So, to be quite frank, I actually do not know if this is bit 0 or 15 in a network byte order (big endian) 2 byte (16 bit) value. We assumed it is bit 15, i.e. bit 7 in the first byte. But seriously, from bits numbered 0 to 15 and a reference to "left most bit" I don't actually know for sure. I started to doubt we had read the RFC correctly!

Thankfully empirical testing shows the flags as 0x8000 from other devices, so either it is bit 7 of first byte, or other devices have the same fun reading the RFC. 

So who is at fault here?

Well, my son has the same FireBrick and the same HomePods, but different APs. That all works. That is another clue.

My Aruba APs are set up to inject data in the DHCP, which is good. I get details of the AP and SSID, and can even tell the FireBrick to allocate based on SSID even if different SSIDs on the same physical network. All good.

It may be that it is stripping the broadcast bit, bit that does not explain why it works after a power cycle. Interestingly the working DHCP renewals did not have the injected AP details, it seems. This points further to the AP being "special"

My son does have different network switches as well, so it is just remotely possible that it is a switch level issue, but that seems unlikely - the DHCP discovers are from the right MAC so all switch learning should be fine.

P.S. Yes, I had changed the filtering to disabled already.

The work around...

FireBricks now have an option to force broadcast reply. And it works. Alpha out soon.

2018-05-19

Apple used to be good at this!

Once again I am moaning about Apple!



My issue is on-going watching of a TV series... A simple task which incidentally Netflix has well sussed.

Once upon a time it took several clicks to get from the main menu in to the TV shows and select the show, but at least at that point it knew which episode you were watching and where you had left off within the episode.

Then, wonder of wonders, the "TV" menu in the Apple appeared, and at power on it would be basically one-click to continue watching what you had been watching, in the right show and the right point in the show. This was finally almost as slick as Netflix.

Now, as you will see in the video, they are being extra special.

It remembers where you were, what series, what episode, and where in that episode. It shows on the main page when you turn it on, offering you "Up next" as "Continue" watching that episode. One click to play it.

But then it goes horribly wrong for no apparent reason. It says you need to install Netflix! If you cancel that you see the series of shows, and the episode you are on selected ready to play. If you select, then again, you have to install Netflix.

Why?

If you go up several levels of menu, in to TV shows, pick purchased items, and all items, and scroll to find the show you were watching, you eventually find it is there but is offering to show episode 1. So you then have to find the episode you were watching if you can remember, and play.

It plays, with no Netflix needed, and carries on from where you stopped (within that episode)...

I just don't get it! It makes no sense. It seems to only be some series, but it baffles me how they release such broken code with such serious bugs in it. Seriously, Apple used to be good at user interface - it was their thing.

2018-03-12

Fair reporting

I rant on here and some times there are reasons to be positive instead of negative.

I ranted about Apple, and they have fixed things, so here is the "Well done Apple" video.



They have done a lot, and I am sure it is not down to my blogs and videos.

FYI, the Canon gripe was multiple things - the screen is touch focus and so very easy to accidentally touch the corner and have a string of videos focused on the wall FFS. The recording will revert to card 1 far too easily and then not record video one a few seconds. I managed to accidentally move the exposure bias, FFS, far too easy to do that. Then, on like the 10th take, someone called me in the middle - I had all on silent apart from my desk phone, and nearly lost the plot. The above video is around 6 minutes original as a result. I even had the Apple TV crash at one point, but I'll let it off this time.

Oh, and wow - that I am a "bond villain for turning to/from the screen like that". Thanks.

2018-02-16

Apple iMac Pro 10G Ethernet buggy?

I would be interested in anyone else able to test this on their iMac Pro to confirm as it seems highly unlikely to be anything but a simple driver bug. Sadly to test you need to craft broken TCP/IP packets.

Myself and a colleague have wasted a lot of time trying to track an issue over the last few days, it seemed to be that a simple TCP stream could have corrupted data in it.

Basically, we would do a test of a web page served from a device (the FireBrick as it happens, with test s/w on it), and the page would be all nulls and spaces, or should be, but random corruption would appear.



To be 100% frank we have not tracked it down yet, but we initially assumed it had to be an issue in the new FireBrick code. We are just launching the FB2900, so any issue in testing is somewhat serious.

Now, if you know anything about networking, TCP as a stream will only work if you get proper packets at both the TCP level and lower levels like Ethernet, with good checksums/CRCs. Whilst Ethernet is generated on each link. The TCP checksum is end to end (no NAT involved here).

So, you have a visible, albeit slightly intermittent problem - basically view a specific web page from a specific device and see gibberish in the page. You naturally assume it has to be within the TCP stack / processing of each end as that is where data could be corrupted without breaking the TCP checksum logic. There are two ends, one is my nice shiny new iMac Pro and the other is a FireBrick somewhere on the end of a DSL line. It has to be one of those two ends with the issue, and well, obviously not the iMac, so look at the newest code, and latest hardware, at the FireBrick end. Anywhere in between would cause a TCP checksum error and so we would not see in the final TCP stream.

A lot of time wasted, and a clue pops up - cannot make it happen from the iMac (not the Pro) at the office. Hmmm. Sadly it is a tad intermittent, so not conclusive. I could not make it happen locally either, but assumed the slower uplink and more buffering may be a factor.

Then it gets really really weird, and I can imagine some network engineers would pull their hair out at this point. On my home iMac Pro I did lots of the same test. I tested on wired Ethernet (running only at 1Gb/s), and on WiFi. Every time on wired it got corruption. Every time on WiFi it did not. A dozen tests. Pretty conclusive. WTF?

Seriously how can that be - clearly the iMac Pro is not randomly corrupting TCP streams, as I would notice in web pages, images, etc. Even, as it seems, levels like 1 in 1000 packets, you'd notice. So why only the stream from the FireBrick. It cannot just be an iMac bug...

So I used wireshark to pcap on the iMac Pro, and yes, it saw the corrupted content. Odd. Then it occurred to me - tell wireshark to check checksums. Bingo, the TCP checksum is bad. Yet the iMac Pro has accepted the packet and fed the corrupted data in to the TCP stream!

This changes the game massively. It means this is a raw data corruption somewhere on the route from the FireBrick to me. It could be ANYTHING now, as not in the TCP realm as the TCP checksum is wrong. We were (probably) looking in totally the wrong place for this issue. Thanks Apple!

It seems that the iMac Pro wired Ethernet is not checking TCP checksums. The WiFi is fine. Likely cause is that they use h/w TCP checksum logic on the MAC (not Mac, I mean Media Access Control, the Ethernet hardware) and there is either a h/w or s/w bug meaning the checksum check is not being checked! It is an easy bug to exist and one you will not notice generally as almost all packets have no TCP level corruption!

Reported to Apple but also said that I am not spending ages doing logs and crap for them unless I am paid my hourly rate.

When debugging you really do not expect two unrelated bugs to be in play at once. This is hard work.

Sadly, at this point, we confirmed the corruption is definitely upstream of my Mac (dumps on router in-between), but the bug has vanished for now - Heisenbugs we call them. If/when we manage to reproduce it, we can then trace at each step along to way to find if an issue in our network, BT, the modem, switches, and so on, or, as is seemingly increasingly unlikely, the FireBrick at the far end. As this happened on old FB2700 and new FB2900 on this DSL line, but not anywhere else, the chance of this being in the FireBrick is getting vanishingly small.

Chasing bugs can be hard!


P.S. looks like it was BT supplied VDSL modem all along. Wow.

2017-12-27

Pre-order

A pet hate of mine is the use of "pre-order".

It's an "order" - ordering someone to send some goods. Yes, if they are not available yet they will ship at some time in the future, but it is still an "order". It is not something you do "before" (i.e. "pre") ordering, i.e. that later you then "order" it. It is the whole and complete "order" right there and then.

The latest site to annoy me on this is Satechi.


So...

  • They say "pre-order", annoying.
  • They say "Ships in 1-2 days" - WTF, wow, I am ordering just in time. Cool
  • They then say "Available on January 5th 2018"
Two of those statements appear to contradict. How can it ship in 1-2 days if it is not available for another 9 days!

Seriously, I got as far as "Ships in 1-2 days" and ordered, expecting in, you guessed it, "1-2 days".

Actually, I am not sure it had the "Available on January 5th 2018" when I ordered on 15th Dec. I am not even convinced it said "pre-order" as that would have rung alarm bells for me. Annoyingly they even offered a choice of shipping with how long they take, and I paid for the fastest one, believing the timescales quoted. Indeed, now, they have the product title as "Aluminum Type-C Clamp Hub Pro(Available on January 5th 2018)" but my order confirmation only has "Aluminum Type-C Clamp Hub Pro", so I am guessing they realised the error of their ways and made changes.

Also a tad annoying that they charged the card instantly, knowing they would not be shipping for weeks. No, not just an authorisation, it is completed card payment now.

Anyway, it will go nicely with the new toy that Santa UPS man in hired van finally delivered this morning.


2017-12-01

My Christmas present

The iPhone X is not my Christmas present, honest. It is OK, but to be honest not that "special", and the hassle getting it set up was a nightmare.

First off I had to iCloud backup, which meant sorting extra storage. Then it restored, good, but every single damn app knows the login but not the password. So setting up banking on Lloyds, and Barclays, and Monzo. Then setting up Twitter and Facebook, FFS, why is this not simple?!?!

My authenticator app has lost the details so I have yet to sort that, and Barclays deny me "pin sentry" for "up to 10 days" for no fucking good reason.

The FaceID works seamlessly but to be honest so did fingerprints.

Then Signal app no longer loads - not available on app store, WTF? That is a pain as we use that internally for out of band support and ops. Arrrrrg!

OK, so iPhone X, and I pronounce it "ex" as I selected "English" not "Roman", not the Christmas present.

The Christmas present, if it happens, is the new Mac Pro. It looks awesome. I do video editing from time to time, and it looks perfect for that. I want! Looks very not cheap...  Seriously, Apple, saying "available December" is not good in bloody "December"!

I am here, contemplating spending a shitload with you on my new toy, where is it?!?

/me goes back to a corner to cry.

P.S. In case it is not obvious, this is a little tongue in cheek and my being the average Apple consumer for a change. Though I do rather fancy the new Mac Pro :-)

Why? apple

A month ago we ordered an iPhone X with Apple business.

For the whole month, even yesterday, they were still saying they could not say when it would arrive.

Seriously!

But yesterday, if you try on-line on normal Apple Retail they offer to deliver in just over a week and have stores listed with stock you can collect?

So how can a month old order be behind that? What the hell is going on?

Well, Phil, at the office, gave the guy at apple some grief. It is ridiculous, and he went and found one from stock in the store. Thanks to Phil for popping to Reading to get it. Was the original order ever going to deliver? No idea, but this is a shambles Apple, a total shambles.

2017-11-09

The shame, the failure...

Sometimes one has a chance to be smug.



I really thought this was one of those times.

As is usual, on release of the latest shiny shiny from our friends at Apple, my son was there on his browser at 8am on the 26th trying to order a new iPhone X.

He was cursing. He could not get to the site initially as it was too busy. The Apple shopping App was not help. He could not get the Apple upgrade programme to work. He ended up faffing with a finance thing, and finally, in spite of all his efforts and fast typing, even only a few minutes after 8am, he got a date of end of November to early December.

I had a lie in, and around 9am, I decided, what the hell, I'll order one, and yay, end of November to early December. They provide a one week window of expected delivery.

However, a friend then told me that "Apple business have separate stock, you could get one on the 3rd".

I thought - yay, I can oversleep and be smug, I'll order from them, and cancel the other order.

So I checked, and we spoke to Apple business. It was a bit like...
  • Ordering starts 8am on 31st October...
  • OK, so how do we order
  • Send us an email
  • When, 8am?
  • No you can send now (this was the 30th)
  • OK so what happens at 8am
  • We send off the orders
  • Does it matter that we only ordered now and not earlier
  • No, they all go in a pool
  • OK so when will we get it
  • Well, they'll start shipping from 6th Nov
It was not clear if they meant shipping on 6th to arrive 7th, or shipping to arrive on 6th, or whatever. On 31st they confirmed the order had been sent at 8am. But we called on 3rd and were told they will tell us when we can expect it, on the 6th.

You can guess the rest I bet.
  • On 6th - no we don't know
  • On 7th - no we don't know
  • On 8th - no we don't know
  • On 9th - no we don't know
  • On 10th - no we don't know - but do keep chasing!
  • On 13th - no we don't know
  • On 14th - no we don't know
  • On 15th - no we don't know
This is really poor Apple. I know you have to allocate stock and there is a list but how hard is it to say when it will arrive, as an estimate. They manage it in retail. If it is going to be like 25th November, just damn well say so.

Sadly my smugness at having one on 3rd, or even 6th, has been thwarted by increasing amounts of time passing. I guess we'll see, and cancel whichever takes longer.

I feel I have massively had my smugness taken away. Even if I do get mine before my son, it will only be a few days, and the smugness will have diminished to a wry smile at best.

Damn you Apple!

BTW, Victoria got one on a contract, and got it on the 3rd, and out smugged us both.



P.S. Yes, I ordered one for my son too so that after I was smug I could cheer him up.

2017-10-05

Apple TV

I posted back in April...



And finally with the latest release, some 6 months later, my Apple TV is no longer asking my Apple password every time I try to watch anything.

I have to say that their support is pretty crap. Periodically, every month or two, I have called, and every time I get someone that is polite and nice and well trained in placating complaining customers. They will take on the case and be my point of contact. They will stay with it until it is resolved. They understand how frustrating it is. The customer interaction training is excellent, if not the technical support behind the scenes.

Every time they have something to delay matters, such as their support people wanting times/dates of the issue, and so on.

Often it was "they wanted to know X", but that was weeks of months before and nobody emailed me or called me to say they were now waiting for something. I had to brave using my Apple TV again, get pissed off with it, and after a few drinks, feel up to the conversation with them again. Hard work.

Irony now - friends of mine can no longer use their Apple TV at all, just not accepting their password at all. Ooops.

So, now, do I go for a 4K Apple TV as I have had a 4K TV for years now? Probably.

I feel like a sheep!

2017-07-27

Say the words three times, stand on one leg, what else?

After a couple of months I tried the Apple TV again.

Still broken, so I hassled Apple again yesterday, and to my shock they called back today saying they need some more logs. Can I make it go wrong three times and record the times.

This is sort of say "Bloody hell Apple!" three times, turn around, stand on one leg, sacrifice a chicken, burn special candles, throw salt over your shoulder, fuck knows. Does that conjure their engineering department. I hope so.

We will see. They say they will call back tomorrow for the details.

P.S. They did call back, as promised, and have the times so they can check logs...

2017-05-26

Oh Apple, thou art trying to vex me

With all the messing with my apple login to try and sort the apple-TV issue (no idea if fixed, not tried for two weeks), I ended up logging out and logging in on my Mac several times.

The first annoyance is that this left my Mac contacts book with about 7 copies of every contact. Very silly.

So, today, I deleted 6 out of 7 of each contact instance and tidied it up a lot.

What do you think happened?

Well, now I have one copy of each contact on my Mac and zero copies of them on my phone. Almost every contact has vanished from my phone.

Why Apple? Why?

2017-05-04

Apple TV

Where are we....?

I really have changed everything here. I changed apple ID email address, password, 2FA on/off, family sharing on/off, changed the physical Apple TV, change IP block it uses, and even confirmed the same happens on family sharing on a totally separate network and ISP.

This is down to my iTunes account some how.

I even got this today after buying something, and had to go in again to enter my password (again, as I had to enter to buy it).


Latest is they want an exact time (and time zone) of it happening, so did it on the call to them live, so they have details. We will see...

Apple and Unifi

Quick update...

I have seen this on the MacBook as well as the iPhone.

Still bugs me at home reading twitter in the bath. Switch changes not helped.

Symptoms are device thinks connected to (strong) wifi but unifi APs say not. Happens even with no DHCP involved. Happens between devices on same IP so not switch related!

I did the dump on all channels of the APs and showed the Apple device not trying to send anything.

Seems to be triggered by IPv6, and that means commonly FireBrick but not always by any means and a few people saying they have seen the same even not using Unifi!

So may be totally Apple borked.

2017-04-23

The plot thickens...

Unbelievable...

Today I decided to try something else with the Apple TV. I set up another Apple ID with iTunes store account. I then family shared my normal Apple ID to that.

I logged in as the new Apple ID and played episodes via the family sharing.

First episode fine.

Next episode - wants my iTunes password before playing...

And before someone asks, I also tried fixed IP config IPv4 only already.

Next step: physically swapping for another Apple TV

Update: didn't help - Apple TV using my account asked for iTunes password on playing one of the episodes. Arrrrg!

2017-04-21

Cursed apple

So where are we with my Apple TV saga...

They are referring to "engineering". That is it...

Latest things I tried...
  • Change apple ID, so if any machines I forgot are trying to log in then they will not know new apple ID.
  • Only have my Mac, Phone and Apple TV on the new Apple ID
  • Turn 2FA back on
  • Turn off home sharing, just in case
  • Log off iCloud, just in case
  • Again, confirm payment details, and actually buy a film on the Apple TV
Guess what - not helping. Still asking my iTunes password, around every hour, on play of episode, or rewind within it. Randomly will not even show episode with "unexpected error" requiring restart.

This is what makes pirating movies easier! If I pirated movies I would not have this hassle.

2017-04-19

Talking to apple support

I went through the iTunes email based support, took ages, and no help.

So I called 08001076285, as they suggested, to get support. It is a horrid voice based IVR thing. So I have to say my serial number the first time. This time I said my case number.

Oddly, they are actually very pleasant, so well done on that. I have a dread of calling any tech support normally. I hope our (A&A) tech support does not create the same sense of dread for customers. We have no call gate!

On the first call I explained the issue, and what I had tried. Eventually they suggested one thing I had not ("restoring" via iTunes and a cable). So I have done that now, and hence another call.

I am tempted to publish the call recordings (and annoying hold music). I will have to change my security questions first :-)

Basically, I have tried everything so far...
  • Changing password
  • Turning on two factor authentication
  • Turning off two factor authentication (twice now)
  • Removing all devices from account and starting again
  • Turning off family sharing
  • Factory resetting (many times)
  • Restarting using iPhone, and using manual setup
  • Using cable to "restore" the Apple TV via iTunes
  • Upgrading, many times
Still broken.

They think "something somewhere is asking for an iCloud password, or something" and that is upsetting it.

I removed all devices from my apple ID already, if this is what it is that is mad. I have just logged in to two iMacs and set new passwords. If that solves it Apple are fucking stupid! No way a third party failed login attempt should break my Apple TV. Just broken logic there Apple!!!

P.S. If this works I should do a more controlled test - what if someone just used my apple ID and wrong password, would that break it? If so Apple really are broken!

2017-04-07

Apple TV has gone terribly wrong for me

First off, my Apple TV appeared not to work - I swapped cables, nothing! So I got a new one, same model. Worked! Yay!

Simple enough, though sadly since then the new one did the same a few days later and I now conclude it may be the port on the TV that is being flaky, so on a new port - bugger. I may have chucked out a working Apple TV. Idiot!

However, that aside, the new apple TV is being odd.

Yes, I signed in to iTunes. I have 2FA set up, but that is not actually the root of this issue as I tested today. That all worked, all my stuff shows.

Problem is that every new episode of something I want to watch, even though already purchased, is asking for my Apple ID password, every fucking time.

To start with it popped up on my iPhone as well, so I had a keypad to enter it, but even that has now stopped.

It is making watching anything on Apple TV unbearable and I have no idea why. I have already removed the old Apple TV off my account. I tried removing 2FA (and have since put back). The best I have now is dictating my password for EVERY FUCKING EPISODE!!!

I have no idea why - I even told the Apple TV not to ask for password for purchases, yet it does, many times, and the still asks every time you try to watch every episode.

I will have to ditch it if this keeps up.



P.S. tried all the suggestions, thank you all for them. Finally removed from iTunes, factory reset, upgraded, and re-set-up. Seems to be being sane now again. But really, what a messed up failure mode.

P.P.S. Bollocks, that was fine for two episodes and then again is asking.

QR abuse...

I'm known for QR code stuff, and my library, but I have done some abuse of them for fun - I did round pixels  rather than rectangular, f...