Posts

Showing posts from May, 2018

Enhancing my Memory with a Wiki

One of the things I have had to admit to myself as I have gotten older is that my memory isn't what it once was. One of the biggest problems I run into is thinking that I have something set in my memory only to find out a few days later that I can't remember something. I have the main customer that I do consulting work for, and I typically work for them four days a week and work on other projects on Friday. Invariably I will get done working on something for them on a Thursday certain that I will remember where I left off when I get back to it on Monday. Between Thursday and Monday, I will shift to several different projects and even different programming environments and when Monday comes, I have to sit there trying to remember what I was thinking when I left off the previous Thursday. Of course, that is just a short-term example. On a number of projects, I develop a solution that I am going to reuse on future projects. For example, I have been working on setting up windo

It's not all Coding, What's the Process?: Waterfall, Agile, Lean, Design...

I have been reading a book recently called "The Lean Startup". When I first started reading it, I realized they were taking Test Driven Development processes and applying them at a higher level to actual product development. The book also described using agile approaches to figuring out what an overall startup should be doing. There are number of cases described in the book that cover aspects of different businesses. From how a startup can use the test, build, learn model to quickly evolve a product or entire business. It also describes large companies building departments that act like a startup with an entrepreneurial management team. I found these descriptions interesting because of how directly they correlated to modern software development paradigms.  I have worked in IT for over 30 years, and in that time, the majority of projects I have worked on followed a waterfall approach. A business analyst or IT manager will talk to the business unit and put together a set o

Mac vs Windows PC

For most of my career I have been in circles where people would debate a Mac vs Windows PC. There were the years where Apple had dropped so far in market share that it seemed like the debate was over, but then Jobs returned and the debate started all over again. The debate is always on the personal level though. I have never seen a large corporation use Mac's as their primary computers. I have always worked on large corporate networks where Windows is king. Every now and then I would see a couple of Mac's in a marketing department, but that was about it.  Several years ago I started working on doing mobile development, and I had to get a Mac to compile my code. Even if you do hybrid development, you can develop and test in a Windows environment, but you have to compile on a Mac to get your app in the app store. I can see how a Mac would be easier to use for an average user, but from a power users perspective, I found it very cumbersome.  The biggest problem I have run i

What's Your Dream Job?

I get calls from recruiters fairly often asking if I am interested in looking at new opportunities. I am always honest with them and I usually say that I am curious what is available, but I am pretty happy where I am. I like the company I work for, the majority of the projects are interesting, and I have a manager who I trust and treats me fair. I have worked for some pretty bad managers in the past, so that is always a big concern. Making a little more money has no advantage if your boss won't sign off on your invoice and you don't get paid. I have had that happen a number of times and the amount of stress it causes makes the job extremely unpleasant. That being said there are some downsides to my current position.  One of the biggest downsides to my job is the commute. On a perfect day with no traffic at all, it takes just under 40 minutes to get to work. If it snows, rains, or if the sun it too bright, the commute can be over an hour. Over the past three years there hav

The Google Experience

A couple of years ago I was typing a search on Google about dependency injection, and the search screen fell away to a dark terminal window that said."We like the way you think". It turns out that Google uses their search platform as a recruiting tool. Since I was researching things that applied to their technology, I was invited to work through five problems, with the potential of getting an interview with Google at the end.  I sent a link to the shell to a friend of mine and asked if he had ever seen anything like this. I thought it was really cool. He sent me a reply telling me that he wasn't invited, so he couldn't use the shell. He also sent me an article that explained what was going on and how the process worked.  The first thing to figure out was the limited shell that was presented. The help command gave me instructions for how to edit and run my code. There were a total of five algorithms I had to write, but you had to finish them in order. The code

Throw Away Projects

If there is one thing I hate to hear most of all in the business world, it's "I want you to build a quick and dirty application because it is going to be thrown away in 6 months". I have had this happen to me time and time again, and then the applications never go away in 6 months, they seem to live on forever. First of all, I hate doing things the wrong way, and second, I hate having people look at my code later and think that is the kind of programmer I am.  The worst project I had like this was about 10 years ago. The CIO of the company I was working for called me into his office and said he needed a quick and dirty application built. He wanted it to read the emails from an inbox, and create a ticket in their help desk system. I started looking at how to connect to the exchange server and read the inbox, and I put together a pretty decent proposal. When I showed it to the CIO, he said no, he just wanted to me to connect using the local outlook client. He just want

App Races

I really do enjoy writing mobile apps, and I need to find more time to write them. Right now I have three apps in the store, and I have a couple of others in the works. The three that are out there are ad supported, and they come in both IOS and Android versions. When I say ad supported, that really is a misnomer. These apps generate penny's at most. Yesterday was one of my biggest days I have had and all the apps combined made 26 cents. The day before they made 9 cents. Even though they don't make any real money, I love logging into my admob account and seeing their status. For the longest time, DartOut was the only app I had in the store. I created the app because my son said it would be really cool if there was an app that would tell you the out in and 01 game after we got home from a dart match one night. This app had a very targeted audience, but we played on a league, so it got some traction among out friends and spread a little beyond the area.  The TipRate app

Getting up to speed with Unit testing with Xunit

For years now I have been wanting to learn how to do unit testing. I have read articles about it, watched online training courses, and started several projects, but I have never quite gotten there. Part of the problem is that I switch between architectures a lot in my day job, and the testing frameworks really need a modern coding platform to be effective. I guess you could use tests on your service classes in web forms, but as a novice, I haven't tried that. I have also been bouncing between learning different coding techniques that also use different testing frameworks, and I am always more focused on learning the new code than how to test it. There are a number of advantages to using an automated test framework. One of the things that always impressed me when going to user group meetings was seeing a presenter showing a new coding library or plugin and using a testing framework to give a live example of how the code works. Unit testing allows you to execute a single method wit

