, Tuesday, 03 July 2018 9:04 AM (Category: Apps
My brother, Chris, introduced me to the Moves app back 20th April 2014. I have been using it ever since for self-surveillance. I use it with Momento to track where I've been. I use it every single day to see when I arrive at work, when I leave, how long I've been at work, what my travel time is. I use it every day, all day. It might burn through the battery, but it's been well worth it.
Moves was bought by Facebook in 2014. And today, Facebook announced they are shutting Moves down because of "low usage". Well fuck you, Facebook.
This is not the first time that an app I use a lot has been shut down. ANd every time an app I use a lot is shut down, it makes me more reluctant to try anything new. What's the point? If it's useful to me, it seems like it won't be useful to anyone else, so they shut it down. I think I will stick with the core Apple apps from now on, and not bother experimenting with anything new.
, Thursday, 21 June 2018 10:49 AM (Category: Programming
I follow Eric Raymond's blog via RSS - Armed and Dangerous. He has a lot of extremely good information for programmers. He is always worth reading. One of his recent posts was about Defect Attractors.
Here at work, stupid ideas often surface. When they do, I get tingles. "Avoid this", I say. "Why?" they ask. "I can't say right now, but I know it's a bad idea." and that's as good as I can tell them on first glance. It takes a while for my memory to throw up why things are bad ideas. I recognise them as bad because of past experiences. It takes time to remember and explain why. But some things will always be bad. They attract defects. They make it easy to build in problems.
I'm in my final years here. I'm working with two young programmers who are slowly taking over all my old code. I have 2.5 years to have it all handed over to them. When I retire, they will have it all and they will be responsible for it. I will be able to walk away and not be called back in the middle of the night for emergencies. But working with young programmers can be frustrating. They have great ideas that are clearly Defect Attractors, and I can't immediately explain why they are bad ideas. They regard me as an old programmer, fearful of new technology.
At this point, I give them advice which they ignore and laugh about as soon as I leave the room. I let them. They are not interested in learning from an old programmer, who they regard as a too-safe, fearful, old ninny. Fine. Clearly, they will only learn from personal pain, just like I did. When I was learning, I was self-taught. I had very little access to other programmers, books, magazines, in the late 1960s and early 1970s in North Queensland. So I made all the common mistakes, over and over, and I learnt from my pain. But once I got access to books and magazines and had access to good programmers, I read and improved and studied and learned. I still do. I don't see that in the younguns working with me. They are static. They learned a bunch of stuff in college, and believe they have knowledge and experience enough to last their entire careers. Oh well. If they will only learn from personal pain, fine by me. And they mostly see their careers as lasting about 8 to 10 years before they retire or move into management. They hate the idea that they could still be programmers in their sixties and seventies, like some of us here. Personally, I don't think of them as programmers. They are, what? Bean-counters, number jugglers, static constants? Come in for the money, learn nothing new, find the money is not there for newbies, jump into management at first opportunity. That's not being a programmer. Ten years ago, I would have said it was being a programmer, but not being a hacker, but the media has sure fucked up the meaning of the word 'hacker'.
After I retire from here, I have a bunch of projects I am going to continue with. I will continue to program for myself, I will continue to learn, I will continue to get better, and I will have more fun. My current plan is to move into Rust. Eric Raymond says it good enough to replace C. I like C, but Python makes things very easy. Raymond has a three-part series - The long goodbye to C, The big break in computer languages, and Language engineering for great justice. I want to get into Rust and rewrite my home apps. And I have a whole bunch of Perl I use for my workflows at home, and I will rewrite them in Python. I am going to have a lot of fun in retirement. And I am not going to care if the younguns make a lot of mistakes at work, that's going to be a cause for snide laughter.
, Thursday, 21 June 2018 10:39 AM (Category: Programming
Yesterday, a Jira ticket came past my desk.
"patient's date of birth is 5/31/32, but it will not accept - it says patient DOB must fall on or before 04/02/18 (right now or earlier). 1932 is well before 2018. Even if I use the context key and manually scroll to the year 1932, it presents this same error."
And yes, we obviously learnt nothing from Y2K. Our Java programmers are allowing them to enter two-digit years, and have added value tests so that if it's less than 50 it's 20xx, and if it's greater than 50 it's 19xx.
One of the sensible suggestions was to force 4-digit years in the data entry. But that got shouted down.
I have seen stupid ideas come up about every 15 years. Over and over again, the same stupid ideas surface, get implemented, face enormous problems, get fixed, and then resurface 15 years later. No-one pays attention to the past in programming. Stupid ideas persist forever, and it seems like every new generation of programmers ignores the past and reimplements stupid stuff, and has to go through pain.
I stayed out of this argument. I was here for Y2K, and I did a huge amount of work refactoring everything so we would continue unscathed when 1st January 2000 ticked over. We didn't fix everything - a bunch of small stuff screwed up, which we fixed over the next few days. The new guys don't care. They probably assume they won't be here when 2100 rolls around, or the company won't be here. Either way it will be SEP - Someone Else's Problem.
, Tuesday, 19 June 2018 2:02 PM (Category: Apple
Termius got back to me, asking about an environment variable - LC_ALL. I don't have that environment variable, but it did give me a line of experimentation, and I worked out what is happening.
I use the bash shell. I have two settings that control the command line history.
In .bashrc, I have
and in .bash_profile, I have
These options combined give me large amounts of command line history. When I start a shell, it loads .bash_history into memory, all 10,000 lines of it, and appends each command to the list in memory, truncating as it goes. When I exit the shell, it appends the memory list to .bash_history and then truncates it to 10,000 lines. My .bash_history is 10,000 lines after all these years.
I renamed .bashrc, exited the shell, and started the shell again. My .bash_history got truncated to the default 500 lines. And Termius now had a 5 second delay. So I emptied .bash_history completely, tried Termius again and now I had no delays. I loaded my original 10,000 line .bash_history from backup, tried Termius again and now I had the 120 second delay again. I tried it a few more times and it works consistently.
So Termius is doing something with .bash_history. The longer the file, the slower it is to start. I'm a bit concerned about this. I keep thinking about security.
I detailed all this and emailed it Termius. Got a reply almost immediately. They had found the problem. They have a new feature in the new version of Termius, called autocomplete. They load the shell history into memory of the app. They had problems with this, but they have fixed it and are testing the fix now. A new version should come down the pipeline shortly.
, Sunday, 17 June 2018 11:40 AM (Category: Apple
I have used the iPhone/iPad app Termius since December 2014 to ssh to work and home. It's an essential part of my daily life. I've never had a problem with it, it's worked very well. I've been very happy with it.
A week ago, Termius got a major upgrade that included refreshed UI, with gestures that can replace arrow keys and other things. I admit that I cringed when I saw that it was a major upgrade to version 4.0.0. I'm never happy to see important apps have major upgrades.
I have long said that all software will be upgraded to the point where it is no longer useful for its original purpose.
So when I went to use Termius the first time after the major upgrade, I ran into a problem. Trying to ssh to home no longer worked. It froze after connecting. I could tap things and gesture as much as I liked and then it seemed like something I did triggered it and it started behaving normally. I wrote to their support, but they couldn't reproduce it and asked for more info.
I spent about four hours testing it. It's not gestures. If I connect to my home server, and to my user, it will connect and then freeze for about 90 seconds. If I have my username and password stored, it will timeout at 90 seconds. If I manually have to enter my username and passord, it will timeout at 120 seconds. I tested both methods many times while trying to change things at my end. After the timeout, it will work normally. I tested it with other servers, no problems. I created new users on my server, and it worked, no problems. It's something to do with my user. I blew away my .ssh directory and restarted sshd and it continued to freeze. I checked that my .bashrc and .bash_profile weren't echoing anything, but no. I can't see what the problem is.
I need this to work, so I bought Shelly, another term/shell app. It works exactly like the old Termius worked, without any problems sshing to my server and user. It appears that the new Termius has a problem with something with my user, but old Termius and Shelly do not. I documented all that I could and sent it to Termius support. I don't think anything will happen, because it's clearly my problem not theirs. If their app works with all the other servers I ssh to, and it works with other users on my server, just not my regular one, then the problem is very specifically with me. I don't expect them to find a problem, or fix it. It's far too specific.
However, I still need to ssh to my server, and now I have Shelly and can use that and continue my work. So it's all good.
However, I fully expect that all my apps will change in time and stop working for me the way I do things, and I will have to switch sideways. I'm grateful that iPhone and iPad apps aren't super expensive. And I'm grateful that every time an app has stopped working for me, alternatives are available.