bergerbhttps://cyroot.com
Adventures in Software Development and LifeFri, 16 Mar 2018 21:11:39 +0000enhourly1http://wordpress.com/https://s2.wp.com/i/buttonw-com.pngbergerbhttps://cyroot.com
Self-Testing Developmenthttps://cyroot.com/2017/06/01/self-testing-development/
https://cyroot.com/2017/06/01/self-testing-development/#respondThu, 01 Jun 2017 16:54:40 +0000http://cyroot.com/?p=359Testing is a hard part of software development. One of the hardest aspects of development is testing code/features that you have created. It is easy to put the blinders up and write to the spec. Insider knowledge of the system probably plays a role in this difficulty. Seeing a system through user eyes is nearly impossible, but to get close you need to decouple yourself from the code.

Discipling yourself to test your own code and finding your own bugs is a difficult task. It is possible. Being a part of a code review process in which the code reviewer(s) look at code and possible bugs has made me a better developer. You will never find all of the bugs in an application; it takes a team, users, and time. The more bugs you find earlier the more reliable and usable the code will be.

Testing while you go helps too. Think of a fringe case? Go ahead write it down. Write a test for it. Do something.

The ability to look at your own code objectively is something I am continually trying to improve at. Catch bugs sooner. Make your code better sooner.

You are not your code

Refine.

You are not your code

Why would the user do x / y ?

They will. Many many many times.

Sometimes I click randomly on everything multiple times just to see what will happen. Curiosity. Users have curiosity with new features and will push them to their limits. An in-depth UAT will definitely find a number of bugs / issues. UAT is important because users will more easily accepttested code versus bug filled applications.

I have been using Team Foundation Server for a few years now in my day job. Side jobs have also used TFS from time to time. Leveraging GIT and the pull requests to control code reviews has definitely improved my code and the code of my fellow developers.

Communication is hard. Developing software is hard. Communicating and developing software is harder.

The ability to feature branch and merge to different environments to kick off automated builds gives a developer such a deeper look in the happenings of their code base. It improves the ability for multiple developers to work on a code base and have their code work and not wait on someone else to commit. The merge is easily the best part of Git in the .NET developer world. In the past I’ve used SVN and the merging was always complicated and clunky. Feature branching is built-in to the core of Git and TFS shines with Git as the code management feature.

The gate keeping of pull requests to a production environment helps stop bad code from getting into the wild. It is not a silver bullet, but having more eyes on code is always a good function. Utilizing the code reviewer for basic QA services, is a time consuming activity, but the quality of code that is delivered is almost always better. The ability to compare branches against staging, production or other environment ensures everyone is keeping up-to-date.

Speaking of code reviews; it is a function that I believe is critical to deliver software. It is a safety net for a number of different areas:

Reliability

Maintainability

Quality

Communication

Usability

Reliability – Fix those easy bugs that get through code. Simple bugs: order of operations bugs. Typos.

Maintainability – Will someone else understand the code? Is the developer making it too hard?

Quality – Does the developer have the latest version? Has the developer pushed the code to testing / QA?

Usability – Does the code mean UI usability / code standards? Is the UI logically? Are the orders of operation correct? What happens when you run them incorrectly?

]]>https://cyroot.com/2016/12/21/tfs-git-pull-requests-and-code-reviews/feed/0bergerbAutomating ASP.NET Deployments with Jenkinshttps://cyroot.com/2015/09/15/automating-asp-net-deployments-with-jenkins/
https://cyroot.com/2015/09/15/automating-asp-net-deployments-with-jenkins/#respondTue, 15 Sep 2015 14:29:36 +0000http://cyroot.com/?p=239Deploying ASP.NET web applications is a breeze with Jenkins and can really improve continuous integration/testing environment for UAT. It is also possible to do production deployments with scheduled builds.

In your ASP.NET setup > manage your publish profiles.

Here we have two profile Production and Staging. This gives us a Development environment (localhost), Staging Test (UAT environment), and Production environment. The profiles both point to shares where our web applications are stored.

From the Visual Studio aspect this is the only piece we will need – except for the entire project.

Jenkins will need to hook into your Version Control Management system to know when to do builds.

Here’s a typical CI staging hook:

In this scenario we are using SVN (SubVersioN) to know when to kick off our build.

We will poll for any new changes every 5 minutes.

With our staging profile built and in our VCS we can build with that configuration with MS Build.

This is a simple scenario with Jenkins to build your ASP.NET web applications quickly.

The Pragmatic Programmer: From Journeyman to Master
By Andrew Hunt, David Thomas

]]>https://cyroot.com/2015/06/15/217/feed/0bergerbThe Beauty and Power of Remote Workhttps://cyroot.com/2015/06/09/the-beauty-and-power-of-remote-work/
https://cyroot.com/2015/06/09/the-beauty-and-power-of-remote-work/#respondTue, 09 Jun 2015 13:18:27 +0000http://cyroot.wordpress.com/?p=198I am not a 100% remote worker but all my remote software development consulting is 100% – remote. Communication is the key to having a good relationship with a client and having great results. If you can only send a message saying that you will look at something it is better than silence. Communicating with yourself about realistic deadlines will help yourself mange your schedule helping to prevent burn-out. Remote software development is a combination of the beauty and power of its discipline.

