Tuesday, January 30, 2018

Through A Mirror, Darkly - The Not So Positive Look At Startups From The Inside - Part 1

Note: This is my experience consulting with a number of startups over the last 4-5 years. I’ve seen certain trends. I’ve talked with other developers and they have seen similar.  This is a combination of the problems I have seen. It is not a complaining about these people, just a reality check that you need to have.

In a recent article, I discussed the general concept of risk and the startup process.  This is great information if you are pushing your startup idea forward.  We’re not all pushing OUR idea forward.  Sometimes, we’ve been asked to join someone else’s startup, attend a startup weekend, or help someone else’s startup that has had some problems.  The end result is that we are pushing someone else’s idea forward.  Unfortunately, these people may have different expectations to you, and from development reality.  In this article, I’ll walk through a few issues that I have seen.  This is taken from my experiences in the southeastern US in several locations.

Expectations

Managing the expectations of other people in a startup is incredibly hard.  Most people have no idea what software development is.  They don’t understand the unit of work, how to be successful, or how they can contribute to be helpful.  To the others, you might as well be working in the back room, standing over a cauldron, and saying some magic spells.

You must be able to manage the expectations of everyone in the startup.  You will need to be comfortable in this scenario.  Managing expectations is hard, some might say it is impossible.  It is also incredibly hard mentally as well as financially.  It is hard mentally when you are getting questions on a feature every day.  It is hard to say it is weeks, or months away.  It becomes especially hard when someone else says that they can produce a feature in some small amount of time.  Many people will be willing to try this in thinking that in the short term, it will all work out.  Many times it does not work out at all, but that is a much later argument.  This becomes a financial issue when the question of you vs. someone else comes up and how any money flows.

The bottom line is that you need to manage the expectations of the others on the team.  What happens when the other people won’t accept what you are telling them?  That is when you have some amount of conflict.  The solution to the issue depends on what the conflict is.  Conflict over scheduling can be solved by having a priority list of features.  If someone wants something to be done sooner, then the order of the priorities can be changed. That is a simple solution that tends to work out.  People understand priorities and can stick with this.

Another issue is that people will not believe you.  My favorite one of these was “You should have built this with a web app so that we could not have to deal with paying 30% to the app store.”  Another great line that I have heard is something along the line of “My friend’s cousin’s son can do that in a basement in their sleep.”  There is very little that can be done in this scenario.  No matter the facts, sometimes people will not believe you.  Keep an open mind on these issues.  They could be correct, however, the possibilities in these scenarios is pretty small.

Another idea that comes up is that more developers will solve a problem quicker.  Much like threading, or multiple cpus in a computer, reality is different.  Management between multiple threads or multiple CPUs requires time, effort, and cycles.  The same is true with multiple developers.  The secret I have found is that everyone needs to be in the same location and they need to communicate when there is an issue.  This will solve the issue of communication that doesn’t work in a phone call, email, or IM.

The Burned Entrepreneur

Developers are typically well meaning people.  Not everything works out.  Entrepreneurs tend to blame the developers, no matter what actually happened. Developers blame the entrepreneur.  The truth is typically somewhere in the middle. Unfortunately, the entrepreneur will try to recoup their investment either consciously or subconsciously.  Two examples that I want to share:

  • A startup had spent somewhere between $300 & $500k developing several prototypes and the developers would not do any more without additional money. I felt sorry for the developers because they had clearly been given unrealistic goals and had bad leadership. The startup wanted me to come in, fix all the problems, and basically work for free and cut of ownership; basically, an unrealistic request driven by their not having anything to show from the initial investment.
  • I spoke with an entrepreneur that wanted me to come onboard of his startup. He had gone through a round of development with very little to show.  He had spent about $150k according to him, but with some missing features.  He wanted to contractually require an absurd number of hours per week once and was only promising some stock, and no money. 

In neither of these situations were these necessarily bad people.  They had not been successful initially.  In their mind, they were trying something different.  Unfortunately, they were transferring all of the risk from themselves to the developer.  Be careful.



