I’ve spoken with quite a few people in the last few years that don’t see enough value in version control to actually implement it. Most of them agree using a VCS is a good idea, but they aren’t doing it. Maybe this analogy will help.
I was listening to Ike Ellis talk about VCS and he said something like this. Imagine you had a ten foot board to walk across and it was laying on the ground. You’d be willing to walk, skip, dance, maybe cartwheel across it. After all, what are the consequences?
Now imagine this board is 50 feet off the ground. How do you cross it now? Many of us would be more cautious. In fact, if you’re like me, you’re likely laying down on the board, gripping tightly as you move inch by inch.
However, what if there were a net below you? And if you fell, this net would toss you right back onto the board where you’d fallen so you could continue on from the last place you’d had success.
That safety net is your VCS, and when you’re working along coding, you’re crossing a board that’s quite a distance from the ground.
The Voice of the DBA Podcast
I heard this quote recently from Dan Wood of Northwest Cadence. “The road to success is paved with cobblestones.” The meaning is that as we get better and gain success in those things we attempt, it will be a bumpy road. If you’ve ever driven (or walked) down a cobblestone road, you know what I mean. It’s not a path you’d want to take every day in a wheeled vehicle.
In other words, we will make mistakes.
In talking and teaching about software development practices, I think far too many people, myself included, become too concerned about mistakes. We worry about our code being perfect, or we struggle to implement newer features because we lack the confidence to try something new.
This is one of the reasons I think moving to a well engineered software delivery pipeline is important. The ability to make changes to code quickly, run tests, and deploy smoothly is important. We will make mistakes in our programming. We will have bugs. Even as we improve our ability to write better code, we will make mistakes that we want to fix quickly. Having a smooth process that allows us to deploy new changes, as well as prevent old ones from re-occurring, will separate the great development groups from the average ones.
The Voice of the DBA Podcast
Slightly off topic, but since I use a cell phone so much for data transfer and work, it’s important that my device works for me. This is my current thought and experience, so take it with a grain of salt.
I want to talk about my experience with Verizon and iPhone, other carriers, and T-Mobile in particular.
Back to Verizon
I switched back to Verizon this past weekend, from T-Mobile. Coverage and performance were just bad enough that I made the move back.
I had to trade in my iPhone6, but I got a new one from Verizon. I’ve had my phone 11 months, and with the $330 trade in from Verizon, I lose about $80 in cost to pay off the T-Mobile phone. I should have been able to keep my phone and use a new SIM, but carriers seem resistant to using devices from other networks on their own. No good reason, but that was the state of things for me.
I had performed a backup to iCloud before I left for the store. Once there, I had the plan I wanted selected in 5 minutes, and about 5 minutes of a little paperwork (can we call it that on an iPad?) before they turned off my old one and activated the new one. Inside of 5 minutes I had a live phone.
Since I was in a hurry, I did the restore at home. I had to update to iOS 8.4 first, since that was my old device, but once that was done, the restore started from backup and I could use my phone. As I went into music or photos, I could see everything downloading across an hour or so. When it was done, almost everything was back on my phone. Icons in the right places, all my music, even my photos taken right before the backup were there. That’s a fairly seamless upgrade.
Or almost seamless. Security isn’t transferred, so I needed to update logins for mail, spotify, twitter, etc. The hassle for me is I use Password Safe, with the Safes in Dropbox. That meant I needed to use another device to get my Dropbox password before I could access the rest of my credentials, but a small price to pay.
Two nagging issues: my Bluetooth settings were lost, so I had to reset my car, headset, Pebble, Fitbit, etc. Some of those apps don’t like losing settings and trying to reconnect. A few hassles there. Also, the Amazon app still had a few of my books listed, but they weren’t downloaded. I had to delete them and re-download to make them work.
That’s about a smooth phone transfer process as possible. Windows is getting better, but it’s not that smooth. I haven’t upgraded Android phones, so I’d be curious if that worked well.
There are five of us at the ranch. Across the five of us, we had a point this year where we had service on all four carriers in the US. My two boys have shared a Sprint plan for years. My daughter’s first phone a few years ago was a Windows 8 phone and that was only on ATT at the time, so she had them. My wife and I were on Verizon, until I moved to T-Mobile last year,.
The boys have liked Sprint, which has had good service and coverage. They get unlimited data, but no hotspot unless they are willing to pay (they aren’t, and neither am I). I was hesitant to go with Sprint, only for the potential issues internationally. They use CDMA and 4G here in the US, but I wasn’t sure how that might go overseas and decided not to experiment. Other than that, no real reason to not choose Sprint.
ATT is bad. My daughter’s coverage might have rivaled mine at the ranch for poor quality. She moved to Sprint this year, and is much happier, so I decided not to try ATT.
Verizon was decent for me a few years ago, but when they upgraded to a 4G network out in the rural area in 2013/2014, holes started to appear. It was bad enough that I got annoyed. However I found out things could get worse, so I went back. Traveling around the US, Verizon was very good, and even now I’m happy that I can make calls almost all the way home and usually all the way to the kids’ school.
We’ll see what happens in the UK. I may just purchase a SIM when I’m there, or just carry my iPhone 4GS (or take one of the kid’s old Androids) and use it there.
I really liked what T-Mobile did last year. They really changed the cellular industry in the US and have almost removed contracts. When I switched last week, Verizon didn’t even try to get me to use a contract. Just a monthly pay-off-your-phone charge.
I also like that T-Mobile allowed me to use my phone in Canada and the UK for no charge. I could get texts for free, which is most of the way I communicate with family. I got wi-fi calling for free, same number, no getting everyone on Skype. I also got 3G data for free, with reasonable costs for 4G data. That fit my life.
However the coverage was bad. At the ranch, I could get T-Mo in my bathroom upstairs, but not if I walked back to the bedroom. I could get it W of the barn, but not E of it. The other places I had a small, roaming carrier, which was OK. I did get voice and text while roaming, but I had big holes coming and going from the ranch, as well as on the way to the kids’ school.
I also had problems in buildings. In one school, one store, and numerous places I’ve traveled to in the US, I couldn’t get coverage inside buildings. I saw this reported, and T-Mo securing a different frequency in some cities to combat the issues. However as I’ve visited SQL Saturdays around the US, I had numerous issues.
I’ll also say that at times when I’ve switched in and out of the T-Mobile network while driving, I will have a period of time when I can’t make or receive either calls or text. That’s maddening. The final straw for me was last Thursday, leaving school, with T-Mobile LTE on my phone, being unable to send a text to reply to my son. He could text me and I’d receive it, but was unable to reply.
It’s a bit sad, because I like T-Mobile overall. The performance was amazing, getting me 35Mbps in Parker, CO. Overseas coverage was good, and I used less data as music streaming was free.
However I also used less data because it wasn’t available. Including a trip to Sioux Falls in July where I had 2G, Edge network coverage from T-Mobile. That was maddening.
I tend to be in less populated areas for much of my travels. Not rural, but I ski, hike, travel to smaller towns in the US, and I find coverage really spotty. In Custer, SD, Verizon and T-Mobile were the best, but Verizon was by far better.
The era of ubiquitous coverage is not here. I know Google tends to expect this in their philosophical view of the world, but many of us don’t have this type of coverage. We have lots of holes and slowdowns.
In fact, I still think software needs to account for this, and I’m hoping that people learn to write for the cloud and understand that it’s not just Azure or AWS, but really any service could be interrupted and allow for that. Degrade or fail gracefully.
I’m hoping this changes over time, but for now, I decided to go with the best coverage I can find for most of my work. That’s Verizon and my fingers are crossed it works as well as I used to.
Another post for me that is simple and hopefully serves as an example for people trying to get blogging as #SQLNewBloggers.
I was looking to do some testing recently, but needed a v12 SQL Azure database. The test system that I have in Azure is v11, and I needed an upgrade. I clicked the upgrade button, and it was really slow to change from v11 to v12. It’s easier now because I think all new databases you create are v12.
I was impatient, and ended up creating a new one. I decided to do a quick walkthrough of the process.
I connected to Azure and went into the new (Preview) Portal. I couldn’t find anything in the old portal, so keep tat in mind. Since “old” and “new” are very relative terms in Azure, and I hate them, I’ve included lots of screenshots. Here’s the portal I used:
My first step was to go to the “Create” item and select Data + Storage. As you can see, there are all sorts of options. For this post, let’s create a new database.
Selecting “New SQL Database” gives me this set of options. The name is the big item here.
Obviously I wasn’t very creative with the name:
Next I decided to make this one blank. I wanted to do some testing, so I selected that. It’s nice to be able to create a database from a backup, especially if you are recovering from a “Whoops” mistake.
With that selected, I had this:
Now on to the pricing tier. You can go crazy here.
I went down to a Basic level, since that’s what I really need. A basic, small database for testing. It’s $5/month, but I have credits from my MSDN subscription, so to date, I haven’t paid for any of my testing on the low tier systems.
At each stage, I can see what I’ve selected. This is a good way to get started, but if you needed to do these are any scale or repeatability, learn to do it through PoSh.
My next step is to decide where this database lives. I need a server, which is strange to me. I want a database as a platform, but I think this is legacy for connection purposes, so I’ll make a new one.
I decided to make up some generic, boring name. I wasn’t feeling very creative today. I entered a password, but like with any password, I generated this in PasswordSafe first, then entered it here.
<securityrant> Please use a password manager, use strong passwords, and use separate ones for services. Using the same one for all your Azure stuff and other accounts is a bad idea. </securityrant>
Once I complete this, it’s listed under my SQL Database as the location for my data.
Change your collation if you like, but since I’m a unilingual American, this is what I choose.
I also need a resource group. I don’t have any, so I’ll need a new one.
Again, not creative. If you are doing this for something more than fooling around, spend 2 minutes thinking of some way you’ll classify stuff and use a name that makes sense.
I think we’re ready to go. Click “Create”.
Once it’s done, you’ll get a notification in the main portal. I do like that the notifications come up at the bottom, but they’re also annoying when they stack up. I’ll sometimes close them because I’m doing something else and not pay attention. However, that’s a “me” problem.
I allowed this to create a pin for me, and I can easily see my database here. If you have lots of stuff, you won’t want pins for most of them.
If I select the database, I can see details.
I can select “Settings” at the top and get more options. One of which is what I need. Note that the version is v12.
The Properties item gives me the ability to change a few things.
The Firewall allows me to limit access to specific hosts.
Auditing has the ability to let you audit by events, success of failure
If I want to audit things, I need a place where I can store the audit data. The cloud charges by everything, so be aware.
The item I really care about is the “Latest SQL database update” item. When I pick that I can see the items that will be enabled.
If I pick Users and tags, I can specify accounts and labels, but that’s not really important for a test system. Really it’s me using it, so I’ll leave those alone.
It’s really easy to set up, and worth practicing if you want some cloud experience. You can connect from SSMS and work with the system, which is really SQL Server, but if you have other stuff in the cloud, or an app, you can connect and see what is possible.
Be aware, however, that you get charged for this stuff. Use your MSN subscription and keep an eye on usage. It’s pretty cheap, but no one wants an unexpected bill. Be especially careful about VMs. Those can really rack up charges.
This one took awhile. After I completed the process, I immediately deleted the database and started to take screen shots as I went through the steps. The steps don’t take too long, but refreshes on the Portal are sometimes slow.
This actually sat in my drafts folder as a single sentence (creating an Azure db) and a bunch of pictures. It took me about 20 minutes to load the pictures into Live Writer and then work my way through them, adding notes. I also created a new database as I was writing this to walk through the same steps again (and then deleted it).
None I used. I’ve done this before and didn’t bother to look around. The Portal does a good job of leading you along.
Another post for me that is simple and hopefully serves as an example for people trying to get blogging as #SQLNewBloggers.
I worry about beta software, so when I wanted to create a new Azure database, I stuck with the old portal. Call me nervous, but the new portal worries me at times. It works, but since the default is the old one, I often use that one.
You can use either, but here I’ll show you how to create a database with the old (which will be gone someday) portal. It’s simple and easy, and this only takes a few minutes.
Creating a Database
Here’s the “old” portal. I wish it had a major version number, because that’s what it needs.
I’ve got a few things running here. In the lower left corner is a “New” button, which I can pick. When I do, I choose Data Services and get this.
I select SQL Database and then click “Custom.” You could click quick create, but I wanted to show more options. There aren’t a lot, but you can put in a few.
You get the settings page. The first thing you need is a database name. You can pick your subscription as well as the size of the system. Be aware of charges when you pick sizes. S0 is not cheap.
I had an existing server, so I used that, but the system will create one for you if you need it. This is really the name you connect to, so if you care, create one first and then use it here.
The next screen is really for the main admin account. Enter a decent password and save it. You can reset this form the portal once it’s up, so don’t be too concerned, but build good habits. Don’t use the same password everywhere and use a password manager so you pick strong ones.
Once that’s done, create the database. It will take a little time, but you’ll see a moving “Creating” item in the status. There’s no percentage, but I think it was about 3-4 minutes for me one afternoon.
Once it’s done, the database list will show you the database as online.
If you go to the dashboard, you’ll see a number of items listed.
Scrolling down, you might see the important item that you care about. How to connect. The server is listed, and if you’re using an app with ADO, PHP, OLEDB, etc, you can click the link and get the strings you will use.
That’s it. Simple, easy, and ready for you to use.
I was actually working on something in the new portal and wanted to go back to the old portal to see how things worked. As I waited for the main screen to refresh, I though, hey, write a post.
So I captured screen shots. It took maybe 10-15 minutes to type this up.
I believe in managing and working on your career regularly. Early in my life, I randomly went from job to job. I looked for new opportunities when I lost old ones. I took the first job I was offered. I really let my career happen, as opposed to actively trying to move it in a direction that was best for me.
One of the things I have suggested to many people is to build a blog and chronicle their career. This is a way to showcase your knowledge and allow a potential hiring manager to perform some due diligence on who you are.
However the front page of your blog, with the last 5-10 posts you’ve written on some random topics might not be the image you want to present. Perhaps you can better show yourself off and control the image that you present to the world.
I thought about this when I read a piece about a photographer assembling a portfolio of their work. I thought, this might be a good exercise for a technical person as well. Perhaps there are specific skills, posts, software that you want to show. Put the links on your resume or cover letter that build the impression you want to make. Maybe send someone to a landing page that contains the projects that you are more proud of.
Certainly this might not work, and a manager might just randomly look through your blog, but I think it’s worth a bit of time, especially for a developer. Showcase the things you are most proud of, or perhaps most applicable to the positions you’re seeking.
Above all, it might be a good chance to re-evaluate what you think of your career and relive some of your proud accomplishments.
The Voice of the DBA Podcast
This weekend I’ll be attending SQL Saturday #403 in Louisville, KY. If you’re in the area, think about taking a few hours out of your Saturday and coming to learn some SQL Server stuff. There’s a great schedule, with 6 tracks and 6 sessions per track.
That’s 36 opportunities to improve your skills and career!
I’ll be delivering two sessions during the event. I have my Branding Yourself for a Dream Job first thing in the morning at 8am. I know it’s early, but I like to give you some ideas for networking and planning your career for the rest of the day.
My second session is Continuous Integration for Databases at 10:30. I’ll give you a taste of how to improve your software development process by using version control and a build server to verify and test your database code.
There are some great afternoon sessions, but I likely won’t be there as I have family in town and want to spent a few hours with them. However come grab me in the morning and say “hi”. I really enjoy meeting the SQL Server community and look forward to another great SQL Saturday in Louisville.
Talk about a lot of pressure to get a software deployment correct. A software install on an Airbus airplane resulted in a file containing parameters being wiped. This error caused (apparently) an airplane to crash when three engines cut off in flight and four people were killed.
I don’t know if this is the final report on this, but the fact this is a possibility concerns me as a technologist. Certainly we have probably had similar mechanical failures and installation issues in the past, but there are some scary issues here with regards to software. There was a faulty software installation (yikes!), a poor architecture (not assuming more then 2 engines would stop), too much tolerance for software errors (the review letting this pass), and poor overall design (no alerts on the ground).
I can’t decide if I think that software makes issues like this more or less likely. Certainly checks of physical systems are skipped regularly by people. It’s far easier, and more reliable, to automate checks of software systems, especially with deployments, than it might be for complex mechanical changes. However, maybe that’s not true. Perhaps mechanics are more likely to notice a loose bolt than a misconfigured software menu. Or maybe we need a new type of mechanic that’s savvy with technology.
Ultimately I think that any software that makes changes to systems, including through deployments, needs to have double checks by an independent process and clear alerting of any issue, not relying on someone to look for the success of a long series of steps. We also need to take review of potential software errors very seriously and ensure the tolerance for potential issues shrinks as the impact of those issues rises.
The Voice of the DBA Podcast
One of the things I’ve learned over time is that in order to develop software, you need multiple environments. I think that outside of school projects, I’ve always used at least two environments: development and production. At school there were times I worked on software that I also used, and would make changes on my live (and only) system. I had no shortage of regrets, and whenever I question using a Version Control System (VCS) or separate environments, I think back to those days.
People I meet these days that develop software almost always have more than one environment, and most have at least 3. The most common model might be development, test, and production, but plenty of people work with even more. Maybe not as many as the seven Grant once had to deal with, but I have worked in environments where we had six database environments for one of our software pipelines.
How many different environments do you work with?
The poll this week asks for the count in your organization. I realize that you probably have multiple applications and test environments, but choose one or more and give us some answers.
The most I’ve worked with was in a financial services company. We had a development database and a separate QA system for testing. There was a staging system to mimic production, a Beta database for users to actually test against and production. That worked well, and we were able to easily refresh environments as needed without impacting our development efforts. Mostly because we have a strong DevOps type process.
Let us know this week how you’ve got your systems set up and what each one is used for in your software pipeline.
The Voice of the DBA Podcast
T-SQL Tuesday is a monthly blog party where we get an invitation the first week of the month to write on a specific topic for the second Tuesday of that month. Adam Machanic came up with the idea and he chooses the hosts.
If you’re interested in hosting, contact him.
While there’s a sense of community and participation here, and certainly the chance to showcase some of your knowledge for others, it’s also got another benefit.
It’s the chance for you to learn something.
Not by reading other’s posts, but by writing your own. This is your opportunity to bolster your own skills, and teach yourself something new.
Don’t Worry About Timing
I know many of you are worried about the pressure of producing something good. I know many of you will find that the first weekend of the month is really busy and you can’t write.
I’ve got a list of all previous invitations and topics. Go back and pick one of them and write your own post today. Start working on it, teach yourself something, and put some thoughts down. Research what others have done by looking through the roundups. Get a friend to review the work and see if it’s readable and makes sense.
Do that ten times. It might take you ten months, but I’m sure you can write something down about SQL Server once a month.
When you get ten, start a blog and publish them. Use the T-SQL Tuesday tag, but I’d also encourage you to use the #SQLNewBlogger tag as well. Start showing your boss that you’re improving your skills. Be ready to impress you potential next new boss with a series of posts on SQL topics.
Your career will be better off, and the world will start to see better software being written.
Start improving your skills this weekend, or start documenting the learning you already do. Either way, start building a better brand for your career.