Sven has been very busy getting a new Debian ncurses packages into order. With the multiple changes made and the fact that so many things depend on the shared libraries, we decided that it is best to put the first cut of these packages into experimental.
We’re now using the Quilt 3.0 source format for our packages, which means that we should have a better handle on the patches, especially as they all now have Dep-3 patch tags .
So what has changed, why should you go over and try the experimental packages?
First, it will help us with checking the packages actually work, Sven has tried them out (I will be soon) but the more testing the better.
We’ve updated the upstream patch level (basically the upstream version) on this set of packages.
New package! ncurses-examples which are all the example programs that shows you what ncurses can do.
Oh yes, another Iain M. Banks story is out and I had to read it right away. I wasn’t disappointed either.
It’s another one of his Sci Fi books in the world, or worlds of The Culture. I wasn’t disappointed and it was interesting to see him flesh out more of his universe in this book. Like a lot of his books, there are several sub-threads within the main story with no real obvious connection between them all.
Transferring your “mind state” from the grey mushy stuff you have in your head into a computer isn’t new in this series. Even the concept of the dead “living” in a computer is not that unique. What has been introduced is the “hells”. A computer simulation of hell where people who go against some societies rules end up if they’re bad enough.
Now some civilizations think this is great, it keeps their population on the straight and narrow. As they know there really is a hell for them if they break whatever rules they have on the planet. Other civilizations think they are abhorrent and want to shut them down.
Hence the “virtual wars” where the two sides fight in simulators, winner gets to keep the hells running or shut them down, depending who you are. But now one side is thinking of taking it outside the simulation, to attacking in “the real”.
And this change to “the real” and the political mess that makes is the main story. There are plenty of twists as you’d expect. A lot of decisions made where you’re not sure if the “right” thing was done but more importantly it was a very enjoyable read.
One thing, if you are the sort of person who reads the last page first, do not do it on this book! The surprise on the last line was worth it.
I’m the upstream for psmisc and 22.13 finally got released, which also meant 22.13-1 Debian package got released too. There was some delay to it (see below why) but it is now out. Unless you run a mips or superH architecture, there is not really any exciting changes, but should make it compile for those two architectures and then at least get the mips buildd underway so the versions all line up.
Secondly, gjay had two minor bug fixes and was updated. If the analysis daemon kept playing music instead of looking at it or the vorbis files were not being recognised, then this new version will help there. The mpg123 command line patch will be rolled into the upstream too.
I’m also working on getting gjay to work with the Exaile player. If you want it to work with your player the easiest thing is to send me patches or code snippets that do the following:
Detect your player is running
Can give me the currently played song, preferably the filename of it. Exaile doesn’t so I’ll put it a kludge to guess it from title and artist
Remotely send a playlist to your player and get the player to start
Last of all, my second son was born last week. It’s back to those night feeds again and is probably why I’ve not written as much code as I normally would; but I wouldn’t change that either.
Most of the time you can trust the times you see in programs such as ps and top within Linux, but there are those other times where you just want to check what is going on.
First up, if you’re using a FreeBSD system and the procps Linux tools, you’re out of luck because a lot of the procfs is broken. You’re almost guaranteed to get wierd results.
Jiffies and Hertz The first thing to find is your jiffies. This is the number of clock ticks per second. There are two main ways of doing it.
The first, and more difficult way is to add up the cpu numbers in /proc/stat, divide it by the first number in /proc/uptime and divide it by the number of cpus.
My cpu line in /proc/stat looks like:
cpu 1267430 145826 552700 137029699 905086 8295 17885 0 0
and my /proc/uptime is:
695317.99 1370303.58
I’ve got 2 cpus on this system so the calculation is:
The second way is to use getconf, with the command “getconf CLK_TCK” which again on this system gives you 100.
We call this value “Hertz” and is usually 100 or 1024 though for some architectures it is other values.
Start Time For each process the procfs has the start time, but it is expressed as the number of jiffes since the computer was booted. If we want to know the real “wall clock” time a process is started we have to start with number of seconds since epoch (for example using the time() function) subtract the number of seconds since the computer was booted and add the process start time from procfs.
The seconds since boot is the first value in /proc/uptime:
696141.85 1371857.53
The 22nd item in a procfs PID stat file is the number of jiffes since boot when the process started. We have to divide it by Hertz to calculate the number of seconds. 27139 (bash) S 11942 27139 27139 34821 5200 4202496 5500 25537 0 14 40 16 18 15 20 0 1 0 69446639 23433216 1378 18446744073709551615 4194304 5082140 14073724008 6512 140737240085456 140127945249678 0 65536 3686404 1266761467 0 0 0 17 1 0 0 0 0 0
To get the start time, take the current time, subtract the boot time and add the process start time.
Unless you are very quick, you will have to take a few seconds off because the time() function will be now, while the values from the proc files will be a few seconds earlier as it takes time for you to cut and paste.
Actually they’re more interested in freedom, to be no longer slaves to humans. I don’t think it’s any spoiler to mention that an electric sheep does appear in the book.
This is a classic science fiction story of a dark not-so-distant future. In fact given that it’s over 40 years old it could be set in some alternate now. Some disaster has occurred and many have either left earth or died. Some andriods, or andys have escaped and bounty hunters are after them.
You may not know the book by its correct title, but you may of heard the movie that is based upon it, called Blade Runner. Like most movies based on books, it takes some of the concepts and ideas of the book but in my opinion is a pale imitation.
I’m glad I read this book. It hasn’t aged that much and it’s very though provoking. Sci-Fi often uses some alternate reality to put a mirror up to what happens in the real world and this book is no exception.
And a token link to Debian, if you want you own electric sheep you can install the screensaver electricsheep package which draw pretty fractals on your screen.
Well the latest version of PSmisc is almost finished, so I pushed the tar archive up to the spot for the translators, waiting for the updates before it gets released.
It reminded me that perhaps a lot of people don’t know how their programs get translated. Perhaps there are some that could even contribute. The nice thing about the translation systems is that you don’t need to know programming to help.
PSmisc uses the translation project as its method. The program itself uses gettext for the translation part which makes a single text file called a POT file. A translator takes this text file and makes a po file, such as it.po for the Italian translation and then translates, which basically means editing the file, reading each first line of a set and writing the translation on the second line.
For the programmer, once it is setup it is pretty simple to use, just mark your translatable lines and follow some simple rules, mainly about not embedding too much in a string. I’ve used this system for years for quite a few of my programs and there is little added work for me.
Unfortunately, translating is hard work and should be a long-term commitment. Having a look at the translation project’s Translation Matrix and you can see that some languages do suffer, though there are some very good results there too. Particular kudos goes to the Vietnamese group which I think is just Clytie who does a marvellous job and is often the first translation file I get.
For the Debian project, there are many places where translations can occur. There doesn’t seem to be a centralised place for this, but some of the places they use translation work are:
Just going on how they treat matters regarding the internet, it seems that the current Australian government is trying to beat the previous government’s poor record. Where the previous government seemed to think the internet a scary and unimportant thing that they didn’t really understand and therefore ignored it, the current government seems to be trying to do something, but like a lot of other things they do, do something badly.
Internet Filtering One of their bright ideas is to censor the internet, by putting some rather large filters right in the middle of all the ISPs. Supposedly this is going to protect the children, though other than some mad ranting by Senator Conroy he hasn’t said which children or how.
The clearest information is that it will block Refused Content or RC rated information. The problem with this is there is no clear definition what this is. With no clear boundary you can get what is “scope creep”. Bit by bit, each group with their own agenda will try to get whatever they don’t like banned. Some will fail, but others will get their little set of demons onto the list.
From “children overboard” to the strange siezure of the wikileaks founder’s passport when he returned to Australia, you can never trust the government fully. As the filter list will be a closed list, who is to say if it is right a particular webpage or website should be banned? Books or films that are banned are known, you can find out what they are and why. A proper discussion and review can then be undertaken. By contrast, you won’t even know something is banned unless you try to visit it.
I’ve personally seen the “great firewall of china“. What is filtered is often arbitary, though anything that is embarassing to the government is filtered. It slows a lot of sites down and makes others look strange. Do you really what to live in a country where the government decides what ideas should be seen? Or even a country that places like China can point to and say they are doing the same thing, so its all ok?
Data Retention The next bright idea by the government is to make ISPs keep 10 years of internet browsing history of all their users. This would be like tapping everyone’s phone, just in case you did something wrong in the next 10 years.
There hasn’t been much detail about this proposal but let’s assume for a moment that it keeps URLs. Now of course most people’s internet addresses move around, so you will also need to keep some sort of log of which account used what address for the same time.
The URLs will tell the government which websites you have visited, but URLs also tell them which pages you visited. You can also often assume which pages you read and which you didn’t because of the time between this viewed page and the next.
Search engine queries are also encoded into a url. Google searches usually have something at the end of the url which is what you were searching for. There is also a chain of visited pages, so someone looking at a log could see your search, you go to a site, perhaps you then visit a banking or paypal site (have you bought something now?)
Even if you think you have nothing to worry about what the government might do with this information, including future governments, this information has to sit somewhere. Data sitting around for 10 years has 10 years time of being stolen or copied. Perhaps some activists obtain this log and publish a list of names of people who visited a particular website.
There is current laws for lawful interception. This is where the police or another security agency goes to the court and says a particular person has done certain bad things and asks if they can intercept their internet traffic. It’s the same rules if they want to tap your phone. Except for “fishing trips” where police just randomly look at information from anyone hoping to trip up on something, what is this system going to be used for?
What can you do? If you’re not happy about either, or both, of these new proposals, it is time to do something about it. Visit the website Open Internet Website for what you can do. One of the things is to
There has been some discussion on the Debian IPv6 list about how the function gethostbyname() has changed. The manual page says this function is obsolete and with good reason.
A new feature of the function is that if a hostname has both IPv4 and IPv6 entries then the order of the return values is not predefined. In fact it used to be you’d get the IPv4 addresses first, then the IPv6. That has now changed and with the more recent glibc you will get an IPv6 address first. Quite often old code doesn’t even check the address family or the size of address structure but just copies the relevant 4 bytes. You then get the first part of an 16-byte IPv6 address wedged into a 4-byte IPv4 address structure which basically means you get a mess.
The fix is pretty simple by changing the system call from gethostbyname() and using getaddrinfo() instead. If you only want the IPv4 addresses, perhaps because other parts of the code have not been checked or changed, then set the hints variable to return only IPv4 addresses.
If one of your packages is starting to play up and unable to connect to certain remote places and is instead trying to get to some “random” address, have a quick check for gethostbyname(). A quick grep across the source code may save a lot of debugging time.
After my usual battle with PHP and database exports, jffnms 0.8.5 is now released. This program is a network management system written in PHP. The worst part about the whole maintaining process for it would have to be is the release.
Why is it so difficult to track changes within a database and PHP code? You don’t get that nice compile-time versus run-time error problems and the database is just diabolical to keep up to date with what you have changed. Someone needs to invent a git for database states!
Looking around other PHP based programs, I don’t think anyone else has solved this issue. Well, its out there, enjoy it or not and if you have comments about the program let me know.
Well I suppose its a bit heretical running something such as VMware, but its an important piece of software at my workplace, it also allows me to run some important VMKs or modules. But at first it just wouldn’t compile.
And then I found this wonderful blog about Installing VMware on Ubuntu and it worked wonderfully. The author patched the code and it all installed nicely.
The next problem was one of the services would not start. Port 8308 would refuse to work and when I went to the management screen and said Service Unavailable. I tracked this down to the Java program dying at socket binding time.
The absolute first thing you should check if you are having TCP/IP problems with Java is the sysctl path net.ipv6.bindv6only which you can check with sysctl net.ipv6.bindv6only.
If it is 1, it might mean bad Java code network problems. And in fact this time it was the problem, changing it to 0 and the Java daemon started and stayed running and all was good.
Incidently if you use the Cisco ASA firewall Java client and it dies, use this trick for it too. On Debian systems, edit the file /etc/sysctl.d/bindv6only and set that option to 0. I don’t think its the fault of the key, but bad Java code (but is there anything but bad Java code?)