Wednesday, January 21, 2015

And it's like... what's the deal with build servers?

So what is a build server?

The simplest way I can think of to explain a build server is to imagine hiring a brand new developer for each code check in, giving them explicit instructions to accomplish the build, and letting them go.  Maybe that requires a bit of explanation - the idea of a build server is to provide a reproducible set of instructions/steps to accomplish building your application from start to finish without requiring additional input from the developer checking in the code.

Why do I need one?

As a developer without a build server, you might be in a situation where you have a project that builds perfectly fine locally, but when another developer attempts to build your latest bits, you encounter compile errors as far as the eyes can see. I unfortunately have experienced such a situation for each project I have pulled from source control (in instances where a build server was not used) - not that I fault the organization, persons, or projects involved - if you don't know better, you don't know better.

Once you do know about build servers, I do feel it is important to implement one if at all possible, as they are relatively easy to configure, and once done, an inordinate amount of time can be saved across developers.

Why doesn't everyone use a build server?

I only really see two reasons to not utilize a build server... and one is more of an excuse than a reason.  The first reason was mentioned above, if you don't know about a build server process, then you likely wouldn't have one.  The second reason (the excuse) - would be thinking it's "too hard" or "not worth it" to set up.  If the build server is too hard to set up, that likely means your manual build process is quite complex, and could likely benefit *more* from a build server than a simple application.  If grabbing a project from source control for the first time gives you a nice 10-15+ errors, which can take anywhere from 5 minutes, to several hours to resolve - and involve several developers - then you really need to think about what needs to be changed in order to fix that.  

Are there external libraries being utilized that need to be added to source?  Are there several SDKs missing from the developers machine required to build?  Did I miss something in check in that would not allow the next developer to build? All of those questions can be quite difficult to deduce when building locally.  With a build server, it's like a *separate* developer working on a project for the first time, every time, at every check in.  

If some new dependency is added to the project and is missed in the check in, the build server will immediately report failure and the developer (could) be notified as such, and actions can be taken to correct.  Without a build server, it could be quite the mystery as to why a project all of a sudden won't build, or why a project will not build for the first time.  

So why don't you have a build server yet?  

How do I set one up?

There are lots of tutorials on ( setting up build servers, and there are lots of build servers even! The build server I use on my personal site is TFS Build Service/MS Build I think the tutorial I referenced was: https://msdn.microsoft.com/en-us/library/ms181712.aspx

Other build servers include (but are not limited too):
etc

What's next? What else can I do with a build server?

Having a build server gets you and/or your organization a lot of benefit, but in my opinion, one of the best benefits is the ability to implement automated deployment.  Once a build is completed, steps can be taken in a number of ways which can vary greatly dependent on project complexity, your project's bits can be deployed to your next environment, AUTOMAGICALLY.

Friday, November 28, 2014

New DNS provider

Oh yeah... updated my DNS provider to DNSimple.  Was extremely easy to set up and would highly recommend if you're just looking to point a URL to an IP address.

DateRanges in C#

Been playing around a bit with GitHub to try to get the feel for Git terminology, branching/merging, etc.  My repo(s) can be found at: https://github.com/Kritner/

Was kind of surprised to find out there is no DateRange class within .net.  I attempted to create the starts of one here: https://github.com/Kritner/Common/  Currently only includes DateRange - could contain more stuff at some point.

Getting my Surface Pro 3 tomorrow hopefully I'll have more of a chance to randomly type in a compiler while watching TV once it's here! :3

Sunday, May 11, 2014

Growing up... or something

I would like to try to start blogging more, though I'm not sure what about.  Getting closer to 30 years old and Kristen and I have finally had to buy our first washer and dryer - I feel like an adult :P

This week, after 5 years with Peregrin, I have put in my 2 weeks notice while accepting an amazing offer as a Senior Web Developer at another company.  The company sounds like a great opportunity to continue learning, as well as offering my own knowledge and experience to them.  I feel that I needed to leave Peregirn in order to keep relevant, in order to start anew, and to keep growing.  I will miss Peregrin and the employees, but it is simply time to move on.

Up next, I will be concentrating on the furthered development of my front end skills, as well as continue studying for my next certification.  I might attempt to do blog posts about tutorials and/or things I would like to learn about next.  Guess we shall see.

Thursday, April 17, 2014

Pushing out a new build of the website tonight hopefully.  Attempting to get a small handle on bootstrap, since I'm not very versed in the front end stuff, hoping this will help out in that regard!

Haven't done an autodeployed build since Team Foundation Services changed their pricing structure from non-existent to existent, so hopefully this works.

Monday, November 25, 2013

Stuff and things

So we've been doing a lot of .net development lately at the ol' shop.  I'm now certified in MS SQL 2008 development, next up is .net! :)

Been trying to learn a bit more about api and ajaxy type stuff - though it's been around for quite some time, with the stuff I've been exposed to at work and in school I haven't had much chance to learn the *new* old stuff.

I am currently working on an API that will help with unspoiled node tracking for the MMORPG Final Fantasy 14.  So far I have gotten the in game clock time calculation worked into the API.

Next up on the learning agenda is to figure out authentication and authorization when it comes to api.  I noticed that with the new web api 2 provided by .net there are new built in functions to make it easier, but still quite a learning process for me.  Once I get the authorization set up on the API, I'll have to figure out how to authenticate from my website hosted on a separate subdomain.

Speaking of domains and subdomains, I have purchased a domain from GoDaddy.com for the purpose of attempting to get an SSL certificate in order to encrypt data for use with the web api.

When I'm not working on the web api, you can usually find me on the hyperion server as "Kritner Swiffertail" in FFXIV.

Monday, April 16, 2012

My first ASP.NET application/Masterpage

I had been having a few issues when attempting to get asp.net applications working on my web server - not knowing much of anything about asp.net, I was under the assumption it would be similar to the ColdFusion I am used to; it was not.

The thing I didn't understand, which this entry exists to remind me (and potentially any youse out there), is AppPools.  IIS seems to by default assign your web root to an appPool - the default (at least for me) being .NET framework 2.0.  It is as simple as changing the Default website to a new appPool using the 4.0 framework right?  Almost...

Having changed the default appPool to 4.0 framework I was now successfully compiling the standard "Hello World" .aspx - but getting run-time errors when attempting to integrate a master page into my site.  A master-page is a 'template' of sorts that can be used to create similar layout/functionality across numerous sites.  The run-time error was explaining that my MasterPage.master could not be found at ~/MasterPage.master - but it was there!

Luckily my wife Kristen was there (who does know ASP.net) to let me know that if I have my application within a directory in of itself, but the application is set up in a separate directory, then the "~/MasterPage.master" reference is relative to the application, not necessarily the directory that you are working in.

Simple fix?  Create a new application pool on the directory where my code is actually hosted.  Yay! Now everything is working without run time errors!