Tuesday, January 19, 2021

Fix Under-Extrusion Problems by Setting Max Volumetric Speed (MVS)

Fixing Under-Extrusion with a Single Slicer SettingThere are many potential causes for under-extrusion and clogged nozzles on a FDM (filament) printer but, in most cases, the extruder can't grip and push the filament with enough force and speed. There are numerous guides for troubleshooting temperature and speed settings, but it can be extremely difficult to find the magic combination of settings to print fine details with that cheap filament you bought before knowing any better. 

PrusaSlicer to the rescue with MVS 

Fortunately, PrusaSlicer added a setting that's essentially a way to throttle extrusion speed and prevent those moments when the force required is too much for the extruder/filament to handle. 
Note: While this fork of Super Slicer is enhanced and maintained by Prusa, it can be used to generate g-code for non-Prusa printers as well.

Maximum volumetric speed (MVS) sets a limit for how fast the extruder will push filament by overriding any speed settings which would result in more material being pushed than this setting allows. This override can be tied to a specific filament or print setting since it's dependent on layer height and extrusion width (nozzle size). 

Lets visualize how this works in practice 

To simplify, think of the extruder as a vehicle driving from one location to another. That vehicle will travel at different speeds along it's route and we want to be sure it doesn't try to go too fast at any point along the way. This means we don't want to interfere with the times when it's going slower and only restrict it's speed when necessary. If the vehicle's maximum speed would normally be 70 mph and we discover that it's tires lose traction when traveling faster than 60 mph, we're going to prevent acceleration past that point. The rest of the trip under that speed is unaffected so, if 90% of the trip is under that speed, only 10% of the route will take more time. A ten-minute trip would take one minute more. 

How to start using maximum volumetric speed (MVS) 

One way to find an optimal MVS would be to compare estimated print time with and without the MVS limit set. Start by multiplying your layer height (i.e. 0.2mm) × extrusion width (i.e. 0.4mm) × speed (i.e. 40mm/s) for the equivalent MVS (3.2mm³/s). If both print times are the same, that MVS value is higher than the maximum flow of your print. If the difference in print times are minimal, only those moments when the greatest amount of material is being extruded are being limited and most of the print remains unchanged. As this number is reduced, more of the print instructions will be affected by this limit resulting in increasingly longer print times. 

For example... 

In my case, I had a terrible time with the Mika3D filament I purchases being too brittle for the extruder gears to push hard without bits breaking off, clogging the teeth, grinding away an indentation, and eventually slipping instead of being pushed forward. This became particularly problematic when I switched to a 0.25mm nozzle which made it harder to push filament through and made this filament virtually unusable. By setting a MVS of 0.6mm³/s on a temperature tower at a layer height of 0.10mm, my print time increased from 12h 4m to 15h 15m. While a ~25% increase in print time may seem like a lot, I consider waiting a few more hours for an overnight print to be a small price for more reliable extrusion and fewer failed prints. 

Your best MVS setting will vary 

It's important to remember that my setting of 0.6mm³/s will not work the same for a different layer height or nozzle size so some experimentation may be needed to find the appropriate values for various profiles, but each print setting can have it's own MVS which can even be overridden by the MVS for those filaments which require more delicate handling.

While we've focused on how maximum volumetric speed can be used to avoid extrusion issues, what MVS value works best will depend on the temperature of your hot end and even how tight your extruder idler bearing is pressed against the hobbed gear. MVS isn't a magic solution to all potential extrusion problems but, with a bit of tweaking, it could make the difference in being able to use that filament which has caused so many headaches. 

Did this help? 

Whether you're still struggling or this was the key that fixed your problem, leave a comment to let us know. I'd love to hear your results and am happy to help where I can. Someone else may even benefit from reading about your experience!

Monday, April 2, 2018

How Conference Speakers Get Selected

Why should I care about Kepler-452b?Nobody likes getting that email letting you know what your submission was not selected, but even the most experienced and well-known speakers get them. If only organizers would provide more insight into why other submissions were selected instead of yours! While it's not possible to give personalized feedback on each submission, there are a handful of reasons for why most submissions don't get picked and chances are extremely high that at least one of them applies to yours.

The Evaluation Process

Before we get into specific scenarios, let's take a brief look at how submissions get evaluated for Music City Tech. The first step is review by a team made up of thought leaders and subject-matter experts. The purpose of this phase is to get input from multiple perspectives and provide a relative ranking of submissions.

A smaller group of organizers will then focus on the highest ranked sessions to identify topics which will be of the greatest interest to attendees. Our objective is to provide representation for as many major technologies and innovations as possible, while still including a significant amount of content that focuses on topics relevant to attendees' daily work.

The end result is intended to be a lineup that provides maximum attendee value by providing opportunities for growth in existing areas of focus as well and exposure to new ideas and concepts. So what are the most likely reasons why your submission didn't end up in the lineup?

Reason #1. Too Many Submissions on the Same Topic

Issue: For conferences which try to be polyglot/technology agnostic, the most common reason why a submission won't be selected is the amount of competition for the same topic.

