Programming

MicroServices - Selected Links & Resources.

0
Microservices: An Unexpected Journey (Sam Newman)
Microservices @ Netflix: A Challenge of Scale
Principles of Microservices (ThoughtWorks)
Developing Enterprise Applications for the Cloud: From Monolith to Microservices (IBM)
Testing & Deploying Microservices (ThoughtWorks)
Growing a Microservices Landscape (With Smart Use Cases)
Think Small to Go Big - Introduction to Microservices (IBM)
Building Java (micro)services for the Cloud: The DHARMA Principles
Technology Projects
Spring Cloud
Spring Cloud Netflix
Netflix OSS
Akka
Akka.NET
DropWizard
 
Webinars
Building Distributed Systems with Netflix OSS and Spring Cloud (with Matt Stine)
7-part series, each part is 15 minutes or less
Part 1 of 7
Part 2 of 7
Part 3 of 7
Part 4 of 7
Part 5 of 7
Part 6 of 7
Part 7 of 7
Spring Cloud, Spring Boot, and Netflix OSS (with Spencer Gibb)
1 hour, 28 minutes
Books
Building Microservices: Designing Fine-Grained Systems (Sam Newman)
ReleaseIT!: Design and Deploy Production-Ready Software
Blogs and Articles
Microservice Design Patterns
An Architecture for Microservices using Spring on Cloud Foundry
Warehouse Computing and the Evolution of the Data Center: A Layman's Guide (Lenny Pruss)
Microservices, Monoliths, and NoOps
Microservice Maturity Model Proposal (Daniel Bryant)
Exploring Microservices in the Enterprise
Distributed Big Balls of Mud (Simon Brown)
Hexagonal Architecture: The Great Reconciler
Thanks to colleague and friend, David Lazar for preparing this comprehensive list, and allowing me to share it.
Share

Deep Learning with Neural Networks

Deep learning architectures are built using multiple levels of non-linear aggregators, for instance neural nets with many hidden layers. In this introductory talk Will Stanton discusses the motivations and principles regarding learning algorithms for deep architectures. Bill provides a primer to neural networks, and deep Learning. He explains how Deep Learning gives some of the best-ever solutions to problems in computer vision, speech recognition, and natural language processing.

and also, why Google is Investing in deep learning.

 

Share

Monads by David Crockford

The monadic curse is that once someone learns what monads are and how to use them, they lose the ability to explain it to other people.

Excellent lecture. Transcript and Monads for Humans

Share

Microservices by Martin Fowler @ Goto Conference

An interesting portrayal of Microservices by Martin Fowler.

 

The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.

Share

Learning Functional Programming without Growing a Neckbeard

Interesting introduction to Functional Programming by Kelsey Innis.

Share

Why Functional Programming Matters?

Dated, but a highly recommended reading for functional programmers by John Hughes of Institutionen  Datavetenskap,

 

Abstract: As software becomes more and more complex, it is more and more important to structure it well. Well-structured software is easy to write, easy to debug, and provides a collection of modules that can be re-used to reduce future programming costs. Conventional languages place conceptual limits on the way problems can be modularised. Functional languages push those limits back. In this paper we show that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute greatly to modularity. As examples, we manipulate lists and trees, program several numerical algorithms, and implement the alpha-beta heuristic (an algorithm from Artificial Intelligence used in game-playing programs). Since modularity is the key to successful programming, functional languages are vitally important to the real world.

The paper is available as postscript and pdf.  - Why Functional Programming Matters

Share

Resolution for the group's SID could not be resolved Error

I have recently encountered the following error when enumerating through the UserPrincipal.GetAuthorizationGroups collection.

System.DirectoryServices.AccountManagement.PrincipalOperationException: An error (1301) occurred while enumerating the groups.  The group's SID could not be resolved.

The problem was introduction of the domain controller running Server 2012 while the machine running my application was win7 VM (applies to Win2K8 as well)

7536.errorMessage3

With little googling, it appears that for the Windows 7 VM with introduction of 2012 domain controller, this SID error appears to be a known issue. When a 2012 domain controller is involved, the GetAuthorizationGroups() function would fail on groups (SIDs) that are added to a user by default.

Installing KB2830145 fixed my problem.

