Rescue Support – Technologies

As I set out to build rescue support I have specific technologies in mind to use. It should be clear that I reserve the right to grab whatever technology catches my fancy along the way.   Getting started, the menu will include the following technologies:

  • XAMARIN Forms
  • HTML5/CSS3/JS
  • AngularJS
  • Breeze
  • ASP.NET Web API & MVC
  • Azure
  • Docker Containers
  • Microservices

Part of the issue developers always run in to is focusing on one set of technologies means that they are missing out on others. I’m not really going to pay attention to Node.JS, AWS, and a bazillion other ‘new’ developments. There are also a lot of technologies I’ve not even heard of yet but will probably sound really cool later.

I’m also not listing everything here. For instance, Bower and some of the ‘new’ tools that have appeared on the scene aren’t listed but I’ll probably talk about them at some point. There are also the frameworks that are built on top of these tools. For instance, I’m going to use HotTowel as the starting point for my client. I also make use of Unity, Enterprise Logging and several libraries on the server side to make my life easier. I plan to talk about all of them along the way.

The wonderful thing about being a developer is that no matter what time it is there is always something new to learn. The scary thing about being a developer is getting left behind, waking up one day and finding out that nobody cares that you can seriously rock some IUnknown with your mad STL skills.

Pet Rescue Support Project

I’m always anxious about falling behind on the latest technology. While work provides opportunities to work with new stuff, it’s not always what I’m interested in. To help me keep up with ‘new’ technology I’m going to make up my own project and use it as a framework to work on stuff that interests me.

We, my family and I, volunteer with a dog rescue. We will transport dogs, foster them, interview adopters, help at events (dog wrangling), and do fund raising. Through my involvement in rescues I’ve gotten a pretty clear picture of what running a dog rescue is like. Our primary rescue is a bit of a basket case.

Any money a rescue has goes to feeding the dogs and paying for medical care. Right now, I am fostering a puppy that was hit by a car. Her leg was broken and required surgery. We had to raise money to cover the costs and she is staying with us until she if fully healed and ready to be adopted (she’ll be here for about 8 weeks). Because there is no money there isn’t much in the way of automation. Anything free is usable, but what generally happens is lots of emails and Facebook messages get bounced around. This tends to make volunteers work a lot harder than necessary.

My solution is Pet Rescue Support. I plan to build a set of applications, both web based and mobile, that will help pet rescues operate more efficiently. Luckily Microsoft provides some ‘free’ Azure support and there are other avenues through which I can get stuff to help. The apps built will be provided to rescues free of charge.

What will Pet Rescue Support do? My initial plan is to provide the following features:

  • Surrender application
  • Adoption Application
  • Intake workflow
  • Inventory management
  • Volunteer Management & Communication
  • Integration with PetFinder

Everything listed above is generally handled manually through email and excel workbooks.

How will rescues benefit from these services? First, email and manual processes will be reduced. Instead of having to dig through an inbox to find adoption applications, volunteers can see a list of applications. They will be able to search and sort the applications as well to make finding what they are looking for easier.

One issue we have is keeping track of all the approved adopters who have not adopted yet. We need a way to communicate with them. They need to know when and where we are having events, and do we have any dogs that might match what they are looking for.

I’ve already started working on this project. My plan is to create the applications, write about how I created them, my reasoning in the choices I’ll make (beside ‘the technology looked cool and I wanted to use it’). I also plan to release the solution as open source as I go along.

Stay tuned.

The Ringer