For instance, Music City Code 2018 received 16 submissions on React. While React is a popular topic and many attendees will be interested, we only have room for 50 sessions to cover a wide array of topics. No matter how great those submissions are, only a handful could possibly be selected.

In the case where abstracts are similar, the question is which speaker will deliver the greatest value for attendees. Often the submissions that get selected will be from speakers who have established a reputation of thought leadership for that subject or have a track record of delivering solid presentations.

Solutions: Less experienced speakers who are having trouble getting submissions selected on an extremely popular topic might consider shifting the focus of their talk to make it more unique. Establishing a track record of delivering quality content at smaller venues can also help show organizers that you can be counted on to deliver at their event.

Reason #2. Submission is Too Specific/Advanced

Issue: Unless the conference is focused on a particular technology or topic, it can be difficult to justify including a submission that will only appeal to a very narrow slice of attendees or requires a significant amount of past experience. Polyglot/technology agnostic events cater to a broad audience and generally focus on topics which are accessible and applicable to a decent portion of the target audience. How broad the appeal needs to be will depend on how much of the event capacity will be devoted to that presentation. Music City Code will feature room for six simultaneous presentations and, while room sizes do vary, a good rule of thumb is that each session should be of interest to approximately 15% of attendees.

Solution: The first step to ensuring your submission has the best chance of being selected is to know your target audience. If your topic is only relevant to a small portion of the event's attendee base, then try removing some of the more complex aspects and focus on important concepts. Principles and patterns are often relevant to a wide array of technologies.

Reason #3. Clever Titles and Vague Abstracts

Issue: It's tempting to spice up a submission by coming up with a catchy title or trying to tease attendees with hints and leading questions. Unfortunately, some speakers lose sight of the fact that most attendees will end up scanning upcoming session titles during breaks and may not have the time, interest, or access to read the entire abstract. If a reviewer has difficulty determining the focus of a talk then it's a fair assumption that attendees may have the same problem.

Solution: While we try to give speakers feedback about how they might improve their submissions during the evaluation process, most reviewers don't have time for such a discussion. The easiest way to avoid this issue is to include relevant keywords in the title and focus on the purpose of your topic. While a fun title like "Game of Phones" will get a chuckle, something more informative such as "Native Mobile Development with Ionic" will help attendees understand the focus of your session.

Note: For bonus points, try to keep titles relatively short. Long titles can be difficult to fit in schedule grids and printed materials.

The Takeaway

The most important point to take away from this article is that there are many reasons why a submission might not be selected for a particular event and often it comes down to the competition. With over 500 submissions for Music City Tech and less than 100 session slots, we have to say no many more times than we get to say yes.

If your submission was not selected and you would like more insight into how it might have a better chance next year, contact the organizer. There's a good chance they will be happy to provide you feedback once the chaos of event planning is behind them.

Thursday, January 28, 2016

CodeMash 2016 Top 5 Wrap-Up

CodeMash 2016 Top 5 Wrap-Up

CodeMash v2.0.1.6 Top 5 Wrap-Up

I can’t think of a better way to kick off 2016 than to spend a week hanging out with a couple thousand of my closest friends talking tech, sharing expertise, having drinks, playing games, and grossly exceeding the water slide weight limit to see how fast a raft carrying four developers will go. CodeMash is more than just a series of presentations, so here are a handful of things that made CodeMash v2.0.1.6 magnificent:

5) The 7 Languages in 7 Hours

Our 2016 CodeMash experience began with a pre-compiler workshop where Amber Conville guided us in writing a prime factorization calculator using Ruby, Clojure, Haskell, Rust, Scala, Elixir and Go. Mary recently graduated from Nashville Software School and neither of us had any experience with these languages, so it was quite the adventure exploring them together. Our brains were fried by the end of the day, but how often can you say you learned seven new languages before dinner!

4) The Star Wars

It’s no surprise that a conference held less than one month after the newest Star Wars movie hit theaters would be flush with droids and light sabers. It seemed like most of the sponsors were raffling off some sort of Jedi-related prize, but TMW Systems led the pack with a package containing multiple Lego sets, one of which was the Millenium Falcon! With over 2,500 fellow Star Wars fans lusting over such epic prizes, what a surprise to find out I’d be taking it home! It must have been the Jedi skills we developed waging hotel-room light saber battles that gave my raffle entry the edge.

3) The Catan Big Game

We’re big into board games and particularly fond of Settlers of Catan since Mayfair Games sent me to GenCon to play in the Catan National Tournament. One of my favorite events at GenCon was the Catan Big Game, where hundreds of players complete in a single game that spans an entire ballroom. The CodeMash Big Game was significantly smaller, but no less fun.

2) The Wild Rides

What happens when you send a raft carrying 800 lbs of developers down a toilet-bowl shaped water slide? It’s hard to explain, but I guarantee you’ll want to do it again! While I did miss snowball fights in the outdoor hot tubs, we found ways to entertain ourselves in the water park.

1) The Conference Reunions

