2015-09-21

Curl and sharepoint authentication

Our sharepoint uses NTLM for authentication, it took me some time to figure that out. I access a sharepoint site from our Linux Data Warehouse environment using curl. Seems like curl can handle NTLM, but this is what curl says about NTLM.  

The NTLM authentication method was designed by Microsoft and is used by IIS web servers. It is a proprietary protocol, reverse-engineered by clever people and implemented in curl based on their efforts. This kind of behavior should not be endorsed, you should encourage everyone who uses NTLM to switch to a public and documented authentication method instead, such as Digest.

curl --ntlm -u userid  http://sharepointServer/thePathTo/Items

2015-09-13

Big O



Recently I came across something that reminded me of my youth, big-O calculations. Big-O is used to calculate the complexity of algorithms or programs, big-O gives you a rough worst case estimation of the performance of an algorithm, and how runtime and space grows relative to the size of the input.
I didn’t know anything at all about big-O, but replied ‘do anyone really do that kind of calculation?’, when I was asked about big-O.  It reminds me of the time when people tried to estimate run times of programs by calculating revolving speed of drum memories and the time of machine instructions etc. When I started work with computers people had just stopped doing that type of calculations, and I was very happy for that.
I was told big-O is a big thing, it gives a worst time measurement of the algorithm the higher big-O figure the likelier it will run slower. But there is so many ifs and buts, these days you cannot do proper run time calculations just by evaluating the source code, you need to understand the program optimizer, high level instructions, libraries, hardware, opsys. If you have a program language good at  e.g. parallel optimize your code with a JIT compiler that may skew your calculations, if I got big-O right.
I have checked with some younger colleagues, one said when I asked, ‘I recall this from school,  but I never used it in real life, real runtime figures are dependent on so many other things, I can image it can be of use for assembler or C programmers, but for modern high level programming languages it is probably of limited use’. The others I asked did not know what big-O was, one said he remembered something about calculating runtime of programs.  
With my limited knowledge, I see big-O as a simple and clever option to programmatically compare different program snippets. This can come handy if you are developing a program language optimizer or a JIT compiler, but otherwise it is of little use. Big-O is an interesting subject and gives food for thought. I would not be surprised if I will use big-O one of these days.


I have spent years of optimizing computer systems, anything from network throughput to assembler algorithms, SQL queries, physical IO of databases etc, etc. I ‘only’ used real measurement, which you can rely on since they are real.    


Links I found useful when I studied big-O:

http://discrete.gr/complexity/
https://www.interviewcake.com/article/big-o-notation-time-and-space-complexity
http://bigocheatsheet.com/

2015-09-02

Summer's (almost) gone

Summer ended 1st September 2015 here in Stockholm. We had a fantastic summerly August which is rare here, most years summer is over in mid August, but not this year.
Autumn view from the office 2nd September, rainy but still warm.


I spent some time this August getting acquainted with MS SQL Server, it was an unexpected pleasant experience. Last time I  looked at SQL Server was 2001 and at that time I disregarded the software as a toy not fit for serious work. That is not true anymore, it looks like a good serious database manager. I have to spend a lot more time with the database to really understand SQL Server, but it was a breeze to create a database with constraints, indexes and all that. The management studio is a nice development environment. Transact-SQL will probably take a long time to master. On the whole SQL server is the same as other mature relational database managers, but different (they all are :-).
While working with SQL server I realised I miss DBA work, real proper DBA work, designing database, fixing performance problems, helping developers with tricky SQL queries. Not only installing the software and running utilities. I have to do something about this :-)