Thursday, 17 May 2018

A quick reminder to self about error handling in R (baby steps #1)

I guess the below code tells pretty much it all:

tryCatch({
  x = function() {
    stop("hahaha now you blew the code!")
  }
  y = function() {
    x()
  }
  y()
}, error=function(e){
  print(e$call)
  print(e$message)
})


And then sourcing it gives:

x()
[1] "hahaha now you blew the code!"


I guess that's all that there is in practice...
... except maybe that there's a finally parameter included which I never notice :

function (expr, ..., finally) 

So... worth a second look :)

(To be continued...)

Monday, 7 May 2018

JavaScript versus integer sequence

Looks like the ever feared, popularly hated JS really has its drawbacks ... you need functional programming to create an integer sequence? you need a loop? and wouldn't anybody want to just do something about it? :)

E.g.
https://stackoverflow.com/questions/3895478/does-javascript-have-a-method-like-range-to-generate-a-range-within-the-supp

Jeez :) time to realize how good Python and R are... well, R as a language only in certain aspects, but still.

Thursday, 26 April 2018

Gesundheit MongoDB

MongoDB 3.6

Looking for null values? The answer:  BSON type 10.
You are to look for "$type: 10" values...


Naturally the question is whether you guys are seriously using a magic number by design in a database engine built for web developers, in the 21st century. Exciting times.

(What am I overlooking ...?)

Thursday, 29 March 2018

Beauties of R: isNumeric

So, in R apparently there is no function in the core packages to test if a string would work out as a number.

There are really unappealing workarounds, like:
https://stackoverflow.com/questions/16194212/how-to-suppress-warnings-globally-in-an-r-script
This uses global settings (options(warn=-1), bonus points for the magic number), risking failing to recover in case of erroneous situations, potentially affecting other threads unwittingly/unintentionally as part of a larger scale quest, etc.


Probably the slightly more laycoder-minded need to lay out their homemade witchery for this maybe with a regex. Or use something slightly external e.g. limma from the bioconductor repository. (And then ... there is a function called isNumeric. How ... why wouldn't you subconsciously confuse that with is.numeric? Cautious language design could come to the rescue ...)

Seriously? Is it the time when non-mathsy JS's isNaN() functionality clearly beats R?? :D No way. What am I missing?

Anyway, just for the huge fun here's my quick regex solution...

> test.values = c("5", "56", "5.67", ".67e+30")
> grepl("^([+-]?)((\\d+)|(\\d*[.]\\d+))([eE]([+-])?\\d+)?$", test.values)
[1] TRUE TRUE TRUE TRUE


Update: suppressWarnings(), for instance. I did overlook that one. However, what you get there is suppression of all warnings, not only the one you wanted to suppress. Typically, the range of warnings is not defined by the documentation of the function guarded by this function... so you never know what you got rid of.

Seems like a built in function would be a beneficial addition.


Thursday, 22 March 2018

Python console progressbar "???"

1%^M142/6456


Hence, 142 / 6456 < 0.02.

Good old Python (???) progressbar .. broke the mold, eh? Don't want to know ;)

Wednesday, 14 February 2018

No swap on AWS

Using Linux on AWS? As of now, there's no swap file then by default coming out of the images.

See the below two links for advices

How can I check if swap is active from the command line?
Why don't EC2 ubuntu images have swap?

A brief highlight roughly from those is this helpful command, to confirm your suspicion:

cat /proc/meminfo | grep -i swap

This will likely provide you with big fat zeroes as below:

SwapCached: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB


How cool is that (without a warning at the very least)...

Watch out when doing memory intensive processing (which is a less than good sign :) but happens), for any reason.

Friday, 9 February 2018

Love hate / Ubuntu & Android

When having to transfer files like

mkdir FromPhone/DCIM; sudo mv /media/motog/Internal\ shared\ storage/DCIM/Camera FromPhone/DCIM/

After apt installing this'n'that and mounting with
sudo jmtpfs /media/motog/

Hm... not feeling like a plug & play Windows user that much anymore :)

Too bad I'll never remember/work out in retrospect if it's just my faulty ("universal") laptop charger transferring a noise that normally makes my touchscreen crazy - and yes, it may have failed file transfers too - which was playing tricks with me.

Because anyhow, it just works now.