Recently I have been asked to work on few resiliency improvement in our system. As part of that I had to work on implementing different retry strategies to handle partial failures, batching, queuing etc. I learnt a good deal from few articles and sharing them here:
- Implementing Resilient Applications – This is a good resource from Microsoft documentation which talks about different resiliency patterns.
- Marc Brooker has couple of good articles on Exponential back off and Jitter. Definitely a good read.
- Polly – Polly is a .NET resilience and transient-fault-handling library. This is a very rich library and if you go through the github link you would also find some great links to PluralSight tutorials and many interesting reading links.
I have been working with Azure DevOps for the last 6 years and it has been an amazing experience. I have been part of the team since it was called TFS Online, then VS Online, then VSTS and now Azure DevOps Services. As I have joined new team, I wanted to recollect some of my memories.
- I still remember the day I joined Visual Studio team when we were developing Visual Studio 2013 (it was still under development). We use the earlier version of VS to build the next version and I was thrilled about it (using VS to build VS :)).
- Our team owned the Load test framework which was part of VS Ultimate SKU. I felt proud that we are one of the key contributors to the revenue 😉
- I have done improvements in the Load test framework.
- After a couple of months, we started building Cloud Load Test Service – this is the first Azure DevOps services built from Hyderabad and it was great experience to be part of it.
- As part of this team, I worked on initial scale improvements to meet our preview goals.
- Worked in building telemetry collection, analysis and building dashboards.
- Built experiences in VS for configuring and viewing Application Insights data.
- Built the first user experience in Azure DevOps Portal for CLT
- Built key experiences in Microsoft Azure Portal for Load testing Azure App Service.
- After spending a good 4 years in building CLT, moved to Release Management aka Azure Pipelines.
- Built key experiences:
- Azure App Service CD – Connect 2016
- Azure DevOps Project – Connect 2017
- Azure Kubernetes support in Azure DevOps – Build 2018
- Gained deep understanding of Azure Portal architecture.
- Feel really proud of receiving good awards and recognition.
Made good number of friends, had a great time with team outings (Lonavala, Kerala, Goa), worked with real best brains, great technologies (we being the developer services org need to maintain the best practices), fantastic managers, even better management.
Pretty amazing time, memories to stick for a very long time.
I am moving to a team in Microsoft 365 which has very interesting challenges and they work at a massive scale. Hope to have a good learning curve in the new team.
A few days back, when I was looking at my LinkedIn profile, I got a recommendation to learn “Blockchain Basics”. Given that the course was for an hour I could finish it. Though it was a good introduction, the course made me curious (of course left me confused leaving so many questions :P). Today I happened to watch a video by Mark Russinovich (CTO of Microsoft Azure) which gave a very good technical information of Blockchain, bitcoin, ethereum, COCO framework etc.
This blog is to share pointers to the getting started with blockchain.
- Introduction to Blockchain by Mark Russinovich – This is definitely a must watch video.
- Blockchain basics on LinkedIn – This got me started with Blockchain.
- How did Satoshi manage to mine bitcoins as the first user – Thank god there is an answer to this. I had the same question as you need to do some proof of work for transactions to earn bitcoins (as per my initial understanding). This post gave an answer how you can earn.
- What is a smart contract? – This is a pretty well written blog. I liked the analogy with buying movie tickets which made it easier to understand the concept better.
I should probably find more time to explore ethereum and solidity and try out to create a small ICO on my private cluster as shown by Mark in his video.
Blockchain is pretty exciting.
(First non-technical post on my blog ;-))
This post is to highlight the simplicity in the process of transferring electricity bill to an individual’s name from Builder and encourage people to avoid using an agent help (especially avoiding the special pricing part). The overall process hardly take an hour and is cost effective.
Below are the steps and required documents:
- Take a printout of the document shared here, this document needs to be signed by your builder. Fill all the required details before giving the document to the builder
- Carry a Xerox of your latest EC. (not more than 3 months old). It takes about 250 Rupees to get a new EC. You would receive the EC within 4 days. You can save this 250 if you have a latest one.
- Take 2 copies of the Sale deed on both sides. One is needed for address change and the other for title change.
- 2 Passport size photos
- ID Proof
- Latest electricity bill
- You would need a Rs.100 Title Change Indemnity bond.
- You need to pay a Rs.25 challan
- Link document (both sides) if flat is land owner’s flat
- Rs.10 NOC by the joint owner, in case your flat is jointly owned.
Go to the near by electricity department with the above mentioned documents. There are enough shops around the electricity board where you can get bond mentioned in point 7 (even though it is 100/-, you would end up paying 160 or so depending on the shop). Usually there would be someone around in the board who would help you organise your documents and help in submission. I found the staff in Kukatpally electricity board really helpful and they didn’t expect any money.
In this process, you would maximum spend an amount of 500/-. If you try to go through a broker you would pay around 1200/- to 1500/- (it can vary depending on your relation and negotiation). The difference here might not be high but the point is if we understand the system, we can appreciate how things are organised, else we keep cribbing about bribery. Even if couple of folks avoid paying additional prices after reading this, I would be happy 🙂
I was recently asked a question by one of my team mates if there is a way to load a file locally instead of the remote file, keeping rest of the files served from the remote server. My instinct said it should be very well possible to do it. I did a quick search and found an interesting feature in Fiddler, it is named “AutoResponder”.
Here is a good video by Eric, the creator of Fiddler which talks about it
As shown in the video, you can create a rule which can say – given a request which matches a pattern pick a local file. After adding the rule, do select “Enable rules” for the rules to take affect. Make sure to select “Unmatched request passthrough”, else all the requests which doesn’t match the rule will fail.
You can also do little advanced things using FiddlerScript. For example: if you want to pick a local file which matches a pattern, you can write code in OnBeforeRequest() and specify the pattern match by your self.
And in order for these rules to work, you shouldn’t bundle your files for obvious reasons 🙂
In this post, I will try to collate different guidelines and pointers to readings that can help in building/fixing High DPI (HDPI) issues in WinForms
1. Automatic Scaling in Windows Forms
2. Creating a DPI aware application (MSDN documentation)
3. This post on SO has a documentation of some of the design guidelines – How to write WinForms code that auto-scales to system font and dpi settings? and this Creating a DPI-Aware Application
4. Take care of properly scaling Images – Make use of DpiHelper Class. For example, make use of LogicalToDeviceUnits to scale images properly for different DPIs
5. Try avoiding using the Designer. Use the built-in layout controls – specifically, the FlowLaypoutPanel and TableLayoutPanel
Most of the above points were helpful to me and should cover the most important things to keep in mind while working on HDPI. If you are starting fresh, you have various option like using WPF and building new Modern style UI on Windows 8 machines for which the framework handles the major things for you.
I have started working on WPF (Windows Presentation Foundation) since a couple of weeks and been going through some learning. WPF has been around for a long time (probably since .NET 3.0 time frame). What I am trying to post in this blog post is a list of readings which are recommended by my colleagues and the one which I found through reading on-line.
Suggestions and on-line readings:
1. A good blog from John Smith about WPF and MVVM
2. Keep UI layer as thin as possible. No data manipulation in xaml.cs(as much as can be avoided). UI layer should be dumb. Move all complex data logic to view model.
3. Try to use data binding in xaml file as much as possible. Avoid adding code in xaml.cs file(C# layer for the UI should be thin). Instead add those UI logic in xaml file itself.
4. Use data converters
5. Keep the styles and data templates separate from the layout as much as possible. Then use those as StaticResource / DynamicResource wherever applicable. This ensures better reusability.
6. Define custom controls whenever necessary. Default controls may not always be perf-efficient.
7. WPF can cause memory issues if we are not careful. Detach any event handlers that we may have attached during UI loading / initialization. Dispose any IDisposable objects. Ref1 Ref2
8. One can find good tutorials on PluralSight.com
9. WPF Interview Question – This has real good questions which gives you an overview of various high level topics in WPF
10. XAML Guidelines
11. XAML Guidelines and Best Practices – This link has points to channel9 videos on XAML Guidelines
Once you get a good hang of these concepts, you would have real fun working on some good UI.
As a request always. Please do share links to interesting WPF UI examples/samples/blogs/new-concepts etc which you came across.
Recently I have been reading an article published by partners of internet.org. In the article its been mentioned that using PHP (a dynamic typed language) was very productive for Facebook. I tried understanding why is using dynamic typed languages productive and went through some readings. I am sharing a few which were a good read.
You can find many other resources but the above ones should give a quick overview of typing. Wiki articles are also a good place to start learning.
PS : I would strongly recommend people to read the article that is published from internet.org.
Working with SQL and SQL Azure
Last couple of weeks I have been working on stored procedures and analyzing performances in SQL. I have been going through some interesting readings. Would like to share some of my learnings here. This would be updated on a regular basis.
Some of the key sites :
1. http://weblogs.sqlteam.com/ – This is a very good site which helped me in understanding various lock/synchorinization related things in SQL. The author is also very responsive.
2. http://blogs.msdn.com/b/benko/archive/2012/05/19/cloudtip-14-how-do-i-get-sql-profiler-info-from-sql-azure.aspx – To get SQL Profiler information from SQL Azure. Amazed to find this feature in Azure.
1. Truncate all the tables in a database
2. Tips & Tricks: YOU HAVE LOST ACCESS TO SQL SERVER. NOW WHAT?
Let me know if you have good references in the domain that would be of good help to me and readers.
Came across this good site where few data structures and algorithms are well visualized.
Site : Data structures visualization