The beauty of remote work is the comfort of remote work: to be able to relax at home (or out-and-about) and get a few hours of work in is a great feeling. I also like to visit various coffee shops, public libraries, or other places of free WiFi. Being stuck in an office all the time can become a drag and hurt productivity. It has been in my experience that the developers typically draw the short straw for a nice office space or cube. Keeping a fresh and interesting environment will help keep a developer happy!

The power of remote work is simple; work when you want to. I can honestly say that a lot of my best ideas usually happen somewhere unexpected. I feel software development is a form of art and those ideas sometimes hit you when you are driving, taking a shower, sleeping, and not something that is entirely enforceable. There are times when you have to make quick decisions, but when you can take the time to think and analyze the situation – it will be a far better solution. There are deadlines to be maintained – there is a balance between those two forces. It is powerful and stressful to maintain your own work schedule and deadlines, but it is also liberating.

Where are we now?Where are we going?

I believe in the next 50 years or so the prominence of remote work will only grow. We will look back on this time and have a hard time grasping the concept… so… we drove everywhere and wasted time on commuting when you had the ability to work from home???

It is early in the remote work game… we’ve come a long way and we have a long way to go. It’s adoption has often been met with fear and reluctance unfortunately.

Invoice monthly or a frequency and stick to it – Sometimes the client determines this

Manage Burn-out be honest with yourself it is a real thing

]]>https://cyroot.com/2015/06/09/the-beauty-and-power-of-remote-work/feed/0bergerbSane Database Warehousinghttps://cyroot.com/2013/08/01/sane-database-warehousing/
https://cyroot.com/2013/08/01/sane-database-warehousing/#respondThu, 01 Aug 2013 12:00:02 +0000http://cyroot.com/?p=212Database warehousing is a critical tool in the skill set of a developer. The ability to take normalized data and store it in a non-normalized dataset can increase loading times, reduce calculations and generate a large ROI. Large datasets will benefit dramatically from a warehouse of commonly/frequently accessed data facts.

ETL

Extract, Transform, Load ETL is the process to take normalized (usually) data into a faster data access view or tallied (summated) data view. In the Microsoft world there are a few ways to achieve this goal. T-SQL as a scheduled job can easy handle the simple data tasks. SQL Server Integration Services SSIS is also a great tool for connecting SQL Servers and diverse data systems together. SSIS is great when working with systems that are not SQL Server based. Which one is better? It depends on the need and the application.

Simple T-SQL Warehousing

Using SQL 2005 or later allows the using of the pivot command when querying data. Pivot Tables can simplify a lot of reporting and calculations (which take time). A very simple example of would be the following SQL Statement:

This is not the perfect example but should give you an idea of what you can do to manipulate the data to create a warehouse. You wouldn’t want to simply do an insert every time you run the process; you would want to do updates / inserts to get the best result. The data velocity (how fast the data changes) or the need of the data updating of the pivot table data can be changed would have an effect on the process itself.

SQL Server Integration Services

SSIS is much more than Pivot (though it can pivot data easily) and is great for combining data from multiple system into one data warehouse. The catch with SSIS and SQL Server is the versions of Business Intelligence Development Studio BIDS must match the SQL Server the SSIS Package is running on. A SSIS Package for SQL Server 2005 must be created in BIDS 2005. SQL Server 2008 must be created in BIDS 2008 and so on.

The amount of tasks/data manipulated/script tasks you can do in SSIS is quite staggering. I only wanted to mention SSIS since in today’s data warehousing world it is one of the best tools on the market.

JavaScript is a powerful client side scripting language. It allows developers to quickly add/remove functionality. It can be dropped in or generated from code. In WEB 2.0, JavaScript is the backbone of creating rich user environments. It is quite the catch 22. Oh how I love to hate and hate to love JavaScript.

JavaScript can pass some rudimentary tasks to the client so, as developers know, this can save processing cycles. Sometimes it can actually add processing cycles, so it definitely depends. Saving processing time allows application to run faster for the most part. You don’t have to wait for a complete page cycle to do tasks ala 1998. Basically, users are not patient nor should they be patient. They are used to the Desktop world. I feel JavaScript helps bridge that gap for users; sometime developers/designers go overboard.

Ease of Use

Love
Javascript is easy to use. Compatible with any web programming language: Classic ASP, .NET, PHP, Ruby, JSP. It integrates easily. It is fairly lightweight and the syntax is not mind-blowing.

