A NumPy idiosyncracy

I noticed this debugging some code a while back:

>>> import numpy as np
>>> y = np.array([1])
>>> y -= 0.5
>>> y
array([0])
>>> y = np.array([1])
>>> x = y – 0.5
>>> x
array([ 0.5])

It’s useful to be aware of this behaviour, which I expect is because the dtype of y is int, while that of x is only determined later (at the time it is instantiated). In other words, this is due to the same feature which stops NumPy arrays of floating point numbers accumulating unnecessary, inaccurate decimals.

Posted in Programming, Python | Leave a comment

TOS letter

To: team@piazza.com
Subject: Terms of Service issue

Hello.

I just thought that I should inform you that I have decided not to use your service after getting good feedback from a colleague due to what I consider a ridiculous clause in your terms of service (at https://piazza.com/terms_of_use.html ).

I am referring to this statement in the first paragraph: “By accessing or using the Service, you signify that you have read, understood, and agree to be bound by this Terms of Use Agreement (“Agreement”), whether or not you are a registered user of our Service.”

Note that this statement implies that I have accepted the terms before I have even had a chance to view or read them, since they are presented to the user on the Service’s website.

Regards
Steve Kroon | Computer Science Division, Stellenbosch University

Update: I got a reply 2 days later from Piazza:

“Thank you for bringing this to our attention, we have updated the Terms of Use to remove this implication that you pointed out. Please do let us know if you have any other concerns, or additional questions about this or the site more generally.”

The change doesn’t seem to actually have propagated to the production website yet, but it’s nice to see a positive response about something like this.

Update: The “correction” issued by Piazza was simply removing the phrase “whether or not you are a registered user of our Service” from the sentence I emailed them. Clearly, this is not a substantive change. Furthermore, they did not indicate a change to their terms – the current version online says the last revision was 24 August 2012.

Posted in Academics, Activism, Bureaucracy, Hassles, Idealism, Legal | Leave a comment

Android app updates – a proposal

Android’s app update system drives me around the bend.

I guess it’s fine for the people living in the world of fast, uncapped internet; but for us mortals with slower ADSL lines and small caps, the data-hoover that is Android is made so much worse by having to effectively re-download and reinstall each app every time there’s a small change. Not just because of the wasted bandwidth, but because the downloads clog your connection and slow down everything else you’re trying to do.

To be fair, you can choose which apps you don’t want to update… but the next time you go to market, they’re all in your face, pleading with you to update them. You can’t tune them out, and you don’t know if they’re bugging you for the same update or a new one.

I suggest the following simple approach to helping address this problem. I’m sure there are better solutions, please comment if you’ve got one. Give users the option to not install a specific update (rather than just ignore it), and augment each app’s icon with some sort of marker to distinguish the following cases:

  1. App is up to date (i.e. no updates available)
  2. App is not up to date, and there are unreviewed updates
  3. App is not up to date, but all new updates have been declined

Other statuses such as “app is being updated” are probably possible, but I’m sure can be handled similarly. Of course, users should have the option to change their mind about a declined update if a feature they decided they didn’t want suddenly becomes useful to them.

That’s pretty much it.

Here’s an afterthought: an option to update at a certain time of the day would be pretty awesome.

Posted in Bureaucracy, Efficiency, Hassles, Idealism, Maintenance problems, Pipe dreams, Programming, Suggestions, Technology, Updates | Leave a comment

Improving call centres

Dear call centre designer/implementer/manager.

I would like to respectfully suggest that you pay attention to the following to enhance your clients’ experience of the call centre:

  1. Eradicate dead-ends from your menu system. To make this easier, always provide “none of the above” and “return to the previous menu” options.
  2. If you’re going to make clients enter information or selections on the keypad, respect it and where appropriate, collect it and provide it to the consultant. In particular, if you ask for a language preference, use it, or at least indicate when you will not be able to. Similarly, when the caller types in a client code and other information, do not make it necessary for the consultant to request this information again.
  3. Provide more information to people waiting for consultants: what is the caller’s position in the queue, and how quickly is the queue moving. This is basic information available in real-life queues!
  4. Provide a call-back facility when call volumes are high: customers on hold for over a certain (preferably short) amount of time can provide contact details to be called back when the capacity is available. This allows urgent callers to stay on the line in a shorter queue, while less urgent calls can be serviced at more convenient times to you (and the clients don’t need to wait as long).
  5. It is not necessary to replay the same adverts and announcements repeatedly to callers – they’ll hear them the first time. Shift callers from the announcement “loop” (assuming you use a loop) onto an announcement-free loop after they’ve heard all the announcements during their call.
  6. Finally, provide an email address as an alternative to the call centre (and advertise it on the announcement loop). Many people do not require immediate feedback, and this allows them to make the queries when convenient to them, and for you to (at least partially) resolve their queries when convenient to you.

Thanks,
Steve

[Agree with this and know anyone in call centres? Please forward to them, too!]

Posted in Bureaucracy, Idealism, Suggestions | Leave a comment

Expanding my vocabulary

Some new words and phrases I’ve encountered lately:

  1. parlous – meaning perilous or dangerous. Encountered on an article about a dwindling bird population in a parlous state.
  2. atavistic – based on the noun atavism, which refers to a reversion to a more primitive state. Encountered in Sandworms of Dune, by Kevin J Anderson and Brian Herbert.
  3. Fiddles and tunes – at a recent farewell party I attended, men and women were given complementary parts of proverbs as part of a matchmaking exercise. One of the resulting proverbs seems to have been “an old fiddle can play new tunes”, presumably a counter to the adage about old dogs and new tricks. However, the internet seems to indicate that the actual proverb is “There’s many a good tune played on an old fiddle”, or the Irish version “The older the fiddle the sweeter the tune”. Both seem to indicate an improvement of life with age, rather than degeneration.
  4. cerulean – sky-blue
  5. bête noire – something particularly reviled, a pet hate. From the french for black beast.
  6. bergamot – a pear-shaped orange whose rind is used in perfumes; also a type of herb with the same smell. Encountered in a cryptic crossword – forgotten the clue though – how about “Some herb made wizard grab tome.”?
  7. gadjo – a derogatory word used by gypsies to describe non-gypsies. Picked up in a game of Scrabble.
  8. arilli – plural of arillus, which is an alternate form of aril. The most well-known kind of arils are so-called false-fruits, like lychees and the arils in a pomegranate. These develop from the seed covering rather than the ovary, if I understand it correctly.
  9. panoply – a dazzling display.
  10. habergeon – a type of armor, specifically a light sleeveless coat of mail.
  11. carcanet – nowadays an ornamental women’s circlet, often adorned with gemstones; but in medieval times referred to a necklace or choker. These last three I picked up in Bilbo’s song in the Hall of Fire in Rivendell during my current re-read of Lord of the Rings.
Posted in Language | Leave a comment

How not to do customer service…

Yesterday, I emailed SANParks with 3 fairly specific queries about renewals for their Wild Card program. This morning (good response time), I got the following reply:

Hi Good day the best way wait until they other cards expired then will buy the new card so now update details so we can kept your records .

Besides being fairly incomprehensible, this answer also did nothing to help me find my answers to my 3 questions.

I’m fairly sure the person who replied is honestly trying to help me, but somewhere in SANParks a decision was made to have him/her at the frontline for customer queries. Hoe nou gemaak?

Posted in Uncategorized | Tagged , , , , | Leave a comment

Flattr – good idea scuppered by TOS

Flattr.com seems to be a really cool new service to facilitate internet users rewarding content creators by means of microdonations. With one of the masterminds behind the project being Pirate Bay co-founder Peter Sunde, you’d think they’d be wary of ridiculous legalese. But it seems even visiting Flattr’s site (did YOU click on the link?) constitutes acceptance of their terms of service:

These terms and conditions (“Terms of Use” or “Terms”) outline your obligations when using the Flattr service (“Service” or “Services”), which includes the use of our website or the web pages available at Flattr.com …..

PLEASE READ THESE TERMS OF USE CAREFULLY BEFORE USING THE SERVICES. BY ACCESSING THIS SITE OR USING ANY PART OF THE SITE OR ANY CONTENT OR SERVICES (AS EACH IS DEFINED HEREIN) ON THE SITE, YOU AGREE TO BECOME BOUND BY THESE TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ALL THE TERMS AND CONDITIONS, THEN YOU MAY NOT ACCESS THE SITE OR USE THE CONTENT OR ANY SERVICES IN THE SITE.

Not quite sure how you’re supposed to read those terms of use before accessing the site – they are hosted on flattr.com, after all…

So, another seemingly good idea I won’t be signing up for soon :(

Posted in Activism, Computers, Idealism, Legal | Leave a comment

Surely this can’t be legal?

From the EULA (end-user licence agreement) of a Firefox plugin I was considering installing:

Delicious may change this Software License by posting a new version without notice to you. Use of the Delicious Software after such change constitutes acceptance of such changes.

Surely this kind of carte blanche can’t be enforceable? (Informed opinions and pointers to relevant literature welcome.)

Posted in Computers, Legal | Leave a comment

Project Umonya Stellenbosch Python course – thanks!

I feel almost like a groom at a traditional Afrikaans wedding: “baie, baie dankie”. But at least I know any chirps will only be coming at the end of what I have to say.

This weekend, Stellenbosch University hosted a Python programming course I co-organized with a number of members of the UCT algorithm circle. We hosted 85 children between Grade 4 and 12 from around 55 schools. With the dust finally settling, I thought I’d just throw out some thanks to all the people who got involved to make the course (part of Project Umonya) the success it was.

First, the guys from the UCT algorithm circle: Primary thanks go to Marco, who did an incredible amount of remote organizing on the course while busy with his internship at Google’s Zurich office. Robert also deserves my thanks for all his organizational efforts, including taking queries from parents, designing the tutors’ T-shirts and the participants’ flash drives, and lecturing during the course. Kosie, thanks for setting up the resource pack for the learners to take home, and for presenting the intro Maths lecture. Stefano and Vaughn – thanks for all your work with the cameras and video streaming. Michiel, thanks for the co-ordination and monitoring work you did during the course, as well as the photography and video work. Graham: thanks for your lectures, for the visual python session on Sunday morning, and your lunch-time talk on your experience in industry. Thanks to Hayley for giving lectures, helping me with admin during the course, and running the energisers for the kids when their attention was flagging. Henk also deserves thanks for the lectures he gave.

Next, I’d like to thank our sponsors, the MIH electronic media lab, and particularly Gert-Jan, who agreed to sponsor us and Anita van der Spuy, who helped (actually, is still helping!) with the finances. I’d also like to thank our secretary at Computer Science, Azra, for her help with admin, logistics, quotes, and handling queries, and Derick for helping her and me with photocopying and postage.

This course would not have been possible without lab space, and we are very grateful to the administrators of the NARGA computer labs: Ilse, Paul, and Ed. I’d also like to thank the Stellenbosch University Science Faculty representative, Engela, for her help promoting the course in various newspapers, and even arranging a radio interview about the course.

To enhance the course, we had a couple of additional talks and lessons. Besides Graham, who I’ve already mentioned, I’d like to thank Willem Visser, the division head at Stellenbosch University computer science, who spoke on “Why you should all become Computer Scientists”, Andre Scholtz from Derivco, who gave the children a short intro on game development in Python, and Helge Reikeras from the MIH electronic media lab who gave an introduction to Ubuntu, for their talks.

The quality of such a course depends heavily on the availability of enough tutors to help the children when they get stuck. Besides most of the people from the UCT algorithm circle mentioned above, I’d like to thank the other tutors: Gwylim from the UCT Algorithm Circle; Helge, Leendert, and John – students at the MIH electronic media lab; Gideon, Pieter Holtzhausen, Pieter van der Walt, Jan, Gerard, J-P, and Lise – undergrad and postgrad students at Stellenbosch University; my colleague at Computer Science, McElory Hoffmann; Ewald, from S1; Johan, from Juizi web hosting; and Maia, from the South African Ubuntu Loco. [Also, Jock and his friend from Oxford, who McElory roped in as they walked past NARGA!]

I’d also like to thank Andries for tutoring, and both him and my wife, Dalene, for hosting the lecturers and tutors from the UCT algorithm circle who came to help for the weekend.

Our suppliers also deserve a thank-you for delivering timeously despite last minute orders: Curve Concepts for the flash drives, Screen Tee Printing for the T-Shirts, and Fedics Stellenbosch who supplied the packed lunches.

Finally, a thank-you to all the school principals, secretaries, maths teachers, science teachers and computer lab administrators who told their learners about the courses, encouraged them to apply, and sent us motivations for the children who applied to help us in sifting through the applications. Please note that applications for the courses to be held next year are already open (although the dates aren’t finalized yet) – please send your interested learners to http://www.umonya.co.za/apply.

Posted in Community, Computers, Programming | Tagged , | 2 Comments

Alternatives to training dragons

The other day I was considering the movie title “How to train your dragon” (we were considering what DVD to take out), and the title for the sequel aimed at students and dwarves, “How to drain your flagon” just jumped out at me.

This got me pondering what other similar titles this pattern might spawn:

  • How to entertain your vegan – for those who never know what to make
  • How to profane your pagan – turnabout is fair play, after all…
  • How to explain your dodecagon – well, what is it, really?
  • How to abstain from tarragon – I’ve been hooked on the stuff the last while (seriously)

Any more suggestions, or should we restrain this bandwagon before it gets out of control?

Posted in Humour, Movies, Word puzzles | Leave a comment