Wednesday, July 1, 2015
Just wanted to leave a note here that I am moving my blog from Blogger to using an open source platform called ghost.
The new blog can be found... https://kmack.azurewebsites.net/
Thanks for your support and I hope you all find your way over. I'm working with my domain provider to move the domain name to the new site. Keep an eye out.
Sunday, June 14, 2015
- Personal Projects: A big bonus that you should definitely look for is personal projects. These show that the candidate has a drive to apply their skills in new and different ways. If they have a GitHub link on their resume, go check it out before the interview, or ask them about those projects and that types of things they are trying to do and how far they go. Any experience on a personal project is absolutely worth its weight in gold. This also shows that they are a self starter who seeks out ways to make the things they are working on better without needing a senior dev to do so.
- Don't Discriminate on platform: As much as I recommend not being concerned with the background in the sense that if you are working on a .net project, don't eliminate someone for not having .net on their resume. Its not their fault if their school only taught Java, and truth be told you are going to make them learn to write code the way you want anyway. The hardest programming language you'll ever learn is your first. After that they are pretty much the same.
- Make them talk about their skills: Even if you don't need those skills on the project, don't be afraid to ask them to talk about them. This makes them give you a context for how deep their skills go. You don't want someone who lists things on their resume they heard about in class, you want actual skills. So asking them to explain a project they used java on, or what kind of work they did with MySQL is a good way to gauge the depth of those skills.
- Ask general software development questions: All programming languages are essentially the same, and because of that you can ask generic questions. I usually do a "lightning round" with these, and ask questions like "Explain inheritance to me?", or "What are access modifiers?" or "Explain the difference between Primary and Foreign Keys?" Any program worth your time should have covered these concepts and these make up the foundation for how someone will approach their next language. If they don't have a strong background here, they aren't worth your time.
- Ask about their process if they run into a problem they can't solve: Nobody likes a needy developer. And the last thing you as a senior dev needs is to have someone hovering over your desk every time they get an error message. So you want to know what their plan is, listen for the basic debugging process and see if they have a process they mentally go through.
- Pay Attention to the non technical: Its easy as a developer to focus in on the technical part of the interview. But remember, you have to work with this person...So pay attention to things like whether or not they are client facing (Can I take them to a client meeting?), or can I communicate with this person? Do they seem like they would be a personality fit for my team? Do I think they will crack under pressure? These are important things to keep in mind when looking at a new candidate.
Monday, June 8, 2015
Lately if I'm being honest I've been burning the candle at both ends. Well more like 5-6 ends. Whether its been preparing a talk that I had to give, working on projects or estimating others. More than a few things going on. But that being said I thought it a good idea to take a step back and look at some soft skills.
Specifically looking at grooming new developers. Now this is a topic I've had quite a bit of experience with. I grew up with a family of educators. Mom a high school math teacher, dad a college professor. My grandmother even taught first grade for 35 years. So it shouldn't be surprising that the idea of teaching is something that has always been in the background. A few years ago I started as an adjunct professor, and taught an intro to web development course. Additionally I've over the past few years been working in a mentor capacity for our interns and Jr developers and building a curriculum for both.
Not trying to toot my own horn, just trying to frame the conversation. I argue the act of teaching is something every developer should embrace in some capacity. And is absolutely essential to growth in your career. As we grow through our career our developers, its only a matter of time before we are a technical lead or in a situation where we are being given Jr developers to delegate work to. Now in those cases, our ability to teach those young devs is the cornerstone of our ability to succeed in what we do.
So the trick is how do we get to teach developers effectively:
1.). Get to know the student: Not to go all kung fu master but each person you work with is different. They all have different passions, and drives. Our education background and interests are different. Get to know your Jr devs. Where did they go to school? What type of work do they like to do? Web? Database? Mobile? What do they hope to do in this career? Are they married? All of these things provide key points to how people learn. Not only that, getting to know your devs builds trust. A trust that is essential to their confidence that you are there to help them and not just some tyrannical boss.
2.). Learn their strengths: Everyone in this field has something they are good at. They either like client side script or database, or C#. All that being said this is important to establish a foundation. When assigning work to a junior dev, its important to make sure at least some of it stays within their wheel house. This is important because it prevents frustration. It allows them to grow skills they already have and fall back on when the new challenges become frustrating.
4.) Explain yourself: Remember when your parents used to tell you "because I said so.". And man did that become infuriating. Well its just a frustrating in the corporate world. If you don't take the time to make teaching a part of your job it will never pay the dividends you want.
Just some quick thoughts on teaching and importance to this job. This is something I intend to continue to talk about in the coming weeks, but consider this the opening salvo.
Thursday, May 28, 2015
So, that being said. When I do have a spare moment lately, I find myself questioning my own judgment. I have been working on a new talk, and demo relating to the App Service offerings from Azure. All of which I've worked on during my free time, and will be available via GitHub, along with the prezi.
I also wanted to take a moment to talk about the facelift this site just received. There were many enhancements made to this site, but some of the big ones are the following:
- Facebook Page: I've created a BigMackBytes, facebook page. This page I have been filling with different resources that I found in my travels online that I thought might be of use to my readers. So please check it out, it is receiving at a minimum daily updates for the past week and a half or so, and occasionally more than that.
- Twitter / LinkedIn: Here are my two professional social media outlets, I do regularly post links to items on my twitter account for additional resources, and LinkedIn provides more of my professional background.
- GitHub: Self explanatory as my personal github account, complete with all of my demo project code.
- Public Prezis: Here is a link to my presentations, this will give you copies of my prezi's to review if you want and consider the information they provide.
- Email Me: A link to my email if you wish to directly contact me.
- CodeProject Profile: This blog is consumed by CodeProject, a truly fantastic site that has a lot of great articles and I try to contribute regularly. Here's my profile on that site.
- Helpful Links: One of the most visited sections of my course site when I taught was the "Helpful Links" section, which provided a wealth of resources to help people as they work. Well I have not only brought that feature over, I've upgraded. I now use a Google Chrome extension called Bookmark Manager, and within that have exposed a whole section of resources as public. You will find those links here and are welcome to use them as you see fit.
Tuesday, May 19, 2015
Don't get me wrong, both are powerful, but recently Microsoft opened up the options available with the new offerings available. The first being WebApps, which I've previously done several posts on Azure websites, and there is absolutely no differences between websites and web apps. Just a rebranding to try and show how these can coexist to make a better cloud solution.
The next one, and the focus of this post, is Azure API Apps. Which Microsoft is pushing as the best possible option for providing and building APIs. The idea being that these APIs can then be consume by other web apps, outside services, etc. There are a bunch of potential options available, including using it as a potential building block in an Azure Logic App.
As for how do we setup an API app, its actually surprisingly simple, and involves the following process. I'm not going to focus on the steps to set one up, as there is a great article in Microsoft's Azure documentation that does an excellent job of doing that. It can be found here.
Azure API apps, are supported on the backend by Web API. Which is an ideal choice for creating RESTful services in .net. I've done a previous post about the basics of Web API, which can be found here. Web API provides several benefits, but some of the biggest are the following:
- Client Driven Content Type: WCF Services require formal definition of end types, and can be rather inflexible, but the greatest strength of Web API is the fact that in the request header, the "Content-Type" is set, and Web API supports several different content types. But even gives you the ability to define your own formatters.
- Convention over Definition: One of the paramount principles to RESTful services is that they provide a format where convention is favored over definition. Meaning instead of providing all kind of plumbing code to sett up endpoints for your services. You rely on the routing and Http Verbs to define the actions within your services. Beyond that they function the same as controllers for MVC.
Saturday, May 9, 2015
It was a great talk, and a good time. And all seemed to enjoy it. And as promised for a followup I said I would post links to the resources that I discussed:
- Visual Studio Online: As I mentioned this provides a fantastic set of project management tools, as well as source control for free to anyone with a Microsoft ID. This allows for syncing and backing up your work in a way that makes everything easier to manage a team.
- Windows Azure: Microsoft's cloud platform, with loads of free options for supporting web apps, database, and a variety of services.
- Windows Azure Pricing Calculator: A great resource for helping to determine how much resources will cost on a monthly basis. Its all ridiculously cheap but its still nice to know ahead of time an estimated cost.
- ShareItSimple: A startup some friends of mine worked on to help share files in a really simple fashion.
- Microsoft Bizspark: Microsoft's program for startups where if approved will provide free microsoft products and $300 a month in Azure Credit for years. Great program.
- Visual Studio Code: A new product to install cross platform and work on code, great for light weight operations.
- Channel 9: A collection of instructional videos from microsoft.
- Microsoft Virtual Academy: A variety of training resources by microsoft MVPs.
- PluralSight: A paid for service that has amazing technical resources from some of the biggest names in the technical resources.
- Xamarin: A development tool that lets you leverage C# to build Android and iOS apps that share code making it easier.
Sunday, May 3, 2015
- Production 1.0 Releases of Several Projects at Work
- The release of a product for an outside client, and initial support
- The approaching end of the semester for my course.
- The approaching arrival of baby #2, and preparing for that.
- Health issues with members of my extended family
- The passing of my grandmother.
- Azure API Apps: 5/11
- Azure Mobile Apps: 5/18
- Azure Logic Apps: 5/25
- SQL Azure: 6/1
Monday, March 23, 2015
- CPU Time
- Data Out
- File System Storage
- Memory Usage
- Download a Publishing Profile:
- View Connection Strings
- Setup Deployment from Source Control
- CPU Time
- Data In
- Data Out
- HTTP Server Errors
- .NET Version
- PHP Version
- Java Version
- Python Version
- Managed Pipeline
- Platform (32 / 64 bit)
- Web Sockets
- Always On
- Domain Names
- SSL Bindings
- Authentication / Authorization
- Application Logging
- Site Logging
- Performance Monitors
- Application Settings
- Connection Strings
- Virtual Directories
Tuesday, March 17, 2015
I can't recommend these user groups enough. They are a great way to meet and network with fellow developers and learn about new topics.
For the code from tonights presentation:
For the presentation:
More later on this. As I do a little more of a write up on it.
Wednesday, March 4, 2015
Friday, February 27, 2015
- Azure Websites - The ability to host sites within the azure platform and abstract away the headaches of managing the VM.
- SQL Azure - A database hosting platform for the Cloud, letting you get down to working with SQL without having to manage the overhead of a VM.
- Blob Storage - A cloud based file storage option to support resources for your applications.
- Table Storage - A simplistic storage mechanism to support message and passing data between platforms.
- Mobile Services - Push notifications and other services designed to work with mobile devices.
- Media Services -
- Service Bus - A message broker platform to leverage communication between multiple end points.
- Visual Studio Online - A cloud based source control and ALM tools.
Monday, February 2, 2015