I don’t even know where to start with this one.
I’ve been assisting a client with recruiting a team of developers to work on a project. For whatever reason, they were having difficulty finding local talent so we had spread our nets out to see if we could find what they need. Naturally this meant that the interviews had to be done remotely. The usual process is that the staffing agency does a screening (they suck at this given the quality of what makes it through) then we do a technical screen (where we usually reject about 90% of the candidates), then we do a more in-depth interview with the candidate. If we think the person has the technical capabilities to do the work for the client we will pass the candidate on and the client does their interview. We did find 1 local candidate this way and an in-person interview occurred and that person was hired. The rest were offered without having had an in-person interview and they accepted and showed up for their first day on the job which is where the wheels came off the bus.
One of the candidates we passed and was hired turned out to have been using a ringer during the interviews. The person who showed up for the first day of work had none of the technical capabilities that had been demonstrated during the interviews (we write some code and do some design work: things that are difficult to fake). The team quickly caught on to this individual’s lack of skill and was quickly removed.
In the post mortem of this experience I’m looking at how I can further improve the process to prevent this from happening again. The immediate answer is that I’ll be adding a web-cam to the interview. But I need to check with HR to see if there are any rules I need to navigate in doing so. For instance: can we require a photo ID with the resume submission from the staffing agencies?
On one-hand I’m laughing my butt off about the situation because it is comical. On the other hand it is a serious problem for my client because we have to go back to the well to replace this person and find a new one while insuring this doesn’t happen again. Which in my sick twisted mind just makes it funnier.
So here’s the thing, if you plan to use a ringer for your interviews: you might want to make sure that your ringer does not so greatly exceed your own capabilities that if you do get the job that you’ll be immediately identified as a fraud. Perhaps have the ringer provide you a recording of the interview and go study the questions that were asked and the information provided so you’ll be prepared. I mean this person screwed up so massively that the team immediately removed the individual.
What isn’t funny about this is the impact it can have on clients doing remote work. Remote work requires trust between the parties involved and when an individual like this shows up they can cause people to question using remote workers. To be clear this situation was an onsite gig, but I can’t help but wonder how eager they will be to do remote work now.

What is a data lake?

Late to the party as usual. So what the blazes is a data lake?

Some quick research basically paints this picture for me:

  • Store ALL data in 1 place
    • Relational data
    • Flat files
    • images
  • Schema on READ

There are other bullet points but these were, to me, the point ones. The idea is to take all the data in its original form and just store it. Unlike a data warehouse where the data would be transformed in to the warehouse’s schema, in a lake you leave the data as is. The schema gets applied at the time of reading the data.

All of this seems like a pretty cool idea. Data storage today is fast and cheap so why not? I don’t have an answer and don’t see the damage it can cause as of yet. However, I can easily see data lakes turning in to junk drawers if organizations don’t take time to use some governance over what goes in.

I also see issues in the details. How exactly does the platform apply “Schema on read”? What if I want to do a join between Northwind.dbo.Customers and a bunch of jpeg image files of the customers? Are we writing little utilities that do this “schema on read” or is the platform doing it?

I don’t really see data lakes replacing data warehouses. In fact I think they’re complementary ideas.

Shortcut – empty solution template

Windows Explorer’s lets you create new files by right clicking and then going in to the New submenu.   You should already know this.