References

 

Share

[Book Review] Angular JS Services

Angular JS services by Jim Levin is a delightful addition to a topic which isn’t discussed as much as the framework itself. Angular, as a powerful structural framework for dynamic web apps has been topic of various well publicized texts. However the services, which provide the core of backend functionality, don’t get much lime-light. c’est la vie.

 

download

In Angular, services are designed as substitutable objects that are wired together using dependency injection (DI); therefore the understanding of law of demeter is quite important. Author started with fundamentals without much ado, and seamlessly transitioned into discussion about testability, mocking, data management and business logic handling. Handling cross cutting concerns (chapter 4) and Mash-ups (chapter 6) are especially interesting topics. BDD using Jasmine spies (test doubles) is also a treat for behavior-driven development fans.

The notion of designing services, tenets, best practices and architecting services for testability are topics every developer should pay attention to. Levin discusses service building best practices, factories and providers in a concrete and concise fashion with easy to understand code samples.

angular-js-logo

The book assumes that one is already familiar with JavaScript and have some experience writing applications using Angular. The quality of print vs. cost is a letdown; I hope it improves in next editions.

[Disclaimer] I have received the review copy from the publisher.

Share

Teaching Functional Programming to Professional .NET Developers

An informative paper by Tomas Petricek of University of Cambridge.

Abstract. Functional programming is often taught at universities to first-year or second-year students and most of the teaching materials have been written for this audience. With the recent rise of functional programming in the industry, it becomes important to teach functional concepts to professional developers with deep knowledge of other paradigms, most importantly object-oriented. We present our experience with teaching functional programming and F# to experienced .NET developers through a book Real-World Functional Programming and commercially offered F# trainings. The most important novelty in our approach is the use of C# for relating functional F# with object-oriented C# and for introducing some of the functional concepts. By presenting principles such as immutability, higher-order functions and functional types from a different perspective, we are able to build on existing knowledge of professional developers. This contrasts with a common approach that asks students to forget everything they know about programming and think completely differently. We believe that our observations are relevant for trainings designed for practitioners, but perhaps also for students who explore functional relatively late in the curriculum.

 

 

Honorable mention to A Look at F# from C#’s corner 

Share

GAC Changes in Windows Server 2012

Prior to Windows Server 2012, gacutil is typically used to install DLL files in the Windows Global Assembly Cache (GAC). With Windows Server 2012 unfortunately it's not quite so easy. Being able to simply open the GAC in Explorer and drag/drop is gone (so yeah, no shell!). Also GacUtil.exe is not present on the server by default as part of runtime. In order to use gacutil like earlier versions of Windows, we would need to install the .NET SDK on the server which is not really a good idea (defense in depth; only have runtime on server). Of course copying-pasting gacutil.exe doesn’t work (dependencies).

Since we are all too familiar to.NET versions prior to 4.0, GAC used to be in the c:\windows\assembly window and had a custom shell extension to flatten the directory structure into a list of assemblies. Like mentioned earlier, the shell extension is no longer used for .NET versions 4.0 and up. Since we have .NET 4.5 on server machines, its GAC is stored in c:\windows\microsoft.net\assembly. You just get to see the actual directory structure. Locating the assembly isn't that difficult, start in the GAC_MSIL directory and you should have no trouble locating your assembly there by its name. Locate the folder with the same display name as your assembly. It will have a subdirectory that has an unspeakable name that's based on the version and public key token, that subdirectory contains the DLL.

Therefore, PowerShell is the recommended approach to do the GAC install. Following are the instructions on how to install the dll to GAC in Windows 2012 Server. For EL6, we ended up writing the following powershell script.

Set-location "C:\tmp"
 [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
 $publish = New-Object System.EnterpriseServices.Internal.Publish
 $publish.GacInstall("c:\tmp\Microsoft.Practices.EnterpriseLibrary.Common.dll")
 $publish.GacInstall("c:\tmp\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll")
 $publish.GacInstall("c:\tmp\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll")
 $publish.GacInstall("c:\tmp\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF.dll")
 $publish.GacInstall("c:\tmp\Microsoft.Practices.EnterpriseLibrary.Logging.dll")

Happy Coding!

Share
Go to Top