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 nameApproximate Cost: $233.82
Approximate Time: Five business daysOverview of Steps Decide on a nameFill in the online formPrint and sign the form - $0.10Scan and submit the signed form - $103Wait for confirmation email - 1 business dayContact newspaper to get notice published - $130.72Wait for publication and affidavit from newspaper - 3 business daysSubmit affidavit online and wait for confirmation email - 1 business dayImportant NotesThis 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 stateI am not a lawyer. This article is not a substitute for professional legal adviceThis is based on how it went for me on August 14, 2017. Your "mileage" may varyWhen you might want to register a business name: When your business is a sole pro…

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 * 32 * 6 In these examples, the factors change, but the result remains the same:
3 * 4 = 122 * 2 * 3 = 122 * 6 = 12 However, making this kind of change is not refactoring: 3 + 4 Because it changes the result: 3 * 4 = 123 + 4 = 7 So, that was a different kind of change. Refactoring does not mean the same thing as changing.Example in Softwa…

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 features. For …

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 nameDisplay a message requesting the person's nameWait until the user has finished entering inputMove data from …

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 ManagementIssue TrackingVersion ControlUnit TestsTest CoverageCode QualityPerformance Optimization1. 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 scrumkanban, 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 feature requests in the software…