Look for Part 2 of the article shortly.

Monday, January 15, 2018

Building For The iPhone X - The Notch and Safe Areas

Check out my article on taking advantage of the iPhone X https://visualstudiomagazine.com/articles/2018/01/09/building-for-iphone-x.aspx
-

When Apple released the much-anticipated iPhone X on Nov. 3, it generated a surprising amount of interest in a phone that starts at nearly $1,000. Initial delivery dates were four to six weeks out for those who didn't get their initial preorders in. Amid all of the excitement about the new phone, Apple released iOS 11.1 and Xcode 9.1 (followed by the release of 9.2 stable last month). You can now take "full advantage" of the iPhone X. This article will look at what you need to do to leverage this advantage and ensure your apps look right on the iPhone X.

Wednesday, October 18, 2017

Xamarin and iOS11


It’s that time of year. Each year the fall season brings a winding down of summer fun, changing of the leaves, football and a new version of Apple’s iOS. The fall of 2017 is no different. My college football team lost the first weekend -- on national TV -- and Apple has delivered iOS 11.

iOS 11 is the latest version of Apple’s mobile app OS. It has a lot of new APIs and UI changes and comes loaded on the most recent iPhones (iPhone 8 models and the new iPhone X). iOS 11 comes with a new set of APIs that developers will care about. 

Wednesday, October 11, 2017

Xamarin.Forms Updates - September/October 2017

I've got a new article out on Xamarin.Forms.  It is a look at some of the features that just came out as well as some features coming out in the next major release (3.0).  The 3.0 release is stated as being out in the 4th quarter, 2017, but we will see.  I never trust shipment dates.  :-)

Note: Xamarin called the next update version 2.3.5 at the time the article was written.  The version was changed to 2.4 right before the article was published and we didn't know until it was too late.

Url: https://visualstudiomagazine.com/articles/2017/09/01/xamarinforms-updates.aspx

I have an interesting relationship with Xamarin.Forms (XF). My view of cross-platform interfaces was born back in 1993 during a hallway conversation regarding cross-platform (Windows and Mac at the time) and how an interface that looked like Windows on the Mac meant the Mac users were going to come for you with pitchforks.

I had several conversations from 2011 to 2013 with various people from Xamarin about the need for a cross-platform visual UI for mobile devices. Basically, I was hearing from customers that there was a need for a cross-platform UI API. There needed to be some type of API that developers could call for buttons, textboxes and lists that spanned iOS and Android platforms. My favorite response was: "When hell freezes over." I laughed about this because I hate cross-platform APIs that don’t look like the underlying platform. I’ve seen this several times with cross-platform UIs.

Then I was in Las Vegas in 2013 and my friend told me that "Hell has indeed frozen over." I laughed because I knew exactly what he was talking about. A few weeks later I was in San Francisco and had about three hours of discussion with Jason Smith -- the mastermind behind XF who comes from the gaming industry where performance is key -- regarding XF, how it would work, some of the underlying pieces and a bunch of things that were well over my head.

Fast forward almost four years, and I’ve seen some highs and lows with XF. It works well for things that are fairly simple. For apps that are complex, I’ve been less sold on the idea. Having to load a lot of external components to get the native device functionality into a project isn’t a formula for success, I found. I’ve been bitten by components no longer supported, components not working as advertised and my general distrust for components not part of a main product package. Add with the experience of XF running fine on iOS and horribly slow on anything but the most recent Android devices, I’d become quite concerned about the feasibility of XF. I’ve been concerned about the amount of dependence on XF as the singular cross-platform development solution with Xamarin. Thankfully, over the past year I’ve doubled down on my testing of XF. I’ve written two applications for my startup and used XF. Each application has been thoroughly tested on my 2-year-old Android phone. These apps seem to run well, but they’re admittedly simple and might not be a good example measurement. After all, both deal more with data, pictures and Web services than they do with a lot of UI interaction.

Enjoy, and thanks for reading.

Friday, August 11, 2017

A Filtered View of Core Image