As the excitement of the day dies down and dinner turns into drinks at the bar, the focus shifts from technology and networking to spending time with old friends, many of whom only see each other at conferences. Many of my most cherished CodeMash memories involve a bottle of bourbon or a game of Cards Against Humanity. The best often include both, but those are stories for another time.

0) The Community

None of the above experiences would have been as memorable without such an amazing community. The CodeMash organizers have accomplished something truly amazing by preserving the sense of camaraderie and acceptance one tends to find at smaller events. I can’t thank them enough for the example they have set and look forward to following in their footsteps with Music City Code.

If you made it to CodeMash this year, I hope my wrap-up triggered some happy nostalgia. Feel free to share your favorite CodeMash moment in the comments below.

For those who did not attend, maybe we’ll see you next year. Just remember to pack your swimsuit, some business cards, and a bottle to share with the new friends you’ll meet!

Thursday, July 23, 2015

Why should I care about Kepler-452b?

Why should I care about Kepler-452b?NASA announced earlier today that they have identified a close cousin to Earth, named Kepler-452b. The sun it orbits is similar to ours. It's orbit is only a few days longer than ours. Being larger than earth, 452b's gravity is estimated to be about twice that of Earth. All the information we've received so far indicates it's the closest match ever found, but at 1,400 light-years away why should we care?

The Distance
Whenever distance is measured in thousands of light-years it's safe to assume nobody alive will live long enough to get there. Given our current top speed, a mission to this planet would take at least 25 million years. In fact, given that it's been less than 60 years since the first laser was invented there's no way any human message will reach Kepler-452b for over a thousand years, and it would take over a thousand more for a response to get back to Earth.

So if we can't send messages there and going there is impossible, at least for the foreseeable future, then why should we care?

Climate Change
With all the focus in recent years on climate change and debate about how much of it is within our control, the opportunity to observe a planet that is so similar to Earth and further along in it's evolution could be invaluable. Further study of Kepler-452b could provide valuable insight into how our own planet will change over the next thousand and million years.

Extraterrestrial Life
We may not be able to send them messages, but as we gather more information about Kepler-452b we hope to learn whether life has existed there. Considering it's similarity to Earth, this is the single greatest opportunity we've ever had to discover life on another planet. Even if we never meet them, just knowing they exist could alter humanity's perspective towards our own existence.

One Small Step
Just as our voyage to the moon was just one small step in the great journey of space exploration, the discovery of Kepler-452b is an inspirational moment that can help to propel us forward towards further discovery. What other Earth-like planets might exist much closer that we simply haven't identified? Is it possible to create a method of communication or transportation faster than the speed of light, thereby opening up the possibility of reaching these far-off worlds.

If one thing is certain, it's that this news is just the beginning of an exciting new chapter in space exploration.

Monday, July 20, 2015

Why Your Employment Agreement is Unreasonable

Why Your Employment Agreement is Unreasonable Most employees don't bother reading the employment agreement. After all, if you're not planning on doing anything dishonest then it doesn't matter, right?

The problem is that many companies have a lawyer draft an agreement that gives them the most leverage possible under any circumstances knowing they can choose when and how to use it. This means employees who sign such an agreement WILL break that agreement whether they realize it or not. They are placing themselves at the mercy of a company which may not even be run by the same management a year from now.

Disclaimer
Apparently I must point out that I am not a lawyer, nor do I play one on TV. The information below is provided for educational purposes and should not be considered legal advice.

Intellectual Property
Here are some examples from an agreement I refused to sign this past week.
Employee recognizes that Intellectual Property relating to his/her activities while working for [Company] and conceived or made by him/her, alone or with others, within one year after termination of his/her employment, may have been conceived or made in significant part while employed by [Company].  Accordingly, Employee agrees that such Intellectual Property Rights shall be presumed to have been conceived during his/her employment with [Company] and are to be assigned to [Company] as [Company] Intellectual Property unless and until Employee has established the contrary.

This clause clearly states that the company owns any intellectual property created while employed with them and for a year after leaving the company. It shifts the burden of proof to the employee to show that they are the rightful owners of their work, even if that creation was done completely outside of work hours and without any company resources.

This might not be an issue for the majority of employees, but software developers often work on hobby projects and, in more than a few instances, hobby projects have turned into million-dollar ideas. This would also include the authoring of articles, books and videos. Good luck proving that they don't own it when you clearly signed an agreement stating otherwise.

How about that bit about owning what you create within a year of leaving the company? How in the world would they even know about it? Here's your answer.
Employee agrees to disclose promptly in writing to [Company] all Intellectual Property made or conceived by him/her for one (1) year after his/her employment terminates, whether or not he/she believes such Intellectual Property is subject to this Agreement, to permit a determination by [Company] as to whether or not the Intellectual Property should be the property of [Company].

By signing this agreement, you are no longer eligible to work for any company that requires signing a non-disclosure agreement, because you've already committed to disclosing anything you create to your previous employer for an entire year!

