Well, some people might like this to be making the man driving the JCB redundant, but not quite. More a matter of how to get a reliable Internet connection...
I do feel a tad sorry for some of our Ethernet customers, a few of which have had service long enough to have three outages. The latest today, but previous ones were power issues in the data centre. One involved a cat turning to charcoal on an HV transformer and one involved some sort of fire. Very bad luck to have this many issues, really!
The problem is that nothing is 100% reliable. We even have a data centre that guarantees 100% uptime for power, and so pays a few hundred quid if the power goes off. So that is a few pence per affected customer if we shared it out. Hmmm.
I hope we make it clear what risks there are and what can be done to reduce them when we sell our services. We aim to, certainly.
The two key topics here today are power and fibre.
Power: I know if I had put the stuff in my garage at home it would have had better uptime. That is fluke by far, and it would have had at least one outage. But data centres do a lot to ensure power works. They have generators and UPSs that means if the mains fails then they keep working without missing a beat. So when there is an outage, it is a failure of these lovely complex systems they have installed. One data centre power issue fried half our equipment! Even so, a data centre is a really reliable place to put equipment. Power outages should simply not happen and be short if they do. Adding a UPS in a rack would cause problems (both in terms of current used to charge it if everyone did this and by adding a new single point of failure). Sadly most data centres make it a PITA to have two separate feeds to a rack for dual fed kit, which would be the best option. At least we can dual feed from separate power control bars to help against some errors and failures.
Fibre: It really is inherently better than copper pairs. It has a really strong fibre tube surrounding it, and is not vulnerable to almost anything copper is, including RF interference and damp corroding connectors. Fibre just works until you break it. Don't touch it and it will work forever, pretty much.
Sadly the natural predator of fibre is the JBC. They are predators for copper too (along with some people nicking it to sell for scrap metal). A JCB, or just a badly placed jack hammer for some road works, can break stuff. It will break stuff.
The big problem is logistics of running fibre (or copper). Ducts are expensive, and ducts from A to B (data centre to exchange) need to take a single obvious route. In some cases they have no choice to be one physical point they pass (especially if bridges are involved). So you will have a single point of failure.
End result, yes, a fibre break today affecting our office and our Ethernet customers (separate fibres) which also affected other circuits in blue square. Lets hope BT sort it this evening.
We are considering a second POP for the Ethernet services. It will be a costly option but people will be able to buy two links separately terminated at our end.
Obviously we rely on the Internet ourselves. We don't just have the fibre, we have DSL lines and 3G backup as well. We have phones set up to divert to staff mobiles. We can cope. We found our plans lacking a tad and that delayed matters a while (stupid damn routers) so we'll be testing plans every month now to make sure they are not out of date. But we do have a plan.
The problem is people that do not. No matter how reliable data centre power is; No matter how reliable fibre links are; They will break one day. So have backup! Have a second backup! Have a third backup... Have a plan!
We have managed to get our IPv4 and IPv6 connectivity, phones and the various direct connect customers to us, all back on line this afternoon. With revised plans we'll be able to do it in seconds "next time". If we check the plan each month then that will not go wrong.
If 100% Internet access is essential to your business then you have to have plans, and processes to check those plans still work, and backup links, and so on, all in place, ready for something you hope will never happen. Redundancy...
Think about it before something breaks!
2011-08-30
2011-08-25
As smooth as a DALEKs bottom?
IPv6 routers: Thomson step up their game
We have something of a race on to get a working, entry level, IPv6 DSL router, and we are today one step closer.
Thomson ("IPv6 Ready") do have some test s/w on one of their routers (yes, the high end one, grrr) and testing today has gone well - it works! This bodes well for the small (technicolor) router having working IPv6 soon as it is the same base s/w. Thanks to the man from Thomson for driving to see us today.
But will they beat zoom or zyxel? Who knows. We are still testing.
Now, for the technical bit. This is not done using PPP (why why why why why) but using RA and DHCPv6. It seems the Billions cope perfectly well without any RA even in response to a router solicitation. However the Thomson expects an answer to a router solicitation. What is worse is it does fully honour the lifetime setting sent. This has a max time of 18 hours, so we are having to send periodic router announcements to keep the router working. Frustrating, but according to spec I suppose. We need this in PPP really.
Needless to say the FireBrick FB6202 LNS handles all this, and we have a Thomson working on our test LNS right now - yay!
So, the race is still on.
Thomson ("IPv6 Ready") do have some test s/w on one of their routers (yes, the high end one, grrr) and testing today has gone well - it works! This bodes well for the small (technicolor) router having working IPv6 soon as it is the same base s/w. Thanks to the man from Thomson for driving to see us today.
But will they beat zoom or zyxel? Who knows. We are still testing.
Now, for the technical bit. This is not done using PPP (why why why why why) but using RA and DHCPv6. It seems the Billions cope perfectly well without any RA even in response to a router solicitation. However the Thomson expects an answer to a router solicitation. What is worse is it does fully honour the lifetime setting sent. This has a max time of 18 hours, so we are having to send periodic router announcements to keep the router working. Frustrating, but according to spec I suppose. We need this in PPP really.
Needless to say the FireBrick FB6202 LNS handles all this, and we have a Thomson working on our test LNS right now - yay!
So, the race is still on.
2011-08-24
Thrall is a doctor now?
It is clearly a shame I don't have 02000000000 as I bet that gets a lot of calls.
Apparently a doctors surgery has a message saying it is closed but if you need help call 02000200000. Clearly some system expecting a valid format number and someone making up...
And Thrall gets the calls. Whatever next I wonder.
I did explain that it was clearly a made up number, and the fact it rang anyone was something of a fluke.
I have to be more cryptic on these calls - after they agree it is clearly a made up number, yet they got me, who the hell am I?.... "It is a good job you don't know who I am" perhaps... "You obviously don't have security clearance"... etc.
Apparently a doctors surgery has a message saying it is closed but if you need help call 02000200000. Clearly some system expecting a valid format number and someone making up...
And Thrall gets the calls. Whatever next I wonder.
I did explain that it was clearly a made up number, and the fact it rang anyone was something of a fluke.
I have to be more cryptic on these calls - after they agree it is clearly a made up number, yet they got me, who the hell am I?.... "It is a good job you don't know who I am" perhaps... "You obviously don't have security clearance"... etc.
IPv6 product marking
I am sure we have suggested this to BIS before, but there needs to be some standardisation in industry on product marking for IPv6 equipment.
We are finally starting to see products that support IPv6, from printers to DSL routers. The problem is that it is not clear to someone whether what they are buying works with IPv6.
1. It may only be IPv4
2. It may be only IPv4 but expected to have firmware upgrades at some point soon that allows IPv6
3. It may work with IPv6 but lacks even basic features
4. It may work with IPv6 to do all you need but not every aspect of every RFC
5. It may have some amazing 100% RFC compliant all singing all dancing IPv6 stack
It is likely that equipment will not support every option in every RFC (just as is the case now with IPv4), but there are some key features you would reasonably expect in each product. e.g. a printer should at least be able to get an address by RA from the LAN, and allow manual configuration. A router should be able to get DNS and prefix delegation from ISP and do route announcements with DNS servers on the LAN. That sort of basic thing.
Why the rant? Technicolor are selling a router as "IPv6 ready". WTF does that mean. I would think, like "HD Ready" TVs, it means it is ready for when I get IPv6 from my ISP. But no, it seems it means that "one day they will have new firmware for it that does IPv6 but no guarantee on time scales", which is next to useless. What it does mean is their marketing department have cottoned on that people want IPv6 so put it on the box - in some ways marketing departments realising IPv6 matters is a good sign.
So what can be done? Do we want BIS to mandate stuff? Perhaps not - but if someone like BIS make some clear recommendations, with a view to the likes of Trading Standards considering them to be a suitable reference of what the public are expecting phrases to mean - that would effectively force sensible labeling. I believe one concern was that there is no way to impose this on imports, but that is daft - as they already have to comply with loads of EU and UK specific requirements and often have a label stuck on by importers for that very reason. It is not hard.
If something claims to "support IPv6" or be "IPv6 capable" then I think it should have all the necessary IPv6 functionality to do its basic job right now, out of the box.
I also think we need to consider "IPv4 only" marking as needed where something does not indicate it is legacy only. i.e. if something is sold as a "DSL router" or "Network printer" that should imply IPv6 (being the current IP standard), and be expected to say if it does not support that.
We are finally starting to see products that support IPv6, from printers to DSL routers. The problem is that it is not clear to someone whether what they are buying works with IPv6.
1. It may only be IPv4
2. It may be only IPv4 but expected to have firmware upgrades at some point soon that allows IPv6
3. It may work with IPv6 but lacks even basic features
4. It may work with IPv6 to do all you need but not every aspect of every RFC
5. It may have some amazing 100% RFC compliant all singing all dancing IPv6 stack
It is likely that equipment will not support every option in every RFC (just as is the case now with IPv4), but there are some key features you would reasonably expect in each product. e.g. a printer should at least be able to get an address by RA from the LAN, and allow manual configuration. A router should be able to get DNS and prefix delegation from ISP and do route announcements with DNS servers on the LAN. That sort of basic thing.
Why the rant? Technicolor are selling a router as "IPv6 ready". WTF does that mean. I would think, like "HD Ready" TVs, it means it is ready for when I get IPv6 from my ISP. But no, it seems it means that "one day they will have new firmware for it that does IPv6 but no guarantee on time scales", which is next to useless. What it does mean is their marketing department have cottoned on that people want IPv6 so put it on the box - in some ways marketing departments realising IPv6 matters is a good sign.
So what can be done? Do we want BIS to mandate stuff? Perhaps not - but if someone like BIS make some clear recommendations, with a view to the likes of Trading Standards considering them to be a suitable reference of what the public are expecting phrases to mean - that would effectively force sensible labeling. I believe one concern was that there is no way to impose this on imports, but that is daft - as they already have to comply with loads of EU and UK specific requirements and often have a label stuck on by importers for that very reason. It is not hard.
If something claims to "support IPv6" or be "IPv6 capable" then I think it should have all the necessary IPv6 functionality to do its basic job right now, out of the box.
I also think we need to consider "IPv4 only" marking as needed where something does not indicate it is legacy only. i.e. if something is sold as a "DSL router" or "Network printer" that should imply IPv6 (being the current IP standard), and be expected to say if it does not support that.
2011-08-23
Used too much force, Luke
OK, just an excuse to post the picture.
All was well until the end, when his ears were so far over it hit the end stop, meaning his head was, once again, sliced open. Sorry Yoda.
Naturally my slicer now starts with a perimeter non-extruding loop to check all end-stops before printing...
Apart from that - perfect!
P.S. printed fine the next time. The eye balls were a red herring (or red ball of plastic) as they were internal solid overlap and not holes so my code should have ignored them (as it now does).
All was well until the end, when his ears were so far over it hit the end stop, meaning his head was, once again, sliced open. Sorry Yoda.
Naturally my slicer now starts with a perimeter non-extruding loop to check all end-stops before printing...
Apart from that - perfect!
P.S. printed fine the next time. The eye balls were a red herring (or red ball of plastic) as they were internal solid overlap and not holes so my code should have ignored them (as it now does).
Yoda MRI
Headache, I have!
Someone suggested I try Yoda on my new slicer. Took around 40 seconds to process.
This allowed me to test my latest trick which I have been incorporating in to my slicer. It is a way to eliminate the "bobbles" on the surface. These happen when you start extruding on the perimeter loop (the outer edge of each layer). When you start the loop some extra plastic comes out because it has been oozing slightly on the travel to the start. This leaves a small bobble (lump of plastic) on the surface. There are useful tricks to minimize this by withdrawing the plastic a bit, moving and then pushing it back, but even that leaves a bobble. Skeinforge has a jitter option to change the start point so that you don't get a sort of seam down the print where it starts each layer, but that does not eliminate the problem.
My cunning plan is it print two (or more) perimeter loops (quite common, to give the outer layer more strength), but ensure you print the inner one immediately followed by the outer without stopping. This means the outer loop starts as a continuation of the inner loop and so has no bobble at all. This seems to work perfectly! Yoda has smooth skin as a result?!?
The other trick is to always print the perimeter in the same direction from the same point, thus ensuring any slack in the print mechanism is always in the same direction. This means the print is completely consistent layer on layer (more important when printing a TARDIS than a Yoda).
So, why sliced Yodas? Not migraines this time! First was simply my impatience. I told repsnapper to send the print before it had finished loading it all, so after half an hour it proclaimed it had finished when barely at his chin... Second was more subtle. The Yoda has eyeballs in the STL file so this meant a lot more plastic going down and as I said I have not done the code to avoid too much plastic where loops touch/overlap. The effect was downward pressure (force?) causing Yoda to come off the base. The anchor was not good enough (it stayed put and Yoda came unglued). My plan is to improve the anchor (stuck to base of print better) and try again.
Anyway, all in github now, under RevK/E3D.
P.S. I am going to have to get some green plastic now :-)
Someone suggested I try Yoda on my new slicer. Took around 40 seconds to process.
This allowed me to test my latest trick which I have been incorporating in to my slicer. It is a way to eliminate the "bobbles" on the surface. These happen when you start extruding on the perimeter loop (the outer edge of each layer). When you start the loop some extra plastic comes out because it has been oozing slightly on the travel to the start. This leaves a small bobble (lump of plastic) on the surface. There are useful tricks to minimize this by withdrawing the plastic a bit, moving and then pushing it back, but even that leaves a bobble. Skeinforge has a jitter option to change the start point so that you don't get a sort of seam down the print where it starts each layer, but that does not eliminate the problem.
My cunning plan is it print two (or more) perimeter loops (quite common, to give the outer layer more strength), but ensure you print the inner one immediately followed by the outer without stopping. This means the outer loop starts as a continuation of the inner loop and so has no bobble at all. This seems to work perfectly! Yoda has smooth skin as a result?!?
The other trick is to always print the perimeter in the same direction from the same point, thus ensuring any slack in the print mechanism is always in the same direction. This means the print is completely consistent layer on layer (more important when printing a TARDIS than a Yoda).
So, why sliced Yodas? Not migraines this time! First was simply my impatience. I told repsnapper to send the print before it had finished loading it all, so after half an hour it proclaimed it had finished when barely at his chin... Second was more subtle. The Yoda has eyeballs in the STL file so this meant a lot more plastic going down and as I said I have not done the code to avoid too much plastic where loops touch/overlap. The effect was downward pressure (force?) causing Yoda to come off the base. The anchor was not good enough (it stayed put and Yoda came unglued). My plan is to improve the anchor (stuck to base of print better) and try again.
Anyway, all in github now, under RevK/E3D.
P.S. I am going to have to get some green plastic now :-)
2011-08-22
My own 3D slicing code...
There are several bits of code used for 3D printing, and one of the most important is the code to turn the 3D model (in STL file format) in to instructions to drive the printer.
The common one, because it is so flexible and powerful, is skeinforge. It is python based and works well.
However, being me, I have written my own code now, which is what all this polygon library stuff was for.
Having not touched the 3D printing for a few weeks I thought I would have a bash at making it work yesterday afternoon - and it does. I have made the GCODE output stage and it actually prints.
I think my inset algorithm and polygon functions are producing more precise output. It is looking better, but it is hard to be sure as the settings are not easy to exactly mirror between the systems, and that can make a difference. One thing I noticed with skeinforge, for example, is to make this gear fit a 5mm spindle I had to make the design have a 6mm hole. My tools seems to not have this issue.
Some things skeinforge did are almost certainly better. The fill logic is an area I have done completely differently. I can't, yet, handle single outline skins, i.e. very thin walls, as I will always extrude both inside and outside. I also do not yet have the logic to reduce flow on sharp points where the plastic overlaps. This is all related, and on the todo list.
However, one bit that seems to work really well is anchors. Basically, getting the print started is hard work - often you get too little or too much plastic as you start. It can take a few cm of extrusion before it is sticking. It needs special attention. Skeinforge offers a raft solution and I have come up with an anchor.
The raft idea is that you make a lattice of plastic first. The first layer being lots of extruded plastic slowly, so it cannot be dragged thin and cannot fail to stick to the bed. Then a thinner layer on top, and then the print. This has issues - mainly how to separate the print from the raft afterwards. The print does not have a good bottom layer either as not printed on a flat surface, and that can be important as many things have a flat base. I never got on with rafts, but I know some people use them with success.
The anchor idea is slightly different - I make a layer of plastic around the shape. This is several loops, starting at the outside and working inwards. If the first loop does not print properly, no problem. The default is 4 loops. They touch each other, and make a solid mat that is stuck to the bed. The final inside loop is separate from the artwork with a gap, and has chevrons that go from the anchor to the artwork and touch it at regular intervals. The result is a large mat that prints first and stays stuck down, with the artwork touching it. The artwork is not the first thing to print, so by the time it starts the extrusion is running smoothly. The artwork is held in place by this mat, but easy to snap off when finished without leaving marks. The base of the artwork is flat on the bed. So far the results are very encouraging.
One concept being considered is whether it is possible to create support structures automatically to handle overhangs. This may need more work and experimentation.
Next questions is if and when I publish the code for others to play with...
The common one, because it is so flexible and powerful, is skeinforge. It is python based and works well.
However, being me, I have written my own code now, which is what all this polygon library stuff was for.
Having not touched the 3D printing for a few weeks I thought I would have a bash at making it work yesterday afternoon - and it does. I have made the GCODE output stage and it actually prints.
I think my inset algorithm and polygon functions are producing more precise output. It is looking better, but it is hard to be sure as the settings are not easy to exactly mirror between the systems, and that can make a difference. One thing I noticed with skeinforge, for example, is to make this gear fit a 5mm spindle I had to make the design have a 6mm hole. My tools seems to not have this issue.
Some things skeinforge did are almost certainly better. The fill logic is an area I have done completely differently. I can't, yet, handle single outline skins, i.e. very thin walls, as I will always extrude both inside and outside. I also do not yet have the logic to reduce flow on sharp points where the plastic overlaps. This is all related, and on the todo list.
However, one bit that seems to work really well is anchors. Basically, getting the print started is hard work - often you get too little or too much plastic as you start. It can take a few cm of extrusion before it is sticking. It needs special attention. Skeinforge offers a raft solution and I have come up with an anchor.
The raft idea is that you make a lattice of plastic first. The first layer being lots of extruded plastic slowly, so it cannot be dragged thin and cannot fail to stick to the bed. Then a thinner layer on top, and then the print. This has issues - mainly how to separate the print from the raft afterwards. The print does not have a good bottom layer either as not printed on a flat surface, and that can be important as many things have a flat base. I never got on with rafts, but I know some people use them with success.
The anchor idea is slightly different - I make a layer of plastic around the shape. This is several loops, starting at the outside and working inwards. If the first loop does not print properly, no problem. The default is 4 loops. They touch each other, and make a solid mat that is stuck to the bed. The final inside loop is separate from the artwork with a gap, and has chevrons that go from the anchor to the artwork and touch it at regular intervals. The result is a large mat that prints first and stays stuck down, with the artwork touching it. The artwork is not the first thing to print, so by the time it starts the extrusion is running smoothly. The artwork is held in place by this mat, but easy to snap off when finished without leaving marks. The base of the artwork is flat on the bed. So far the results are very encouraging.
One concept being considered is whether it is possible to create support structures automatically to handle overhangs. This may need more work and experimentation.
Next questions is if and when I publish the code for others to play with...
2011-08-17
Google+ because it does not have Frontierville
Or Pioneers Trail or whatever it is called...
I think Thrall likes mint trees.
I was just thinking, if WoW added the ability for an orc to settle down and become a farmer, you would have loads more people playing it :-)
I think Thrall likes mint trees.
I was just thinking, if WoW added the ability for an orc to settle down and become a farmer, you would have loads more people playing it :-)
Doctor's CAPTCHA
We have all seen the CAPTCHA things on web sites where we have to type the letters. They have even been used for cunning plans to get people to read scanned documents (one word is 'real' and one from a scanned document and they collect the results as a way to decode the printing they could not accurately OCR)...
But the real challenge would be a CAPTCHA based on what doctors write...
What would you do with :-
But the real challenge would be a CAPTCHA based on what doctors write...
What would you do with :-
IPv6 routers
One of the biggest challenges for IPv6 deployment is the routers that are installed at homes and offices on the end of DSL and FTTC lines.
There have long been expensive solutions, e.g. CISCO routers, or using something like FireBrick and PPPoE DSL modem. These work well but cost a lot (hundreds).
We finally have Billion 7800N routers - which are new. They are DSL and "WAN" routers. The "WAN" bit just means they do PPPoE as well, and so can work with FTTC or FTTP. They do IPv6, and it works. It does DHCPv6 to get an IPv6 prefix over the PPP link which it announces on the LAN. It handles 1500 byte MTU. It had user configurable firewall for IPv4 and IPv6. It also has 4 port switch and WiFi as well.
This makes it a good high-end router, and it sells for around £120.
Sadly it is till pretty much all we have. We are trying a ZyXEL router as well, but it is not sending DHCPv6 packets at all. It too is high end and costs even more than the Billion.
We spoke to Billion about an entry level router and they said they will have one soon. It will have a 4 port switch apparently (not surprising as probably all built in to the chipset anyway these days so not really cheaper not to). But won't have IPv6, even though this is plainly just software which they have available. It makes no sense. Why launch a new router now which does not have IPv6 - that is just plain stupid.
We are still waiting on anyone else that has an entry level DSL router with working IPv6. I am happy to provide a DSL line with IPv6 to a UK office of any manufacturer that wants to do testing and work with us on this.
We obviously can't keep doing the £120 Billions "free with the service" for much longer as it is costing me thousands - but I want something to replace it.
There have long been expensive solutions, e.g. CISCO routers, or using something like FireBrick and PPPoE DSL modem. These work well but cost a lot (hundreds).
We finally have Billion 7800N routers - which are new. They are DSL and "WAN" routers. The "WAN" bit just means they do PPPoE as well, and so can work with FTTC or FTTP. They do IPv6, and it works. It does DHCPv6 to get an IPv6 prefix over the PPP link which it announces on the LAN. It handles 1500 byte MTU. It had user configurable firewall for IPv4 and IPv6. It also has 4 port switch and WiFi as well.
This makes it a good high-end router, and it sells for around £120.
Sadly it is till pretty much all we have. We are trying a ZyXEL router as well, but it is not sending DHCPv6 packets at all. It too is high end and costs even more than the Billion.
We spoke to Billion about an entry level router and they said they will have one soon. It will have a 4 port switch apparently (not surprising as probably all built in to the chipset anyway these days so not really cheaper not to). But won't have IPv6, even though this is plainly just software which they have available. It makes no sense. Why launch a new router now which does not have IPv6 - that is just plain stupid.
We are still waiting on anyone else that has an entry level DSL router with working IPv6. I am happy to provide a DSL line with IPv6 to a UK office of any manufacturer that wants to do testing and work with us on this.
We obviously can't keep doing the £120 Billions "free with the service" for much longer as it is costing me thousands - but I want something to replace it.
2011-08-13
Getting my head examined...
So, after a few migraines I went to GP and was referred to neurologist and he had an MRI done. Seems all is normal, phew.
Getting an MRI seems to be now as routine as an X-ray, but safer and takes a bit longer. Took around 20 minutes for my MRI of my brain.
Basically, you lie down on a bed, which then goes in to a machine. Cunning use of mirrors means you can see out and so feel a tad less claustrophobic in the process, but it is a small tube you go in to.
Music in headphones, but the machine is noisy. You have to lie still which is a pain, but all in all pretty simply.
So seems to be just a migraine or two. Good news. Could so easily have been a tumour or mini-stroke, but it seems not. I am pleased to say all is well.
I was surprised how many friends and relatives have had an MRI. This was my first. Yes, X-rays I have had many times as a kid. But MRIs were not around then. Impressive stuff, and they gave me a CD with the images...
2011-08-12
A rant on riots
I am seeing some real knee-jerk comments about riots that really seem to miss any logic. If there are riots, whether political motivated, or just criminal activity, the underlying causes need addressing. You need to find a way to run the country so that people respect the law and people and property in the first place.
One thing that makes people not respect the law is bad laws.
Yet, the reactions are not to address the underlying reasons that the riots happened, but to suggest more bad laws. Like blocking access to social media sites which have been so helpful in organising clean-up operations and bringing the communities together to address the problems. Like police powers to ask people to remove masks - as if that helps at all. Halloween will be fun.
None of this addresses the actual problems, whatever they are (and I really do not know). They just make for more unrest - more disrespect of the law - more cases where people become criminals without trying and so may as well go all the way.
We need governments that can actually run a country. We don't need more laws, we need fewer laws; simpler laws; laws we can all understand; laws that we are not breaking by walking down the street not hurting anyone.
I see this in software - if I have to pile on more and more special cases, I have the design wrong and need to start again. The same is true for laws. Making new laws to address more and more special cases of social behaviour gone wrong is missing the point - you need to fix the design.
One area I think the Yanks got right is freedom of speech - here we have laws against inciting riots or religious hatred, which seem like a good idea on the face of it. Once when I was in Vegas I witnessed some outrageous religious comment on the street (done with banners and megaphones) that would incite a riot in any UK town I am sure. The point is that everyone knows that everyone has the right to speak out and spout crap, so they ignore it - they don't feel they have to react. Even people that did react just stood and shouted in the guys face but did not touch him as that would be assault - so nothing bad happened, just noise. Making people's crazy views in to just noise makes life simpler for everyone. Trying to stop people say what they want causes unrest and is the start of the slippery slope to an oppressive government, and that never works out well.
Heck, for all I know something in this blog post has just made me a criminal - it is impossible to be sure these days. And no, I am not in any way endorsing riots and looting, just dismayed at the reaction of so called government.
One thing that makes people not respect the law is bad laws.
Yet, the reactions are not to address the underlying reasons that the riots happened, but to suggest more bad laws. Like blocking access to social media sites which have been so helpful in organising clean-up operations and bringing the communities together to address the problems. Like police powers to ask people to remove masks - as if that helps at all. Halloween will be fun.
None of this addresses the actual problems, whatever they are (and I really do not know). They just make for more unrest - more disrespect of the law - more cases where people become criminals without trying and so may as well go all the way.
We need governments that can actually run a country. We don't need more laws, we need fewer laws; simpler laws; laws we can all understand; laws that we are not breaking by walking down the street not hurting anyone.
I see this in software - if I have to pile on more and more special cases, I have the design wrong and need to start again. The same is true for laws. Making new laws to address more and more special cases of social behaviour gone wrong is missing the point - you need to fix the design.
One area I think the Yanks got right is freedom of speech - here we have laws against inciting riots or religious hatred, which seem like a good idea on the face of it. Once when I was in Vegas I witnessed some outrageous religious comment on the street (done with banners and megaphones) that would incite a riot in any UK town I am sure. The point is that everyone knows that everyone has the right to speak out and spout crap, so they ignore it - they don't feel they have to react. Even people that did react just stood and shouted in the guys face but did not touch him as that would be assault - so nothing bad happened, just noise. Making people's crazy views in to just noise makes life simpler for everyone. Trying to stop people say what they want causes unrest and is the start of the slippery slope to an oppressive government, and that never works out well.
Heck, for all I know something in this blog post has just made me a criminal - it is impossible to be sure these days. And no, I am not in any way endorsing riots and looting, just dismayed at the reaction of so called government.
2011-08-10
RFC3514 firewall?
I have made a test build of the FireBrick with RFC3514 support in it. Firewall rules can test for the evil bit set or unset, and can cause the evil bit to be set on the session so that, for example, NATted sessions can have the evil bit set.
Yes, bit of fun - and I may put in a production release one day (perhaps next April). However, it has been made a semi serious suggestion (Ray Bellis) that this could be done on CGNAT systems allowing both ends to know that they are working via some sort of NAT or otherwise mangling of headers system on the way. The bit gets set on replies on the session as well for this reason.
The concept is that where a device tries IPv4 and IPv6 at the same time, and gets replies, it can tell from the replies that the IPv4 is being mangled and prefer the IPv6 even if apparently slower to reply.
So now, not only do we all know NAT is evil, but we can have the evil bit actually tell us that :-)
Yes, bit of fun - and I may put in a production release one day (perhaps next April). However, it has been made a semi serious suggestion (Ray Bellis) that this could be done on CGNAT systems allowing both ends to know that they are working via some sort of NAT or otherwise mangling of headers system on the way. The bit gets set on replies on the session as well for this reason.
The concept is that where a device tries IPv4 and IPv6 at the same time, and gets replies, it can tell from the replies that the IPv4 is being mangled and prefer the IPv6 even if apparently slower to reply.
So now, not only do we all know NAT is evil, but we can have the evil bit actually tell us that :-)
What has Thrall been up to?
Seems he must have run up a debt or something :-)
RMA in behalf of Barclays called from 01772 843276.
Saldy his fingers are too fat to use a phone, so he won't be calling them back.
Recording
RMA in behalf of Barclays called from 01772 843276.
Saldy his fingers are too fat to use a phone, so he won't be calling them back.
Recording
2011-08-09
Six degrees of separation
Well, bank manager came in today for a chat (nice when they come to you) and was saying how someone he knows directly spent the night at hospital because her son was victim of an attack on a train related to these riots... Apparently a bunch of yoofs went along the whole train with baseball bats or some such.
Funny how things like this find a way of connecting with you somehow.
Given my usual interest in news, it was not until I read about the riots on the uknot mailing list today that I knew this was happening at all.
Funny how things like this find a way of connecting with you somehow.
Given my usual interest in news, it was not until I read about the riots on the uknot mailing list today that I knew this was happening at all.
2011-08-08
Money making machine
I really do wonder if there should be a stupidity tax some times...
OK, when people pay us, just like every other utility, we need a payment with the right sort-code, account number and reference. Bog standard stuff - same for gas, electric, water, telephone, tax, vat, everything. The beneficiary reference is part of the BACS (Bankers Automated Clearing System) that has been around a long time and is an 18 character string that you need to quote on the payment for the beneficiary (person getting the money) to be able to work out what it is for.
Yes, paying money to a mate - the reference does not matter - but paying your VAT bill? They need to know your VAT number as a reference...
We have a simple system - pay us with your account number, e.g. A12345A on the reference. We automatically allocate it to the right account. No human intervention required. When you have thousands of people paying you - you need a simple automated system.
Now, some people pay with the wrong reference. It happens. People make mistakes. How they pay anyone else right, I don't know. They just make up crap. Sometimes we'll get a payment from "CURRENT ACCOUNT" with reference "BROADBAND" for £19.40 - WTF are we meant to do with that?
And then people post a remittance advice, like that helps anyone...
So, we try to be nice. If we can work out manually who it is then we send a nice letter asking them to put the right reference. Then next time a less nice one pointing out it is actually part of the terms to put the right reference. Finally one explaining that if they really won't put the right reference then there is a £5+VAT admin fee for us manually allocating it. Of course if we can't allocate the payment someone just gets a £40 late payment penalty instead as we did not know they had paid - we credit that and start the nice letters when they eventually complain.
But what the hell do you do with special people that insist on paying you with no reference over and over and over again? They then get an invoice for £6 (£5+VAT) for an admin fee for paying without a reference, and pay the £6, by BACS, without the right reference. Wha?!?!??
This is, for amusement, a government department. But it sounds like we have a hands off money making machine. Every time they pay £6 we can charge them £6 admin fee for paying without the right reference. Rinse, repeat.
Never once had a sensible explanation from anyone that does this.
P.S. We do try and avoid this by including the £6 in the next invoice, so they don't pay it separately. But quarterly billed customers get it separately as the system does not like any debt un-invoiced for more than a month, which seems fair enough to me.
OK, when people pay us, just like every other utility, we need a payment with the right sort-code, account number and reference. Bog standard stuff - same for gas, electric, water, telephone, tax, vat, everything. The beneficiary reference is part of the BACS (Bankers Automated Clearing System) that has been around a long time and is an 18 character string that you need to quote on the payment for the beneficiary (person getting the money) to be able to work out what it is for.
Yes, paying money to a mate - the reference does not matter - but paying your VAT bill? They need to know your VAT number as a reference...
We have a simple system - pay us with your account number, e.g. A12345A on the reference. We automatically allocate it to the right account. No human intervention required. When you have thousands of people paying you - you need a simple automated system.
Now, some people pay with the wrong reference. It happens. People make mistakes. How they pay anyone else right, I don't know. They just make up crap. Sometimes we'll get a payment from "CURRENT ACCOUNT" with reference "BROADBAND" for £19.40 - WTF are we meant to do with that?
And then people post a remittance advice, like that helps anyone...
So, we try to be nice. If we can work out manually who it is then we send a nice letter asking them to put the right reference. Then next time a less nice one pointing out it is actually part of the terms to put the right reference. Finally one explaining that if they really won't put the right reference then there is a £5+VAT admin fee for us manually allocating it. Of course if we can't allocate the payment someone just gets a £40 late payment penalty instead as we did not know they had paid - we credit that and start the nice letters when they eventually complain.
But what the hell do you do with special people that insist on paying you with no reference over and over and over again? They then get an invoice for £6 (£5+VAT) for an admin fee for paying without a reference, and pay the £6, by BACS, without the right reference. Wha?!?!??
This is, for amusement, a government department. But it sounds like we have a hands off money making machine. Every time they pay £6 we can charge them £6 admin fee for paying without the right reference. Rinse, repeat.
Never once had a sensible explanation from anyone that does this.
P.S. We do try and avoid this by including the £6 in the next invoice, so they don't pay it separately. But quarterly billed customers get it separately as the system does not like any debt un-invoiced for more than a month, which seems fair enough to me.
2011-08-05
The new PC term for "Jobsworth"..
Is "Hard turn back policy".
Anyone using BT for broadband repair will be well aware of this.
Anyone using BT for broadband repair will be well aware of this.
GMT and BST
Our favourite telco make use of microsoft tools to arrange calls and meetings.
It is now A&A company policy that if we get an invite to a conference call or a meeting that says, for example :-
When: 08 August 2011 11:00-12:00 (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London.
We are to take it at face value, in that case 12pm local time (BST). Especially if the email has the caveat :-
Note: The GMT offset above does not reflect daylight saving time adjustments.
Which makes it very very clear they really do mean GMT and not local time that would reflect local daylight savings time adjustments.
(unless the meeting or call is for our benefit not theirs, obviously).
Why do big corporates like BT plc not refuse to pay microsoft until they fix this simple buglet? I would if I used microsoft...
What amazes me is that the "Note: The GMT offset above does not reflect daylight saving time adjustments." is clearly new and somehow an attempt to address the error but, in my view, just makes it worse by making it clear you really did mean GMT!
It is now A&A company policy that if we get an invite to a conference call or a meeting that says, for example :-
When: 08 August 2011 11:00-12:00 (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London.
We are to take it at face value, in that case 12pm local time (BST). Especially if the email has the caveat :-
Note: The GMT offset above does not reflect daylight saving time adjustments.
Which makes it very very clear they really do mean GMT and not local time that would reflect local daylight savings time adjustments.
(unless the meeting or call is for our benefit not theirs, obviously).
Why do big corporates like BT plc not refuse to pay microsoft until they fix this simple buglet? I would if I used microsoft...
What amazes me is that the "Note: The GMT offset above does not reflect daylight saving time adjustments." is clearly new and somehow an attempt to address the error but, in my view, just makes it worse by making it clear you really did mean GMT!
2011-08-04
Polygon library working?
A TARDIS does not break it, and neither does a DALEK. Sadly I can still break it with my coffee machine hopper extension - so some bug still lingering. However, it is usable now... I'll publish it when I have the last bug found :-)
Now, why was it so hard?
1. Odd/even vs winding number.
Getting the original design right was tricky. What should it actually do? Even when you know you want a polygon library you do not necessarily know what the spec is. The main issue is how you handle holes. Basically, there are two approaches - something one can see in the postscript language even. If you walk from infinity over the shape, you can consider each line you meet as an edge, i.e. inside, outside, inside, outside, etc... This is odd/even logic. In this case the direction of each line is unimportant. Alternatively you can have a counter, starting at zero, and count each line you passed which is going to your left is plus one and each line going to your right is minus one. When the counter is non zero you are inside. This second approach is winding number logic. To me it seems much more logical so that is what I went for.
However, even with winding number logic you have to think. I just said any non-zero is inside, which is what postscript does. But what happens if you do something to a shale that makes it self intersect or even turn inside out.
Above is an example of a simple shape. A is what you started with. B is inset a bit. C is inset more - see how part of the shape has turned inside out. D is what you wanted - the inside out bit removed. To fix this you do winding number logic but only consider positive number as inside. Negative winding number are thrown away.
In fact the whole logic for basic intersect and union type operation works well with winding number. Union is just keeping all winding number 1 or above. Intersect is keeping winding number 2 or above. You can use it on one polygon to clean up things like this going inside out issue. You could use on more than two polygons at once even.
So, this makes winding number definitely the right way to do it. Else you have lots of other problems to sort out. This is, I believe, the key difference to the general clipper library that I looked at originally. Interestingly Cliff's idea at the beer festival was to have a separate function to simplify each polygon and then have Boolean operation functions which work on two polygons that you know are cleaned up like this. That would work, of course, but is a totally different approach.
2. Floating point numbers.
I coded this all with a typedef for the co-ordinate system, so I could change later. I just knew floats would bite me, but given machines have floating point hardware I thought I would try. Yes, as expected it bit me. Whilst comparison of floats was not the issue as such, there were problems where line intersection logic would happily decide to slice 10^-18mm off a line repeatedly. I am sure it would have finished eventually, but was due to the unit steps of floats and in particular the fact the two floats can have different intervals as different magnitudes. In the end, I simply changed to 64 bit integer which for my 3D stuff I am doing as micrometres. That also made it a lot faster as it happens.
3. Intersection logic.
One issue I then seem to have is that when you break a line because you have decided it intersects another line, you change it. This is made worse in some ways by use of integer maths. Basically, the break point is not going to be exactly on the line - it will be the nearest whole co-ordinate. This should not be an issue as obviously both ends move to the same point. The problem is that intersections you have already checked (off to the left) may change because the angle of the line you have just split has changed. An obscure edge case, but it happened. It meant that the segments needed re-checking as you could end up with self intersecting results. I initially solved most of these simply by making sure the X/Y intersect point was rounded to nearest whole number, not just truncated, but even then it still breaks with some shapes (not surprised). Now I just run the intersect checking code again until no more line segments are chopped up. That got pretty much everything working. I am trying to see if I can improve that.
4. Final bug
Well, I still have one test case breaking it - I need to figure that out. It is clearly even more of an edge case as quite complex shapes (like TARDIS and DALEK) are just working now. Should be easy to track down I am sure.
However, now I can actually get the output, I can continue on the original challenge - new 3D libraries. I can see my inset algorithm is breaking with some shapes so that needs fixing. Then I have new challenges with working out the extrude path and filling over open space, and all sort... But that should be fun, and a lot easier with a working polygon library...
Now, why was it so hard?
1. Odd/even vs winding number.
Getting the original design right was tricky. What should it actually do? Even when you know you want a polygon library you do not necessarily know what the spec is. The main issue is how you handle holes. Basically, there are two approaches - something one can see in the postscript language even. If you walk from infinity over the shape, you can consider each line you meet as an edge, i.e. inside, outside, inside, outside, etc... This is odd/even logic. In this case the direction of each line is unimportant. Alternatively you can have a counter, starting at zero, and count each line you passed which is going to your left is plus one and each line going to your right is minus one. When the counter is non zero you are inside. This second approach is winding number logic. To me it seems much more logical so that is what I went for.
However, even with winding number logic you have to think. I just said any non-zero is inside, which is what postscript does. But what happens if you do something to a shale that makes it self intersect or even turn inside out.
Above is an example of a simple shape. A is what you started with. B is inset a bit. C is inset more - see how part of the shape has turned inside out. D is what you wanted - the inside out bit removed. To fix this you do winding number logic but only consider positive number as inside. Negative winding number are thrown away.
In fact the whole logic for basic intersect and union type operation works well with winding number. Union is just keeping all winding number 1 or above. Intersect is keeping winding number 2 or above. You can use it on one polygon to clean up things like this going inside out issue. You could use on more than two polygons at once even.
So, this makes winding number definitely the right way to do it. Else you have lots of other problems to sort out. This is, I believe, the key difference to the general clipper library that I looked at originally. Interestingly Cliff's idea at the beer festival was to have a separate function to simplify each polygon and then have Boolean operation functions which work on two polygons that you know are cleaned up like this. That would work, of course, but is a totally different approach.
2. Floating point numbers.
I coded this all with a typedef for the co-ordinate system, so I could change later. I just knew floats would bite me, but given machines have floating point hardware I thought I would try. Yes, as expected it bit me. Whilst comparison of floats was not the issue as such, there were problems where line intersection logic would happily decide to slice 10^-18mm off a line repeatedly. I am sure it would have finished eventually, but was due to the unit steps of floats and in particular the fact the two floats can have different intervals as different magnitudes. In the end, I simply changed to 64 bit integer which for my 3D stuff I am doing as micrometres. That also made it a lot faster as it happens.
3. Intersection logic.
One issue I then seem to have is that when you break a line because you have decided it intersects another line, you change it. This is made worse in some ways by use of integer maths. Basically, the break point is not going to be exactly on the line - it will be the nearest whole co-ordinate. This should not be an issue as obviously both ends move to the same point. The problem is that intersections you have already checked (off to the left) may change because the angle of the line you have just split has changed. An obscure edge case, but it happened. It meant that the segments needed re-checking as you could end up with self intersecting results. I initially solved most of these simply by making sure the X/Y intersect point was rounded to nearest whole number, not just truncated, but even then it still breaks with some shapes (not surprised). Now I just run the intersect checking code again until no more line segments are chopped up. That got pretty much everything working. I am trying to see if I can improve that.
4. Final bug
Well, I still have one test case breaking it - I need to figure that out. It is clearly even more of an edge case as quite complex shapes (like TARDIS and DALEK) are just working now. Should be easy to track down I am sure.
However, now I can actually get the output, I can continue on the original challenge - new 3D libraries. I can see my inset algorithm is breaking with some shapes so that needs fixing. Then I have new challenges with working out the extrude path and filling over open space, and all sort... But that should be fun, and a lot easier with a working polygon library...
Our favourite telco refusing to fix faults again
Well, it seems they are refusing to fix faults unless we start using their "eco plus" web based portal to progress any fault.
They have confirmed through their text chat interface, a separate phone call to an support desk operator, and (after over half an hour on this on the phone) with their supervisor. So this is clearly not just a matter of one confused operative - but a clear change of policy. Oddly we did not see the briefing on this.
They are point blank refusing to do anything with a fault, and claim that it is their official policy that we have to use eco plus and has been so for at least six months.
Sadly, this means finding windows machines, and I think even older versions of IE, in order to use it. That would be both expensive and a huge change for the company to start using Windows machines.
Seems a complete waste of months of development to get their B2B XML interface working if we now have to get windows machines and use a web portal.
They have confirmed through their text chat interface, a separate phone call to an support desk operator, and (after over half an hour on this on the phone) with their supervisor. So this is clearly not just a matter of one confused operative - but a clear change of policy. Oddly we did not see the briefing on this.
They are point blank refusing to do anything with a fault, and claim that it is their official policy that we have to use eco plus and has been so for at least six months.
Sadly, this means finding windows machines, and I think even older versions of IE, in order to use it. That would be both expensive and a huge change for the company to start using Windows machines.
Seems a complete waste of months of development to get their B2B XML interface working if we now have to get windows machines and use a web portal.
2011-08-02
Beer mat logic
Well, the polygon library has been through a lot, and still remains "almost working", which is about as useful as "not working at all". Once again I can see the light at the end of the tunnel and once again it looks quite a long way off.
So, again, rather than plough ahead in to a complicated final solution I am going to try and sort this with a tried and trusted technique, usually involving pens and beer mats.
In practice the plan is to take some paper and pens along rather than actually use beer mats. I may have to find paper with a square grid on it. But the venue should be appropriate as it is the Great British Beer Festival in Earl's Court, tomorrow afternoon.
I suspect I will get lots of helpful advice from my friends on this problem and I am sure a lot of squiggly lines will be drawn...
So, again, rather than plough ahead in to a complicated final solution I am going to try and sort this with a tried and trusted technique, usually involving pens and beer mats.
In practice the plan is to take some paper and pens along rather than actually use beer mats. I may have to find paper with a square grid on it. But the venue should be appropriate as it is the Great British Beer Festival in Earl's Court, tomorrow afternoon.
I suspect I will get lots of helpful advice from my friends on this problem and I am sure a lot of squiggly lines will be drawn...
Subscribe to:
Posts (Atom)
FB9000
I know techies follow this, so I thought it was worth posting and explaining... The FB9000 is the latest FireBrick. It is the "ISP...
-
Broadband services are a wonderful innovation of our time, using multiple frequency bands (hence the name) to carry signals over wires (us...
-
For many years I used a small stand-alone air-conditioning unit in my study (the box room in the house) and I even had a hole in the wall fo...
-
It seems there is something of a standard test string for anti virus ( wikipedia has more on this). The idea is that systems that look fo...