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 windows authentication with database roles for authorization on ASP.NET core for an intranet application. I originally came up with the solution last fall for another project, and I was certain that I would remember it, but when I had to update the code because of changes in the framework, I had to relearn how my solution worked. So what I thought would take a day to get working has now taken a week. Of course, some of that is because it had to be rewritten, but it would have taken a lot less time if I didn't have to relearn the technology. 

Several years ago I set up a GitHub account, and I used it for a couple of things, but last year I decided I was going to move all the Kartech code into GitHub. I have been using the visual studio online site which uses TFS since I am a Microsoft partner, but I thought since I use that at a couple of my customers' sites, it would be good to know another technology. I moved all my code over, and then I noticed that they had a Wiki feature with each repository.

At first, I started using the Wiki feature to add descriptive information about the specific project. Then I thought what about all the generic stuff I want to keep track of. I created a private repository for all my content that I reuse on various projects. In the code library, I added scripts and sample code, but the biggest thing was creating my Wiki where I documented different things that I learned that I would want to reuse later. 

I really like using markdown to format the text in my wiki. It is easy to use for formatting, and all you need is a text editor to edit the files. The repository has a web interface which has a GUI for formatting your text. Inserting code samples is really convenient because you can specify the language and it automatically creates the syntax highlighting for you. I usually use C#, but it also works with JavaScript and SQL plus a whole bunch of other languages. 

I started using the Wiki any time I would research a solution. I might find a blog article and some posts on stack overflow that helped me, but instead of just saving links like I had done in the past, I started creating Wiki entries. This had two advantages for me. First I would convert the way other people would explain things into my way of thinking directly. This way when I would refer to the text in the future, it was already in my style. The second thing is that writing the instructions helped cement the concept in my memory and increased my overall understanding of the technology. 

Earlier this year my main customer upgraded their TFS implementation to the latest version, and I was really happy to see that Microsoft had added Wikis to their repositories. In fact, Microsoft had improved on GitHub's solution by making their wiki pages able to be nested. In TFS you can build a really nice hierarchy which makes it very easy to organize and find information. I started putting all my documentation in the Wikis. It is an easy way to share my solutions with the rest of the developers on my team as well as giving me a place to recall things from past solutions. 

Now when I leave for the week, I save a little note in my project wiki, so on Monday when I come in, I know exactly what I was working on and what my thought process was when I left. How about you? Do you have any cool tricks for keeping track of things you want to remember? Let me know in the comments.

Comments

Popular posts from this blog

Asp.Net Core with Extended Identity and Jwt Auth Walkthrough

File Backups to Dropbox with PowerShell

Dynamic Expression Builder with EF Core