Non-Compete
The clause below seems fairly standard and might look familiar.
During his/her employment with [Company], and for one (1) year thereafter, Employee will not participate, directly or indirectly, as a partner, officer, director, stockholder, consultant,  employee,  agent,  independent  contractor  or  otherwise,  in  any business  that  is directly or indirectly competitive with the business of [Company].

It's completely understandable that a company might want to keep their employees from taking all the training and inside knowledge they've gained during their employment to their competitor. One might even overlook the use of the word "indirectly" as a qualifier for which companies are considered competitors. This is a purposefully vague word that can be used to argue that virtually any company is a competitor in some indirect way. I find this especially concerning since there's no way of knowing what kinds of products or lines of business might be included for the purpose of competition by the time I leave the company.

The standard response to this concern is that the clause would never be upheld in court. My question is, why should I put myself in jeopardy of ever having to go to court in the first place?

Summary
No matter what the wording, it's always a good idea to get a lawyer to look over any agreement before you sign. Those clauses were put there for a reason, and as well-intentioned as the other party might be, intentions mean absolutely nothing if you're ever taken to court. Personally, I'd rather avoid the headache and expense of having to defend myself in court no matter how unenforceable the agreement might be. An honest employee agreement should make it clear what lines must not be crossed to avoid ever finding yourself in court.

Tuesday, July 7, 2015

Music City Code Conference - How it All Began

Conception
I started contemplating starting a new technical conference in January of 2013 a couple years after DevLink moved from Nashville to Chattanooga. I noticed relatively few Nashville area developers who had previously attended DevLink were unable to afford attending so far from home.

As I pondered the reasons for starting a new conference, I realized it had very little to do with attending training sessions. The most valuable aspect of technical conferences seemed to be people I met and interaction that took place. I started floating around the idea of creating a conference centered around interaction and registered the domain name DevInteraction.

Initiation
The most important aspects of planning a conference are the date and location so I started investigating venues and creating a calendar of regional conferences. I quickly realized that hotels and convention centers were not only costly to rent, but often implement vendor restrictions which drive the cost up further. There were also very few breaks in the conference schedule where a new event wouldn't compete with an established one for speakers. I decided to focus on work and put conference planning on the back burner.

Analysis
Over the next couple years the conference concept continued to evolved. While presenting at Code on the Beach, I mentioned the idea to the president, Paul Irwin. He pointed out that Nashville is the "Music City" and would make a great location for a destination conference. That got me thinking about all the music related gatherings that take place in the Nashville IT community and how we might include these types of events in a conference.

Fast forward to February of 2015 when John Kellar announced that he had decided to retire DevLink. All of the sudden there was a giant gap in the conference schedule, but we were in the midst of repairing major damage to our house from a water leak and planning an April wedding, so I had no bandwidth to take on a new project.

Design
As luck had it, I found myself with extra free time after the wedding and decided it was now or never to get this new conference off the ground. The previous month I had served as a mentor and judge for an event at Lipscomb, which had given me the opportunity to start a conversation about hosting the conference there. From there the pieces started to fall into place.

DevLink had been held at the end of August and it just happened that Saturday, August 29th was available. I asked for advice from all the conference organizers I knew and most of them suggested starting small for the first year and focusing on quality over quantity, so we decided to limit registration. By the time we hammered out a budget, timeline and other major aspects we were already into late June with just over two months to recruit volunteers, set up social media, gather speaker submissions, solicit sponsors, create a schedule, launch a website, market the event, design shirts and order printed material such as signs and programs.

Development
So that's where we're at now. We have been fortunate to receive guidance from many regional conference organizers (see board members below), but we still need quite a few volunteers and are working on recruiting both sponsors and speakers, but I'm optimistic that we can pull this together and put on a great first year!

Want to help out? Here are some easy ways everyone can help:
Follow @MusicCityCode on Twitter and retweet our announcements!
We also post updates to LinkedIn, Facebook and Google+.

Interested in speaking? Submit a session!
If speaking isn't your thing, we could certainly use your help as a volunteer.
Maybe your company would be interested in sponsoring.

A special thanks to our board members for their invaluable advice:
John Kellar (DevLink Founder & Executive Director)
Chad Green (Code PaLOUsa Conference Chair)
Chuck Bryant (Plugged In Board Member & BarCamp Organizer)
Jonathan Mills (Kansas City Developer Conference Director)
Lee Brandt (Kansas City Developer Conference Director)
Phil Japikse (Cincinnati Day of Agile Founder)
Jeffrey Strauss (St. Louis Days of .NET Principal Organizer)

Monday, September 1, 2014

Engaged? Make it so!

Sir Patrick Stewart helped me ask Mary Carnahan to spend our lives exploring the universe together and pronounced us ENGAGED at Dragon Con!




Monday, July 14, 2014

Growing IT Talent in Nashville