Hate
It is a little to easy to use and users can directly access things in your page. It gives the user more control than what they know. Look you can easily change the background of any page in the address bar.

This only touches the surface of what JavaScript can do. It can get into your web app and change things around. I use it for quick fixes on the fly or to try different things. You can’t rely on JavaScript it will only cause you pain. Can you trust the DOM? No.

JavaScript is an interesting topic still it was once vogue, faded out, and then came back (with velocity). I think at one point in JavaScript’s history it was somewhat confused for Java, but I don’t think that is currently valid. There are so many great JavaScript libraries out there that enhance the UI and the total web experience.

They are even available from the Google API with no API Key which is an added bonus; unlimited connections to boot. I don’t think a lot of these effects/plug-ins would be as robust or available if not for JavaScript libraries and the good old Goog.

I really don’t hate JavaScript, but I think it can be overused or used incorrectly (say for validation). Sure it can help in notifying the end-user of validation issues; it should also be validated on the server side. Web development is a many layered burrito.

]]>https://cyroot.com/2009/03/20/why-i-love-and-hate-javascript/feed/0bergerb2009.03.16 OaD #75 | Consumed by codeAdding Tooltips to Checkboxlist Itemshttps://cyroot.com/2009/03/09/adding-tooltips-to-checkboxlist-items/
https://cyroot.com/2009/03/09/adding-tooltips-to-checkboxlist-items/#commentsMon, 09 Mar 2009 22:00:53 +0000http://www.cyroot.com/blog/?p=124 The CheckBoxList control in Microsoft ASP .NET 2.0 can be quite limiting in features. You can set a tooltip for the overall control; we can say “HEY THIS IS A CHECKBOXLIST”, which is great if that somehow helps you. The true power would be in adding a tooltip to each individual item in the checkboxlist. It would be nice to databind the field like other ASP .NET 2.0 Controls, but again no such luck.

To add a Tooltip to each individual item you are going to have to loop through the control. By setting the title attribute to whatever you want will give you the individual control to name each checkbox in the checkboxlist. This can done be done when pulling items in or on the case of a control firing. Whatever works for you.

[lang=”vb”]
‘ Loop through CheckBoxList and set tooltip to checked if selected
For Each item As ListItem In CheckBoxList1.Items
If item.Selected Then
item.Attributes(“title”) = “CHECKED”
End If
Next
[/lang]

This is really just a quick and dirty way to add tooltips to checkboxlist items. If you are already pulling in jQuery or some other library I would say use one of the many Tooltip plugins out there. If you are not using any Javascript libraries this can be a quick way to help achieve a goal. I’m not sure if this will work in Firefox, but if you are going for crossbrowser definitely check out a Javascript library.

]]>https://cyroot.com/2009/01/20/update/feed/1bergerbSun SetGrowing Up or Growing Oldhttps://cyroot.com/2008/11/07/growing-up-or-growing-old/
https://cyroot.com/2008/11/07/growing-up-or-growing-old/#commentsFri, 07 Nov 2008 20:39:56 +0000http://www.cyroot.com/blog/?p=106I think it may be the latter. I am departing from my usual technophile view of sorts and taking a introspective look at some things that have been on my mind. A lot has changed over the past few years, frankly, over last six months or so. It has been a rapid fire of change and I guess that is what life is all about: CHANGE.

Home ownership, bills, working a lot, puppy, more bills, working around the house… It feels like I barely have time to breathe most of the time. I guess that is what life is about, the next phase in a way. Less time for friends, less time for family, building my own family, my own life. Not being in college anymore is a total departure from what I have been come accustomed to. It is nice on one hand.. no homework or projects sucking the life out of me.. Now it is just house projects and work projects doing that. It was a trade of sorts. I am happy with my job and it is a lot less time consuming than school was.

I was on a walk with the dog last night and I was remembering back when I was in High School; it seems like a lifetime ago. A different town a different day. I remember lifting weights in my parents basement at 1:00am listening to the radio. It was just a neat time in my life. I didn’t have many worries or concerns; I was young.

I have seen 1:00am only a couple times since I have been out on my “own”. I think that is good having a schedule and such.

This post has nothing and everything to do with technology. Technology is a passion in my life and it has taken me to where I am today, but technology is playing a different role in my life recently. Since I have less time to see people that I have seen for years technology is a great way to keep in touch and see what people are up to. Actually a friend I had in High School contacted me on Facebook yesterday, which was pretty cool. I haven’t seen her in years. She has a cute kid.

I have been on Facebook, Myspace, and other social networks for many years, but I think their role has changed. I think when I was younger they were an addition to face to face encounters and now they take that place. It is good, I think, because otherwise I would not no communication with my hectic schedule and life.

I don’t know if I am growing up or growing old. Maybe neither. I am changing because life is change. It’s definitely not easy. There are so many sacrifices that I am not used to. With responsibility comes sacrifice to a degree. I gain so much from my sacrifice though. It’s a good trade.