What you might not know is that you can add your template files. An empty Visual Studio solution for example. To do this:

  1. Create an empty solution (in the new project dialog go under “Other Project Types/Visual Studio Solutions”
  2. Copy the sln file to c:\windows\shellnew and rename it template.sln (to make step #5 easier)
  3. Open regedt32 go to HKEY_CLASSES_ROOT and find .sln
  4. Add a new key called ShellNew
  5. Add a string value to the key called FileName and set its value to “template.sln”

Now you can create new solutions by just right clicking wherever you need to setup a new solution.

You can do this for any file type you want. Just look in the registry and add the key. Windows just copies the file you specify from the shellnew folder to the new location. So you could create a C# class template with all your favorite stuff and then just make new copies whenever you need.

Better sleep

Another post that isn’t really technical but it does have its place. Your brain needs rest, and there is excellent science that says 8 hours of sleep is roughly what is needed. So if you must get 8 hours of sleep you might as well make the most of the 8 hours so you can get the most from the other 16. Here are a few items to consider:

  • Kill all lights. I mean every source of light needs to be blocked outed, turn off lights, get black out curtains, put all of the gadgets in another room. You want your sleeping spot to effectively be in a deep dark cave.
  • The bed is for sleeping. Don’t watch TV in bed, don’t sit in bed working on the laptop. When it’s time for sleep get in bed, if you’re not sleeping get out of bed.
  • If it takes more than 15 minutes to fall asleep: get out of bed do something else and try again when you’re ready.
  • Chill the room, I keep my house at 70F. I don’t mind it being cooler at night when I’m sleeping (ie 68F) but the rest of the family complains and its also harder for me to get back out of bed so 70 to 72F is where the temperature stays.
  • Take a hot shower before bed. I’m unclear on the details but basically the cooling effect when you get out of the shower is supposed to help you fall asleep.
  • I use nature sounds to help me sleep. Specifically I have a play list of thunderstorms that I will play when I go to bed. The blue tooth speakers I use have LEDs on several of the buttons: I have put electrical tape over the buttons so no light escapes. My wife has commented that she sleeps better with the storms going too
  • There are various nighttime teas that you can try if you have trouble falling asleep. They seem to work for my wife. I have no idea because I can make myself sleep inside 3 minutes.
  • Keep your wakeup time constant (I get up at 5am). If you want to sleep in: go to bed earlier.
  • Spend money on your bed. I have no idea what we were thinking but we bought one of those stupid tempur-pedic matresses. It’s been worth the money. It is very comfortable.
  • I sleep with one foot outside the blankets. No idea why this helps but it does. I’m tall enough that I can reach the bottom of the bed and kind of work the sheets out of the way so my foot is outside where it is cooler (I like to sleep under a lot of blankets and dogs).

If you have any tricks that work for you: please share them.

Making business travel enjoyable

I hate business travel. In fact I pretty much hate leaving my house except for a few specific reasons none of them include anything to do with business. However there are occasions where it is necessary and has to be done.

If it has to be done at least we can do it in a way that makes it enjoyable. Here are a few items I practice:

  1. Travel at odd times. The usual company policy is something like Monday to Thursday, meaning that you leave home Monday morning and return home Thursday sometime. I leave Sunday night as late as I can. While my particular flight is always full it’s no big deal because everybody is pretty relax. The few times I was forced to fly on a Monday morning I was quickly reminded why I hate travel.
  2. Check your luggage. Every self-important, OMG! I gotta get there, suit has their wheelie bag and is in a mad dash to get on the plane so they can stuff it in the overhead. And on nearly every flight there is a bunch of the same self-important people who are told they’ll have to check their luggage because there is no room. Sorry, the stress, tension and lack of manners exhibited by people isn’t worth it (another reason I hate travel). Just check the luggage, even if you have to pay for it – the convenience is worth it.
  3. Related to #2 use a baggage delivery service! I use this thing called Bags VIP which handles getting my bags from the airport to wherever I’m going. I don’t have to wait for the bags throwers to unload the plane. I just get in my car and head to the hotel.
  4. Use UBER or a taxi. I used to drive myself to the airport, but I’ve stopped. Initially I was a good boy and parked in the remote parking lot but eventually I quit that and started parking at the terminal. The problem was that I’d end up having to ride the train between terminals to get back to my car so I wasn’t saving time. Leaving my house I use UBER and then coming home I’ll just grab a Taxi waiting by the curb. This generally costs about half of what parking at the terminal was costing and is actually a lot more convenient.
  5. Get to know the people at the hotel. I stay at the same hotel every time I head out. In this case I’m always in the same city so it really is the same hotel. They put me in the room I like and general get me in my room faster than other people just because they see me regularly. The guy who runs the restaurant in the hotel knows me and always greats me and makes me feel at home. It’s a minor thing but it improves things.
  6. Don’t eat in your room. I used to be bad about this. I’d get back to the hotel, order room service and just vegetate in front of the TV until I went to sleep. I’ve now made a rule that I can’t eat in my room. I try to eat outside of the hotel at least once each visit and try not to always go to the same restaurant.
  7. Get a Pelican case! Most people use Pelican cases for photography gear or other delicate equipment. They make freaking awesome suit cases and provide you tons of room to pack all your stuff while not violating the airline policies. They’re expensive but they’re tough and will last forever.
  8. Use the rewards programs. Sign up for every one of them and make sure you get your points. I have at least a week of free hotel stays with my main hotel, I’m near the top of my airline’s preferred customer program, the rental car company already has me in the highest tier and I’ve got more than a week of free car rentals saved up. I don’t use my company’s card (who the blazes uses Diner’s Club today???), I use my own and have enough points for a first class ticket across the Atlantic (need 2 though….).
  9. Admiral’s club or whatever – the Citi card I have includes access to AA’s Admiral’s club. They’re nice and late at night while waiting to get on the bus it’s a nice place to hang out. The Admiral will even provide free bourbon, it’s not great bourbon but it’s free bourbon which tastes pretty good to me.

 

That’s what I have so far. I’d love to hear other people’s secrets.