I can't Keep Up, I am Always Behind

I just saw a post that Angular 6 is now available. I was just getting up to speed with version 2 and 4, and I haven't even looked at the new features in 5 yet. I finally got good at Bootstrap 3, and now Bootstrap 4 is out, the panel which was one of my favorite features is gone along with several others. I tried publishing a .Net Core site the other day, and the server and my development environment were out of sync with the versions, so I had to update the server, and edit the .csproj file to get the site to run. I never seem to get up to speed on something before its replacement is on the scene. I remember back in the 90's I would push to use an updated technology, and often the manager of the department would say that he didn't want to be on the bleeding edge. He considered anything under a couple of years old bleeding edge, while I considered it pretty well proven. It seems like today any technology that is a couple of years old is legacy. I can't even fathom wh

Tools that Save Time and Improve Productivity

I am always trying to figure out ways to make my life more efficient overall. I always seem to run out of time, and never get as much done as I hope during the day. I don't know how many times I will be working on a project and one minute it is getting close to midnight and it seems like it is a minute later, but it is 2 am. Any tool that can save me a minute here or there, or allow me to do a couple of things at once is really valuable to me. I have compiled a list off the top of my head of some of the most time saving items I use regularly. Amazon Alexa I bought my first Amazon Echo with Alexa when it was first released to developers, and I have added several to my home since. I also tried the google home, but it didn't work as seamlessly for me as the Echo did. Being able to add things to my to do list and shopping list verbally really helped me with keeping track of tasks. I also use alarms and timers quite frequently, and being able to listen to audiobooks and music

You can't Change the World Alone.

Being an introvert has caused some real challenges in my life. I often describe to people that I am not anti social, I am socially inept. I love meeting people and having intellectual conversations, but I am totally clueless at starting conversation with random people. Once I am involved in a topic of interest I do fine, but getting there is really difficult for me. Friends will often describe their first opinion of me as standoffish, but once they get to know me, they understand it is a lack of skills. I have trouble making phone calls of any kind because having to be the first one to speak paralyzes me. I never make a social call just to say hi, I have to have a reason otherwise I feel like I am bothering someone.  I have owned a number of businesses over the years, and the one common problem I have had is that I was always doing them alone. Cafe Luwak was the one exception where it was supposed to be a family business with my mom and Forrest, but my mom quit after a couple of mo

20 Minutes at a Time

We all struggle with productivity issues from time to time. Sometimes when there is the least pressure, it is the hardest to get anything done. I remember when Forrest and I owned a restaurant, we got our worst reviews when we were slow. It used to happen all the time, we would get a couple who would come in mid afternoon after our normal lunch hour and before dinner. From the customers perspective there would be no one in the place, and a lot of people working, but the service would be incredibly slow.  The thing that most people don't understand if they haven't worked in food service is that when it is busy there is a flow to a restaurant. Everyone knows their task and they are in their zone so to speak. After a lunch rush, the staff would be stocking for dinner, cleaning up dishes, putting plates and silverware away, and of course some would be on their phones doing nothing. So when someone shows up at an odd time, people have to stop doing their side jobs and adjust bac

Programming Evolution

In the past week I have had a number of conversations about the best approaches to developing web applications with current technologies. Everyone has their favorite platform, and some projects lend themselves to different architectures. Lately I have been doing mostly ASP.NET MVC with some Angular and Web API's. I have friends who are working with more react and node. The fact that there is debate as to what the best platforms for a project are means that there are a lot of good platforms out there. The thing that really got me thinking was talking to developers who are still working on older technologies. At one of the user groups I went to there was a guy who had recently lost his job, and all he had been exposed to was ASP.NET Web Forms, and he was complaining that all the job postings were looking for MVC, Web API, and some kind of client framework. He was asking how hard it would be to get up to speed on these technologies. My first reaction was that they really make a lo

How to Flatten a One to Many Into Comma Separated List in a Column (SQL Server)

This is a pretty short post, but I figure if I write it up here, I will remember it next time I need it. Every time I need this, I struggle to find it. The SQL below selects all the columns from the Claim Table, and then selects all the ErrorMessage from the ClaimValidationErrors table and creates a comma separated list that is stored in the ValidationErrors column. The STUFF command simply removes the redundant comma at the beginning of the list. SELECT * , STUFF(( SELECT ' , ' + [ErrorMessage] FROM [dbo].[ClaimValidationErrors] cve WHERE cve . ClaimId = c . ClaimId FOR XML PATH ( ' ' )), 1 , 1 , ' ' ) ValidationErrors FROM claims c The ('') parameter on the FOR XML PATH removes the outer xml tag. So this is actually kind of a hack but it solves the problem. I have yet to find a way to do this in Entity Framework with linq directly, so I usually create a view and add the view to my model so I can access it from my code.

Does Anyone Use Business Cards Anymore?

Image
Does anyone use business cards anymore? Of course they do, but they are not as popular as they once were. Back in era before smartphones, business cards were the easiest way to share your contact information. I had books of business cards I had picked up at events, meetings, and social gatherings. Now that everyone has smart phones, it is much easier to say text me and I will add you to my contacts.  When I started restructuring Kartech, I thought I should get some new business cards. My old ones still listed a fax number that I had disconnected years ago. As I started redesigning the cards, I thought what would be the most important thing to have on my card? The answer was simple, an easy way to create a contact on someones phone.  I don't think many people keep books of business cards anymore. If they get a card that they feel is important, they are going to copy the information to their contacts as soon as they can and throw the card away. That is exactly what I do. So a