While professional photographers don’t like them, the simple fact is that the camera from practically every iteration of the iPhone has been comparable to what was available in prosumer DSLR cameras. The camera can be used to take pictures (duh), as well as to focus quickly (which is good for barcodes and QR codes). One of the great features of iOS is that it has the ability to take a picture and perform an operation on it, such as run a filter or perform facial detection. This is provided by the iOS Core Image Library.

Filters can be used for creating various effects on images. You might be thinking, "So what? I’ve been able to do that for quite some time with Instagram." Filters are just one part, but Core Image also can detect faces. With the automatic ability to detect faces in images, these images can be easily cut down to get facial information.
In this article, I’ll look at how to apply filters to images and to detect faces.

Monday, July 24, 2017

Our Journey Through Creating Documents and Into Aspose Words

Over the years, I’ve used various components to create Microsoft Office Documents.  They worked, but I always felt weird about using a component to create something that should come from Microsoft.  There never was anything directly from Microsoft.

I have been running a startup and we need to create documents so that a certain set of customers can print things.  It is not a huge need, but it is something that is ultimately very important to these few.  Out startup is in the golf area.  We need to be able to print cart signs to go on the carts as well as alphabetized lists of the golfers in a couple of formats.  A secondary item was to be able to display QR Codes so that we could get the players started in our application a bit quicker.  To go along with this, we need to talk about our service platform.  Our service runs in Azure as several WebApps.  It is great because we don’t have to manage any servers.  No worries about some update hitting the servers, no worry about the updates, no worry about much of anything.

My first thought was to do my old trick of designing the document, displaying data on a web page, and sending the appropriate mime type for MS-Word.  I wrote this and it is working today, but I ran into a problem.  This solution is great for just printing some documents and not worrying too much about formatting.  I was manually modifying the resulting word documents too much, and it was not something I could expect a user to handle.  Unfortunately, we need some more control in the formatting than I could figure out what to do.  The new mime type solution was a clear no go.

The next option was to try the Open XML SDK from Microsoft.  I downloaded the SDK, and it seemed to have a lot of documentation, so I thought it would be the right selection.  I thought, “Hey this is from Microsoft, so it will do what I need. Because it is from Msft, a junior level guy will be able to handle this.”  After about a week of this, it wasn’t happening at all.  There were all kinds of little issues we were causing things to not work.  The nuget packages created problems.  He was pulling his hair out.  This just wasn’t working.  I started to look at options.


I “talked” to some of my friends of mine over email, if that is really talking.  There were several components mentioned, and about 40% of the response were Asposes family of components.  We downloaded the nuget packages.  In 3 days, my entry level developer had all of the options I needed working.  He had items in the right spot.  Everything was working.  A couple of more days, and had had things formatted.  We were testing the formatting in ways that we couldn’t do before.  The signs were coming out correctly.  We create team lists, and that was working properly.  He had done all of this quickly and easily using Aspose Words component.  

One of my next steps was to create a QR Code document, that we could use to allow teams to scan the QR Code so that a team could immediately begin using our app with no login hassles and no need for their cell phone number.  The team downloads our app from the Apple/Android app store, scans the QR Code that they get from their golf cart, and the app immediately loads using their web browser.

Aspose Words definitely worked and made our lives easier.

Wednesday, June 21, 2017

Track Your Fitness & Steps On Your iPhone, Just Like Your Fitbit

I’ve been a Fitbit user for several years. I enjoy using it, reading the material and hoping that if I push myself it will help my level of fitness (probably not). What I don’t like is that:
  • It’s another device that I have to keep track of. Sure, it's on my wrist, but I still have to maintain it.
  • I have to keep it charged. My current daily driver is a Fitbit Charge2 that holds a charge for seven days – that's great, but it still has to be charged. So, I also have to keep track of a charger, which adds to the hassle.
Those two things aside, I've found that the device's usefulness far outweighs the hassles. I've even developed a pedometer app for it, which I'll show in this column.
The app uses the CoreMotion iOS framework, which is used for determining number of steps walked/run.