This week's Nashville Area Chamber of Commerce newsletter asked for input to help Nashville grow. Being in IT, the first thing I thought of as a barrier to growth is the lack of top IT talent. Middle Tennessee colleges and universities churn out a staggering number of IT students, however the skills taught in class only go so far towards preparing those students for growth in the workplace. For many, this growth is spring-boarded by attending conferences where they receive exposure to new technologies, training in vital skills, and connect with other professionals outside their organization. Conferences draw the best and brightest from surrounding states as both presenters and attendees, which provides a unique opportunity to market Nashville as a city of potential employers as well as establishing a reputation of excellence.

Below is the comment I submitted to the Chamber of Commerce. Please post any comments or suggestions you might have at the bottom of this article or tag me on twitter (@gainesk).
The technology sector seems to be driving much of Nashville's growth, however our current workforce is having trouble keeping up and may hinder continued growth. While various special interests have formed strong communities around specific technologies and products, Nashville is sorely lacking in regionally recognized technology focused events focused on educating and connecting both local and national talent. Local government needs to get more involved in helping to facilitate these events by making venues available and connecting organizers with sponsorship. The result will be a stronger reputation for Nashville as a technology hub on the National stage, higher standards for education and training of talent, and attracting top talent from other cities by showcasing what Nashville has to offer.

Tuesday, June 10, 2014

Build a Customized MVC eCommerce Site in 1 Hour (workshop)

For those of us who have spent most of our careers building business applications, the prospect of creating an e-commerce storefront can be quite daunting. Not only do you have to deal with calculating tax, estimating shipping and accepting payments, but employees need a way to manage products, discounts and marketing content. Thankfully, there's an open source e-commerce solution written in Microsoft ASP.NET MVC5 named nopCommerce that provides all this functionality and much more.

This workshop was designed to ramp everyone up on the Model-View-Controller (MVC) architecture, introduce advanced concepts used throughout the site such as Dependency Injection, and walk through the process of working with nopCommerce. By the end of the evening everyone should have first-hand experience building plugins that can be packaged and sold online.

Feedback and constructive criticism is welcome.
A list of past and scheduled speaking engagements can be found here.

To check availability or discuss presenting a specific topic, I can be reached by email or phone.

Wednesday, March 19, 2014

Three Reasons to Hire Consultants

Three Reasons to Hire ConsultantsConsultants are more than just developers with an hourly rate. In addition to honing their technical skills and staying abreast of the latest technology, successful consultants must develop valuable soft skills which are often sorely lacking in developers.

Time Management

When your client receives a bill for hours worked, the understanding is that each of those hours were spent doing something constructive for the client. Consultants are held to a much higher standard of productivity and must be self-motivated. Successful consultants learn to control their time by setting goals, defining and prioritizing actionable items, delegating duties, limiting distractions, and organizing information while managing these aspects within multiple projects or clients.

Problem Solving

In consulting, problem solving is where the rubber meets the road. Before a solution can be discussed, the consultant must first understand the problem and the conditions required for a successful solution. Consultants must have the ability to understand the client's industry and their role in it, the company's culture and expectations, business objectives, and processes. Only then can they consider the cost, risk and benefits to recommend a solution.

Communication

The ability to effectively communicate is by far the most important skill for an effective consultant.

Written Communication

The role of consultant inevitably involves the creation of estimates, statements of work, user stories, specifications, findings and recommendations, plans, trip reports, and hand-off documents. It's expected that these documents, as well as other written communication, be clear, succinct, orderly and unambiguous. They also have to write for a wide variety of audiences ranging from IT professionals to the CEO. This means the consultant must understand the interests of that audience and emphasize the relevant information. Some audiences will need additional context to understand complex topics while others simply need an executive summary. Often written communication involves skills beyond words, such as the creation of charts and diagrams. A good consultant determines the best method to convey their message to the desired audience.

Verbal Communication

According to the National Institute of Mental Health, three out of every four people suffer from speech anxiety. Consultants are required not only to overcome their anxiety, but to also hone their verbal communication skills by articulating and controlling their volume, pace, pitch, posture, facial expressions and eye contact. They must convey confidence without being arrogant and exhibit authority while remaining open to suggestions. Verbal communication involves not only speaking, but listening as well. Knowing when and how to ask questions is key. In order to craft the most effective solution to a problem, the consultant must understand the difficulties of their clients from multiple perspectives and present a solution that satisfies all parties.

While these skills are not unique to consultants, they are often more developed in those who make a living providing consulting services. What soft skills do you think are most important? Share your thoughts in a comment below.

Tuesday, December 10, 2013

Glasshole Alert!

Today I finally got my hands on Google Glass and I am impressed. It's a pretty slick device with an even more impressive design. The device itself is light weight and pretty stylish (especially with the shade attached). It is also pretty comfortable while wearing, definitely more comfortable than my reading specs. 

While the app selection is minimal, the apps that are available are pretty descent. Allthecooks and google play music are my favorites right now. There are other apps (facebook, evernote, cnn, etc.) I have yet to give them a try but will soon. 

One of the things I really like is how good the speech recognition is. It's really accurate, the first time. I have not had to repeat myself or yell for it to pick up my commands. It is really responsive too which is another plus for me. there is nothing worse than a lagging app. I am also able to speak at a normal speed and cadence and not feel/sound like I'm trying too hard to make it register. The touch pad is also nice, very responsive and pretty intuitive. 

