Skip to main content


Showing posts from August, 2017

Starting a Business: Getting a Name

How to register a business name in Nebraska A business name registered with the state is also known as a DBA (Doing Business As), trade name, or fictitious name Approximate Cost: $233.82 Approximate Time: Five business days Overview of Steps Decide on a name Fill in the online form Print and sign the form - $0.10 Scan and submit the signed form - $103 Wait for confirmation email - 1 business day Contact newspaper to get notice published - $130.72 Wait for publication and affidavit from newspaper - 3 business days Submit affidavit online and wait for confirmation email - 1 business day Important Notes This is based on my experience in Nebraska. While most of this advice may apply in other places, you should check on the process in your particular state I am not a lawyer. This article is not a substitute for professional legal advice This is based on how it went for me on August 14, 2017. Your "mileage" may vary When you might want to register a bu

The Difference Between Refactoring and Changing

The word refactoring has become popular in software development. Unfortunately, like many things in software development, not everybody uses it right. That is probably because it takes some effort to understand. Somebody who doesn't understand refactoring might use the words "refactor" and "change" interchangeably, like synonyms. However, refactoring does not mean the same thing as changing. Example Using Math Refactoring means changing the factors without changing the result. Refactoring software is like refactoring a multiplication problem in arithmetic. For example, consider the math problem: 3 * 4 This can be refactored to: 2 * 2 * 3 2 * 6 In these examples, the factors change, but the result remains the same: 3 * 4 = 12 2 * 2 * 3 = 12 2 * 6 = 12 However, making this kind of change is not refactoring: 3 + 4 Because it changes the result: 3 * 4 = 12 3 + 4 = 7 So, that was a different kind of change. Refactoring does not m

Better Software Design: Object Oriented Design

Beyond Procedural Programming In the old days, programming languages were procedural . That means they accomplished separation of concerns through placing code for each concern in a separate procedure (sometimes called a function or a subroutine). Like many developers, I learned procedural programming before object oriented  programming languages were popular. We need to be warned to avoid anti-patterns  (common big software mistakes) that come from trying to program in an object oriented programming language, in a procedural way. Let's take a look. How is Object Oriented Design Different? Object oriented design accomplishes separation of concerns by placing code for each concern in its own  class  or  interface . Procedures in these classes and interfaces are called methods . Some examples of object oriented programming languages include Java, Objective C, C++, and, sometimes, C#. Also, many traditionally non-object oriented programming language include some object oriented f

Better Software Design: Separation of Concerns

When I first learned computer programming, I thought I was a fine computer programmer. I produced much code that kind of worked; but looking back on it now I realize that the quality could have been much better. One of the important ideas I have learned since then is separation of concerns . "We can solve any problem by introducing an extra level of indirection...except for the problem of too many levels of indirection." -Wheeler, et al. Separation of concerns is the idea that any program that is even a little bit complicated has more than one concern , and that code for each of those concerns should be kept separate in the program. For example, we might write a program that asks a person's name, remembers it, and greets the user back by name. The naive way I would have written this when I started out might have been: Create a variable to store a person's name Display a message requesting the person's name Wait until the user has finished entering input Mo

Tactics For Mastering Software Development

OK, so you already know how to program some software that kind of works. When you are ready to take your software development to the next level, we recommend to implement these tactics: Project Management Issue Tracking Version Control Unit Tests Test Coverage Code Quality Performance Optimization 1. Project Management Before you can set out to improve your software you need an effective way to plan and organize your development work and keep it on track. Methodologies provide a way to break down tasks, prioritize them, and get them assigned to the right team members so they can get done on time. Popular methods to manage software development projects include agile  methodologies including scrum ,  kanban , and a combination of scrum and kanban called scrumban . There is much evidence that using these well known frameworks the right way can help save much time and money on software development projects. 2. Issue Tracking It's hard to efficiently resolve bugs and