The textbook Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne [ Amazon · Pearson] surveys the most important algorithms and data structures in use today. We motivate each algorithm that we address by examining its impact on applications to science, engineering, and industry. The textbook is organized into six chapters:
Chapter 1: Fundamentals introduces a scientific and engineering basis for comparing algorithms and making predictions. It also includes our programming model.
Chapter 2: Sorting considers several classic sorting algorithms, including insertion sort, mergesort, and quicksort. It also includes a binary heap implementation of a priority queue.
Chapter 3: Searching describes several classic symbol table implementations, including binary search trees, red-black trees, and hash tables.
Chapter 4: Graphs surveys the most important graph processing problems, including depth-first search, breadth-first search, minimum spanning trees, and shortest paths.
Chapter 5: Strings investigates specialized algorithms for string processing, including radix sorting, substring search, tries, regular expressions, and data compression.
Chapter 6: Context highlights connections to systems programming, scientific computing, commercial applications, operations research, and intractability.
Needless to say that everyone learned a LOT of things and really enjoyed those two days!
Before going in details with the talks we attended, we’d like to mention that some of us also participated at one of the three one-day-workshops that Ncrafts also proposed the day before the conference. We really recommend you to go to one of those next year as this is the best way to get into something you’d like to investigate more. The workshops are held by most valuable people as this year we had the chance to attend:
Protractor is an end-to-end test framework for AngularJS. The official version is built on Node.js and Selenium WebDriverJS. While there is great support for NPM and task runners like Grunt and Gulp in Visual Studio (via extensions in VS 2013, and built into VS 2015), there is currently no way to integrate Protractor tests into Test Explorer (that I know of).
Thankfully there isProtractor.NET, a .NET port of Protractor built on top of Selenium WebDriver for .NET. It allows us to write Angular UI tests using .NET testing frameworks such as NUnit, and arguably produces more readable tests because there’s no need to use promises.
It’s worthwhile to mention that we can write tests for Angular apps using WebDriver alone. Often this is done by inserting waits to pause execution until Angular is finished doing its work. The advantage of using Protractor (and Protractor.NET) is that it understands Angular’s digest cycle and blocks until the digest cycle has finished. This allows us to write much cleaner test code.
Before you decide what to do, you have to take stock of your situation. Ask these four questions:
Is the code quality high? High quality code can be defined in various ways — .does the code have automated tests? Is it well-factored? Is it easy to read?
Is the code written using a modern technology stack?
Is the highest priority business goal short-term or long-term? For example, do you need to fix bugs right now? Or are you launching an MVP to test product/market fit, do a demo, grab attention of investors? If so, then your high priority goal is near term. But if the future is more important than the near term (like you’ve got an existing customer base and you’re using this software to improve the business over the next few years), you’ve got a long-term goal. Of course, the future is always important. But, there are always tradeoffs, and we have to be honest about what the the highest priority goal is at the moment.
Are the developers who wrote the legacy code part of the development team moving forward?
Code quality is an abstract concept and can be interpreted in several ways. You can find “best practices” depending on your programming language and paradigm. As an Object Oriented Programmer working with C# I heavily rely on the “Clean Code” concepts and the SOLID principles (more here).
Principles and concepts are mandatory for every professional developers. Yet when working on a huge code base it is difficult to know if your concepts are respected everywhere in your application. There are tools to help you with that and I had the chance to be able to test one of them, called NDepend and I will introduce it in this blog post.
Last year after BUILD I posted Exciting Times for .NET and since then I have had the pleasure of working much closer with the .NET team, which includes the runtime, framework, languages & compilers. Although my focus has been a lot more on internal community in the last year, such as helping run internal conferences for our field employees, I’ve also spent time helping get the .NET Foundation off the ground and learning a lot about open source communities and all our .NET Foundation projects. Oh right, I also got married. :-) It’s been a transition period for me. Going from community “evangelist” to more of a “facilitator” or “connector”. I really like Alex Hillman’s term: Tummler.
Now that we’re approaching the next BUILD, I’m even more excited about the progress we’ve been making, particularly around the .NET platform itself, and the team’s approach to open source. There are multiple tracks of .NET innovations happening so I thought I’d write a high-level “sign-post” style blog post to help people understand the major pieces and how and where to get involved with the projects. In other words, a good place to start learning about .NET 2015. At least that’s my hope!
In the last part of my Dependency Injection article I introduced the term of “mocking”. This kind of test double can be really powerful. Yet in my example I had to create 2 new classes (my mocks) to be able to test my functionality in order to reduced coupling. Here is the code used by the tests.
Moq provides a Verify method to check whether or not a method has been called and how many times. This is the method I used in the test to validate my test scenarios. You can notice that I no longer used NFluent, because in this case I don’t need it. Yet it is possible to use NFluent with Moq for the tests, they work really well together.
In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design Patterns are formalized best practices that the programmer must implement in the application.
In this post we’ll build sample SPA using AngularJS, this application will allow the users to do the following:
Register in our system by providing username and password.
Secure certain views from viewing by authenticated users (Anonymous users).
Allow registered users to log-in and keep them logged in for 24 hours or until they log-out from the system, this should be done using tokens.
If you are new to AngularJS, you can check my other tutorial which provides step by step instructions on how to build SPA using AngularJS, it is important to understand the fundamentals aspects of AngularJS before start working with it, in this tutorial I’ll assume that reader have basic understanding of how AngularJS works.
Exception loggers provide you a single point into which you can plug in a service that would log information about any exceptions occurring in the Web API pipeline – regardless where they originated from. Moreover, the relevant ExceptionContext will be provided to you inside that logger, giving you access to contextual information which are specific for the controller or filter or any other Web API component from which the exception was thrown.
One of these libraries is AngularJS from Google. In this article, I hope to get you started by showing you how it works and hopefully why you should be using it.
HDInsight provides a very easy to use interface to provision a Hadoop cluster with a few clicks and interact with the cluster programmatically. In this blog post, we will explore Hive and how it can be used with HDInsight.
Hive is very popular among data analysts/scientists as it provides a friendly SQL-like interface to interact with the Hadoop cluster. However, behind the scenes, Hive uses the MapReduce framework to submit jobs and get results back. When an HDInsight cluster is provisioned, HiveServer and HiveServer2 services are installed on the head node of the cluster. While HDInsight provides the option to interact with both the services, HiveServer2 is the service of choice since it addresses the concurrency limitation imposed by HiveServer.
HTTP/2 is a rework of how HTTP semantics flow over TCP connections. The major advance of HTTP/1.1 was the use of persistent connections to service multiple requests in a row. In HTTP/2, a persistent connection can be used to service multiple simultaneous requests. In the process, HTTP/2 introduces several additional features that improve the efficiency of HTTP over the network.
In this article, I would like to describe my experience with installing and configuring Redis server in most compact way. Also, I would like to do a brief overview of usage Redis hashes and lists in .NET/C# client.
Web Development: AngularJS for ASP.NET MVC Developers by Miguel A Castro
When using ASP.NET MVC, you need to to know how to set Angular up with regards to modules, controllers, and services. And the truth is that not the entire site needs to be one giant Single-Page-Application. I’ll show how to design an ASP.NET MVC site so that it includes pockets of SPA that use Angular, taking advantage of binding, routing, and even back-button support - all while remaining on the client.
This is the seventh part in a multiple part blog series on building ASP.NET 5 (ASP.NET vNext) apps with AngularJS. In this series of blog posts, I show how you can create a simple Movie app using ASP.NET 5, MVC 6, and AngularJS.
In this post we will learn how to Getting Started with React.js in ASP.NET MVC.
React top feature is SPEED.
I spent the last couple of weeks writing sample code for ASP.NET 5/MVC 6 and I was surprised by the depth of the changes in the current beta release of ASP.NET 5. ASP.NET 5 is the most significant new release of ASP.NET in the history of the ASP.NET framework — it has been rewritten from the ground up.
In this blog post, I list what I consider to be the top 10 most significant changes in ASP.NET 5. This is a highly opinionated list. If other changes strike you as more significant, please describe the change in a comment.
So I decided to compile mini tutorial of three five posts which covers and connects those topics. In this tutorial we’ll build SPA using AngularJS for the front-end, and ASP.NET Web API 2, Owin middleware, and ASP.NET Identity for the back-end.
elasticsearch exposes a great JSON based REST API. However, to interact with it easily from .NET we’ll use a client API. There are several such APIs for .NET, not to mention other languages. As I’m one of the co-founders ofTruffler, a SaaS solution for search and content retrieval based on elasticsearch I’d of course love to use the Truffler .NET API. But as one key point of that API is to make it even easier than it already is to interact with elasticsearch it isn’t a good fit for this post.
With AngularJS and ASP.NET MVC, we now have an MVC pattern and architecture for both on the client and server. What do we do and/or how do we approach this? Well one can argue we don’t use any of the MVC architecture on the server and build out a full-fledged AngularJS front-end application and only use make async calls to Web API for all things that absolutely need to be on the server e.g. CRUD, workflows, business logic, etc.
Now, there’s absolutely nothing wrong with this approach, and for the most part a lot of heavy front end SPA’s are built this way in ASP.NET MVC. However, with all the .NET, ASP.NET and AngularJS goodness, why not leverage the best of both worlds? Again, there’s absolutely nothing wrong with building a pure AngularJS application and only using Web API, but for this blog post we’ll go over patterns of using the best of both worlds along with integrating AngularJS with Kendo UI.
Gone are the days when a team could solve a business problem by simply building a set of interrelated Web pages. Most of the time, you don’t build plain Web sites anymore; you build articulated solutions that result from the combination of various artifacts, including a classic Web site full of HTML pages, a mobile front end for navigation over devices, maybe a push-notification endpoint for mobile apps that relates to the solution, and a distinct network for static content.
Each piece of the solution requires its own framework when not on its own platform. This causes a proliferation of frameworks and codenames that are confusing to everybody except a (very) small group of geeks.
In addition, sites like GitHub make it easy for everybody to contribute his own work to the community. Far from being a problem, it encourages everybody to write his own framework for doing the same things as others but in a slightly different way that the author and a few followers reckoned was better.
Now, if your work is on the cutting edge, and you are lucky enough to only work on brand-new projects from day one, and your buyers are open to any sort of technology or framework regardless of support (and lack thereof), availability of (and lack thereof) service-level agreements, open-source statements and similar, then you live in a perfect world. But otherwise, you may just happen to live in the neighborhood of hell and want to move elsewhere.
This article, like a real-estate leaflet, lists properties on sale without exaggerating value, benefits, and quality!
The modern web ecosystem is made up of many different types of scenarios of how users interact with online content. With the increasing popularity of mobile devices along with countless hours at Starbucks and on airplanes, users may often find themselves in a position of wanting to use web content while not being able to enjoy reliable and continual access to the Internet.
A website that is not configured to operate in a disconnected state is unavailable in any form if an Internet connection is not available. For instance, Figure 1demonstrates the type of response you may encounter while trying to view http://msn.com while working without an Internet connection.
I have been brewing on this post for some days now and the excitement of the presentation to come motivated me to finish it. We use ElasticSearch at my day job at eBay and the product is also a key ingredient in my ELMAH in the cloud project elmah.io. In this post I will share my experiences setting up ElasticSearch in a clustered setup of virtual machines, running on Windows Azure. Disclamer: this is in no way an official guide on how to setup ElasticSearch in a cluster. My experience with replication in ElasticSearch is pretty limited, and I only just now found out how virtual networks work in Windows Azure. Use this guide for inspiration and I would love to get some feedback on the approach used.
If you don’t have access to Azure, there’s a free trial available from the frontpage: http://www.windowsazure.com/en-us/pricing/free-trial/. You will get 30 days of Azure with a maximum of $200 worth of services. Pricing on Azure has always been a nightmare, but $200 should do just fine in order to play around with a couple of VMs. When signed up and in, start by creating a new virtual network:
Sharing your scoops to your social media accounts is a must to distribute your curated content. Not only will it drive traffic and leads through your content, but it will help show your expertise with your followers.
How to integrate my topics' content to my website?
Integrating your curated content to your website or blog will allow you to increase your website visitors’ engagement, boost SEO and acquire new visitors. By redirecting your social media traffic to your website, Scoop.it will also help you generate more qualified traffic and leads from your curation work.
Distributing your curated content through a newsletter is a great way to nurture and engage your email subscribers will developing your traffic and visibility.
Creating engaging newsletters with your curated content is really easy.