Now hear come the caveats. Ah, the battery life, our age old friend has reared its ugly head within this realm of beauty. But I went into this expecting less than great battery life so I'm not all that disappointed. But i'm confident that Google will get this worked out as the device matures. Sunlight, the image within the prism gets washed out in direct sunlight. The shade helps a bit but it still wasn't great. Overall I am really pleased with the device and look forward to giving some good feedback to the Glass team and keeping you all up to date on my findings. With that said, it's time I get my glass out of here...

Oh, one last thing....(You see what I did there?).... Leave a comment below for a chance to receive an invite to the Google Glass program. With the invite you still have to pay $1500 for the device. Also,

Just a reminder that all Glass Explorers must:
  • Be US residents
  • Be at least 18 years old
  • Provide a US shipping address or pick up their Glass at one of our locations in New York, San Francisco or Los Angeles
We will pick a winner on Friday Dec 13, 2013!

Monday, October 14, 2013

DotNetDude on HealthCare.gov

DotNetDude on HealthCare.gov
Tonight I spent a few minutes applying for insurance on HealthCare.gov so I could get see the process and options first hand.

As someone who's been developing websites for over 10 years, my first impression was that the site is fairly well designed. The front end was created by a Washington, DC based company named Development Seed. The back end was created by a CGI Group Inc subsidiary, CGI Federal. Not only was CGI Federal the prime contractor for the exchange website, but it received $88 million for it's services. Good work if you can get it!

I was afraid I'd have to answer hundreds of questions, but the application process was very concise and took under 20 minutes. I cannot speak to the application process as it pertains to financial aid as I selected the option to apply without aid.

Since I work as an independent consultant I retain private health insurance which costs me $164/month for a high deductible plan that really only covers catastrophic illness. According to a good friend who works in the insurance industry, it was among the least expensive plans available for someone in my demographic.

Once I entered my information, confirmed my email, and agreed to the very simple terms, I was presented with four categories of plans; Bronze, Silver, Gold and Platinum. I was pleased to note that the least expensive plan available to me was actually 20% cheaper than my current plan. Without going into minute detail, I can safely say that I can purchase an equivalent plan to my current coverage without spending a penny more.

I love how simple they've made the process of selecting and comparing potential plans. Medical conditions and treatments are laid out with side-by-side summaries of benefits.

This is only my personal experience and is in no way a definitive assessment of the Affordable Care Act or HealthCare.gov, but hopefully my experience will provide insight to others.

If you have any comments or questions, please post them below or contact me on twitter (@gainesk).

Friday, October 4, 2013

Ingress is the Future of Gamification

Ingress is the Future of Gamification
What is Ingress?
A secretive company named Niantic Labs discovered an element they named “Exotic Matter,” or XM, that seems to appear from cultural landmarks such as public art and places of historic, architectural or social significance. They believe XM is used by an alien race called the Shapers to affect humanity and may actually contribute to the creation of the landmarks near portals where it springs forth.

Technology was developed to interact with and control these portals using modern devices such as smart phones and tablets and has since been leaked to the public at large. This technology is now being used by two distinct factions in an attempt to harness the power of XM. The Enlightened faction believe that the Shapers are working toward a powerful enlightenment which will uplift all mankind. The Resistance believes that it is protecting humanity from Shaper ingression. The factions have, however, been occasionally observed to ignore their difference and to co-operate by establishing neutral zones and rules of engagement.

What is the True Nature of Ingress?
The true purpose of Ingress is data collection. Niantic Labs is a Google start up that has used gamification to recruit over 500,000 volunteers. In order to play, you walk from place to place with Ingress running on your GPS enabled smartphone, You take geo-tagged pictures using the app, and all the while the data is collected and sent to Google’s server where gameplay takes place. Through this process, Google is collecting vast amounts of pedestrian data, average walking speed, routes taken, pictures, and even Wi-Fi hotspots available.

What Makes Ingress Different?
Google has a long history of offering free products which contribute to their data collection efforts. In 2007 Google launched a free automated directory enquiry service named GOOG-411 which allowed them to build a database of accents and cadences that they later used to perfect their voice recognition technology for Android. What makes Ingress different is that, instead of offering a service, they have made the act of collecting data into a game.

Ingress is also a social game and is not designed to be played solo. In fact, there are significant restrictions on how much a single agent can accomplish and it can take as many as eight agents to make a single portal of the maximum level. While this may make it difficult for individuals in rural areas to participate, the social element is vital to adding enjoyment and keeping players involved.

Why Should I Play It?
With their other services, Google identified something that would be beneficial in people's everyday lives. They met an existing need or offered a better way of accomplishing a task. With Ingress they have created artificial incentives to participate in new activities which often reap personal rewards beyond the scope of the game. For instance, yesterday I spent several hours walking around the city of Franklin, TN. I explored cemeteries and monuments, learned things about my local area and got a lot of exercise. Ingress is an inherently social game and offers opportunities to meet new people. There are already examples of couples that met through Ingress.

