When I started out as a wee programmer back in the 1980s, “Hungarian Notation” was all the rage. Invented by Charles Simonyi (a Hungarian guy!), it espoused a naming convention for variables that included the intent (or kind, or type) for that variable. Unfortunately, the semantic meaning of type is overloaded, and many developers assumed it meant “data type.” So, you had variables that were clearly string variables called strFirstName or clearly integer variables called intCount. In a type-safe compiled language, this is redundant, but many Microsoft devs, myself included, blindly followed the pattern because we learned it, and it made sense on the surface.
In my last blog entry, I discussed why you need a solid demand management process. Demand is what others are asking you to do. It is your “to-do” list or backlog of activities. From this list or backlog, you must be able to select the right work. The other part of what you do for a living is executing the work: doing work right. Therefore, “right work” (what is best to do next) vs. “work right” (what people, processes, or tools will be employed to do the work in the most effective way).
I am constantly asked by desktop developers how to make the transition to web development. Web applications are almost as powerful and as fast as desktop applications these days. There are no installation hassles as web applications reside in just one place: on your server. The user simply navigates to their application's starting point on their browser and can immediately start working. In this blog post, I provide you with guidance on how experienced developers can get started with web programming. I am not going to go in-depth into each technology and tool. Instead, I will introduce you to terms, technologies, and tools needed for web development, and provide you with links on where you can learn more about each.
In the last two blog posts, you have been introduced to the PouchDB NoSQL database. You learned to create a new database, modify documents within that database, and retrieve documents using the allDocs(). Now that you have inserted several documents into your PouchDB database, you might wish to retrieve documents based on data in fields other than the _id property. In this third part of our on-going blog posts on PouchDB, you learn to use the find() plug-in to perform queries on any property in your documents.
Sometimes, you may need to upload files to your server via an Angular application. There are a few different methods you may use. Today, I am going to present a method that works well for small files up to about two megabytes in size. In this blog, you build two projects: a .NET Core Web API project and an Angular project. You build these two projects from scratch using the Angular CLI, .NET Core, and Visual Studio Code editor.
When your business needs help with IT, it can be difficult to find the right fix. Technology talent is tough to find, and the best people always seem to be taken. Consider hiring a software development consultancy rather than going through an expensive, time-consuming hiring process that doesn’t guarantee you the candidate you want. Weigh the benefits against the potential drawbacks to decide what’s right for your company.
Doing soft deletes is a very common requirement or preference used in software development and it has many benefits including the main one of not accidentally losing data since it is never actually deleted from the database. The main approach to doing this is to add an IsDeleted flag to the database table and setting that to true instead of doing a hard delete. Simple enough and it works pretty well. The annoying part of using this approach comes when you have to add !IsDeleted to every single query you run against each table where you have implemented soft-deletes. Casey, a fellow Fairway-er (or Fairway-ian, Fairway-ite, ???) pointed this out as we started working on a new project. So we decided to treat this as a cross-cutting concern and implement it as an attribute that we can apply to the entities that we want to be soft-deleted. While we are still early on in using this new approach, so far so good.
A little while back I noticed that a GitHub user had forked SharpRepository and added some simple hooks into it in order to automatically index entities into Lucene when they are added, updated or deleted through SharpRepository. This was such a good idea that I knew we needed to get some proper hooks into the library itself. We decided to use an Aspect Oriented Programming approach and allow developers to decorate their entities with attributes that would hook into the proper part of SharpRepository to give them the controls they need.
I'm at a point in my project where I need to look up stuff. No doubt you're saying something like "Duh - programs need to look up stuff all the time, dummy! THAT'S NOT SPECIAL! TELL ME SOMETHING INTERESTING!"