2 years, 11 months ago
Transfer of a post how Windows Azure API was developed is offered to your attention: about difficulties, successful and unsuccessful solutions, the drawn conclusions. Further — the text of the author.
After conversation with my fellow worker on REST API the idea to tell about the experience the organizations and works of command which created Windows Azure Service Management API came to my mind. On writing of this post I was inspired by such magnificent articles in a genre "to what I learned" as this behind authorship of Foursquare and this from Daniel Dzhakobs from Netflix.
Warning: Everything told under a cat — my personal opinion. I am not sure even that other participants of command agree with me. And I precisely know that some of the introduced ideas are quite inconsistent.
2 years, 11 months ago
We continue to tell interesting sketches from life of call centers, telecoms and cloudy telephony. Whether it happened to you to answer a call and to hear "please wait, the operator will contact you now"? The first thought which comes to mind usually obscenely, the second — "they that, completely became impudent?!?". The received such is ringing the user — the victim of cunning technology of "predictive call-down" which allows call centers to save hundreds of hours of time, but sometimes leads to amusing results. Under a cat I will tell about this piece in more detail and I will show how it can be implemented in several code lines on our cloud platform by voximplant
2 years, 11 months ago
It is the first post from a series about systems thinking and system engineering in which I will try to describe a simple language these abrupt pieces and to explain why they are necessary.
Systems thinking is a practical approach to perception of the world which considerably accelerates capabilities to analyze, make decisions and to study. Practical because it is created by practice, but did not grow from abstract mathematical theories.
If TRIZ abbreviation is familiar to you, then I would tell that the TRIZ methods are a set of special cases of application of systems thinking in physical production.
Hi habr! The main will be a question about development on .Net, that is with use of Microsoft Visual Studio, ReSharper, Nuget and so forth. I think, many of you developed big solutions (in msdn — solution), with a set of subprojects. And in this case quite often there was a problem of synchronization of Nuget of packets, assembly settings, etc. And, ReSharper will help here poorly unless it will begin to be confused in a set of the used libraries too. To check the source code, Open Source a solution — SolutionCop which is free for use was made. For a start I will give a couple of examples when checks of our solutions would not prevent.
Example 1: different Nuget versions of libraries.
For example, there are three projects: exe, dll1 and dll2. exe refers to both libraries, each of them refers, for example, to RX. But dll1 uses RX 2.2.0, and dll2 — RX 2.2.5. In practice, far not at once it is possible to receive an error as signatures of functions more or less match, moreover, MsBuild most often collects projects in the same order. However the similar configuration can lead to problems which will appear after deployment'a when all modular tests are passed (since they refer only to the library) and when the resulting file set prepares.
Example 2: the project refers to library directly, but not through Nuget.
Again we will take three of our projects: exe, dll1 and dll2. Let's say we also use still Jetbrains.Annotations to mark the NotNull/CanBeNull code attributes and to receive nice static analysis. But here ill luck: for dll1 we fairly downloaded version 9.2.0 packet, and in dll2 we just asked ReSharper to add the reference that he also made. As a result, in packages.config the dll2 file there is no packet with attributes, so if the project gathers as dll2-> dll1-> exe, then we will receive an error, Nuget a packet will be downloaded only when collecting dll1!
3 years ago
Development of Parallels Access demanded creation of the geodistributed service allowing to establish safely connection between computers and mobile clients of users in different points of the globe. The command which works on it wants to share the got experience in a form of quotes to facilitate a fate that who only plans creation of the client-server product, and to submerge in nostalgia of the professionals having behind the back dozen of successful projects:
3 years ago
Epic epigraph: "You can not know patterns, but management it is obliged to know!"
"Big sees at distance"
Who is familiar with Gedel's theory about uncertainty (which has received not absolutely exact name "about incompleteness"), that understands: all (rather) complex systems experience basic difficulties in self-knowledge and the self-description at the certain level of depth and detail. At once I will specify: I do not claim that between above-mentioned G.'s theory and "eternal" (exactly so-called!) direct link, no is available problems of OOP. But I, nevertheless, claim that problems of "perfect code" – are objectively not solvable. In general never, and exactly until, until we at last go beyond the OOP – and we will look at it from height of even more complex system. "Big after all sees at distance"!
— We have come into zone with strong magic index - he has explained — Once long ago the powerful magic field was formed here. – That's it — the bush passing by has answered. Terry Pratchett, Colour of magic
Unpleasantly to support ugly code. It is more difficult to understand ugly code, it more often happens outdated and often contains errors. However it is honest trouble — you know at once that with code not all to vporyadka and write additional tests before change, several times check, put time for that to repair everything in estimates.
Beautiful code in this respect another: you easily read it, in it new technologies are usually used and you willingly believe that here it works optimum and in it there are no errors. Though it can just easily be lie.
I will show in this article that it is impossible to trust any code (all lie) and I will show some interesting errors.