There is another element to Ingress that sets it apart from other products that use incentives, such as Foursquare. Niantic Labs has developed a complex science fiction back story which is being revealed in real time. Not only are Ingress agents part of the story, they actually affect the plot through large organized events called anomalies. Anomalies can take place at a particular location or can span the globe and agent involvement determines the outcome which then becomes part of the ongoing story.

What's the Down Side?
As with all games, Ingress isn't for everybody. For one, it's still in closed beta which means an activation code is required to join. Each agent can send a limited number of invites to friends and invites can be requested at Ingress.com.

The game is also not without it's flaws. Players gain significant power as they level up and low level players are unable to have any real effect in the game. New players will spend most of their time grinding Action Points (AP) with the purpose of leveling. This process can go much faster with assistance from higher level players or by visiting locations with a high concentration of portals such as cemeteries or historic towns.

What Next?
While you're waiting for an invite, check out the Niantic Project investigation board and the Ingress Report on Youtube for videos and documents. The folks at Niantic Labs have done an amazing job at producing rich content to tell the story and it's a real treat for science fiction and conspiracy enthusiasts.

If I've missed something important or for questions, post a comment below or contact me on twitter (@gainesk).

Friday, August 23, 2013

Welcome Guest Blogger: Chris Gordon

Please join me in welcoming Chris Gordon as a guest blogger for DotNetDude. As well as being a senior .NET developer, Chris has a passion for mobile development and is published in the Google app store. For his first post here at DotNetDude he has shared his initial impressions of a cross-platform development tool named Xamarin. Xamarin, Daddy Likey!

Tuesday, August 20, 2013

Xamarin, Daddy Likey!

So, I recently attended a talk given by Ben Henderson on Xamarin and was pretty impressed with what I saw. Now before I get to far into this post let me introduce my self. My name is Christopher Gordon, a Software Developer with a strong interest in mobile development. Over the last 3 years I've been dabbling with the Android framework. I, along with Frank Jones and Noah Porch, currently have an application in market named Kickback. We would like to develop a iOS client but neither of us have experience with iOS. This is were I think we could definitely benefit from Xamarin.

Xamarin allows you to develop a code base that can be shared between multiple platforms (Android, Windows and iOS), which is great for teams of any size. But for me the biggest benefit was that I could write the majority of my code in C#, which I am very familiar with, as opposed to Objective-C. This alone would flatten the learning curve tremendously and allow me to become more productive, faster. There is however one caveat to developing for iOS, and that is you MUST have a Mac in order to code the UI. Hey, I don't make the rules I just break them!

I plan to use Xamarin to rewrite the majority of Kickback so that I can leverage it's power to create an iOS and Windows Phone client. As with any awesome thing comes the price. For serious development, the Indie package looks like it has what you will need at a minimum.


Me personally, I would like to have the Visual Studio integration which will run a whopping $999/year. But, before you go out and spend tons of cash, you can always install the starter version to see if Xamarin is in fact as awesome as it claims to be. 


I plan to blog about Xamarin (good or bad) as I venture into the belly of the beast. If there are any Xamarin users out there feel free to leave a comment to let me know how you feel about Xamarin. I'm curious to hear what others think.

Wednesday, August 14, 2013

Dynamic Windows Explorer Taskbar Icons

Dynamic Windows Explorer Taskbar Icons

Before


After
If you're like me, you probably copy, move and delete files using Windows Explorer and end up with several Explorer windows open at the same time. If you have the Windows taskbar docked on the side of your screen, the ungrouped icons all look the same.

Windows provides a very easy and effective solution with custom folder icons. Select a folder you use regularly and open the folder properties then go to the Customize tab.

Then click "Change Icon" and select the icon that best fits that folder. Several icons are provide with windows, however there are plenty of free icon libraries available on the web.

That's it! Now whenever an Explorer window is open to that folder the taskbar icon will change to indicate the current location.

If you have any feedback or helpful tips, please leave a comment below or contact me directly.

Saturday, July 13, 2013

New Talks Available

If you're in need of a speaker for your user group or conference, I'm now offering a more extensive list of talks including some oldies that have been recently updated as well as new content.

How to Be a Six Figure Developer

Microsoft .NET developers are in extremely high demand and rates continue to climb, but many developers have not yet realized their potential. In this talk we lay out some simple and proven ways to make yourself a more valuable employee and build your personal brand.

Going Solo - Independent Consulting for Jedis

Leaving a perm position to go independent is a huge decision. We'll discuss whether consulting is right for you, what to watch out for and things you can do to help ensure success.

Introduction to Model-View-Controller (MVC4)

The move from ASP.NET to MVC can be quite daunting. In this talk we discuss the core concepts, why they will make your life easier, and present some best practices to ensure the move to MVC is as painless as possible.

Build a MVC eCommerce Site in Under 5 Minutes

Did you know that you can launch a fully functional MVC eCommerce storefront in mere minutes? Not only does nopCommerce offer extensive functionality for free, but it's a great way to become more familiar with MVC, WPF, Entity Framework and LINQ.

Customizing nopCommerce with Plugins and Themes

This talk picks up where we left off with Building MVC eCommerce Sites and shows how nopCommerce can be easily customized using plugins and themes without having to modify the original source code. This approach allows for quick and easy upgrades as new versions of nopCommerce are released.

Wednesday, March 6, 2013

Conversion Operators Pros and Cons

C# enables programmers to declare conversions on classes so they can be converted to and/or from other types. These conversions can be explicit or implicit.

Below is an example from Microsoft:
class SampleClass
{
    public static explicit operator SampleClass(int i)
    {
        SampleClass temp = new SampleClass();
        // code to convert from int to SampleClass...

        return temp;
    }
}
Conversion operators are a great way of simplifying business logic, however they have some important limitations. One of these is that the operator may only have one parameter (the source type). This means that the only values available when the target type is initialized are those provided by the source type and dependency injection cannot be used. It's also worth noting that these conversions will not chain automatically. Declaring conversions from A->B and B->C does not provide a way to directly convert A->C.

This is all fine in theory, but what I find useful in these types of articles are real world examples, so here it is.

We're using Microsoft Service Bus for Windows to pass events between an e-commerce solution based on nopCommerce and a custom back office application. We needed some basic objects to pass relevant information through the bus and did not want to be too tightly coupled to the nopCommerce domain objects. My initial solution was to create classes and implement conversion operators to cast objects from nopCommerce to their POCO counterparts.

In the example below, you can see an implicit conversion operator for the Order class which uses the Shipment conversion operator.
public static implicit operator Order(Core.Domain.Orders.Order o)
{
  return new Order
  {
    OrderId = o.Id,
    Shipments = o.Shipments.Select(x => (Shipment)x)
  };
}
Since we needed to add more information to our Order object than was contained in the version from nopCommerce, I got rid of the conversion operator and created a separate conversion class with the following method:
public Order ToOrder(Core.Domain.Orders.Order o)
{
  return new Order
  {
    OrderId = o.Id,
    Shipments = o.Shipments.Select(ToShipment).ToList()
  };
}
The method contents are nearly identical, however we are now free to inject any dependencies we like in the conversion class constructor and add parameters to the conversion method.

No matter which approach you choose, these are excellent ways to simplify conversion and consolidate code used for creating related types. If you have any suggestions or feedback on this article, please leave a comment below or contact me directly.

Wednesday, February 13, 2013

Specified RunAs Account is Invalid

Windows Service Bus Configuration requires a "RunAs" service account which seems like it should be a fairly simple requirement. Unfortunately, if the configuration does not like the user you've entered it displays the generic error message, "Specified RunAs account is invalid." without providing any indication of the problem.

In my case, the service account was fine. The problem was that I logged in with a local administrator account and was trying to use a domain service account, which is not supported. Once I figured out the issue and logged in with a domain account the error went away.

Below are the supported combinations:

EnvironmentLogged In AccountRunAs AccountSupport
Domain
Domain
Domain
Supported
Domain
Domain
Local
Not supported.
Domain
Local
Domain
Not supported.
Domain
Local
Local
Either in development environment (1-box) or by using SQL Authentication.
Workgroup
Domain
Domain
Not supported.
Workgroup
Domain
Local
Not supported.
Not possible.
Workgroup
Local
Domain
Not supported.
Not possible.
Workgroup
Local
Local
Either in development environment (1-box) or by using SQL Authentication.

Hopefully this article will save someone else the headache of wondering why their service account is considered "invalid".

Thursday, February 7, 2013

Building E-commerce Sites with MVC

For those of us who have spent most of our careers building business applications, the prospect of creating an e-commerce storefront can be quite daunting. Not only do you have to deal with calculating tax, estimating shipping and accepting payments, but employees need a way to manage products, discounts and marketing content. Thankfully, there's an open source e-commerce solution written in Microsoft ASP.NET MVC named nopCommerce that provides all this functionality and much more.

I was so impressed by both the functionality and the underlying architecture that I've created a presentation which I believe will serve as a great introduction to MVC as well as a tutorial on developing custom storefronts using nopCommerce.

We start off with a brief overview of basic MVC concepts accompanied by examples within the nopCommerce code. This includes strongly typed Razor views, HTML helpers, jQuery ajax calls, and fluent validation.

Once everyone understands how the website works, we dive into the infrastructure by introducing WCF services, using a generic repository with Entity Framework (EF4) and LINQ, as well as Dependency Injection (DI) with Automapper.

If you'd like to schedule this talk for your local user group, either request me through INETA or contact me directly.

UPDATE 7/13/2013
Thanks to the CodeStock crew and everyone who packed the room for my talk. Y'all had some excellent questions and I invite anyone with additional questions to comment below or contact me directly. Also, don't forget to provide feedback so I can improve the talk for next time.

Click here to view the presentation slides.