May 212014
 

My current day job involves supporting safety systems on locomotives.  This is a relatively young field and can be thought of as air traffic control for trains.  Even though the associated technologies (GPS, cellular communications, data acquisition, etc) are mature, the overall development is fairly new.  This means we talk a lot about IT.  And not always kindly.

We’re part of engineering, so even from our geeky perspective IT is still a THEM.  Sure, I do some coding when I have the time but it’s just not under IT auspices.  And when our coffee talk turns to IT, as it frequently does, it’s laced with the usual fear and suspicion.  IT guys don’t play well with others.

As a fringe IT guy myself I know it’s a mistake to paint all software developers with a brush as broad as “coder culture”, but there are some stereotypes that I’ve seen generally run true. Continue reading »

Jan 102014
 

I’ve been working with various developer communities for several years, and there’s a common question I encounter regardless of the platform:

Q: “What should I work on?”

This isn’t always easy to answer specifically, because a great deal depends on the skills and interests of the person asking.  But there is an easy general response:

A: “Solve a problem for yourself.”

I’ve found that the developers not asking that question tend to do exactly that.  They have a need, see no available solution, and jump right into solving it for themselves.  Often enough, that tends to work for others as well. Continue reading »

Dec 062013
 

Greetings all!  It’s time to dive back into Windows Phone developer community land.  In this post I’ll be sharing the good and not-so-good news for WP development in my region, which is physically centered in the Dallas-Fort Worth area but also includes Oklahoma, Kansas, Colorado, Nebraska and South Dakota.  I’ll summarize the year and share some ongoing/upcoming stuff too. Continue reading »

Oct 012013
 

Deliver HereI’ve just recently gotten serious about learning XAML for Windows Phone development, and it’s been a real rollercoaster.  Hours of bad-document-reading, tutorial-deciphering and hair-pulling punctuated by brief bursts of accidental success.  My wife has learned to ignore my cursing but my poor dog Peanut still runs under a corner desk when some seemingly innocent code breaks.

Part of the problem for myself (and others, based on threads on MSDN and stackoverflow) is that documentation is woefully incomplete.  Too many examples telling you WHAT needs to be done but annoyingly omitting critical HOWs.  Too many segments of potentially useful code lacking the necessary prerequisite references to run.

But I digress.  And if you just want to avoid further background and skip to the solution, scroll down.

I’m working on a C# Windows Phone geolocation app designed to route an email recipient to a person in need.  One of my goals as always is to craft the best user interface for the solution.  For touch devices, that often means stripping out conventional interface objects like buttons because they tend to occupy a layer between the user and what he or she wants to do.  In this case, I want the app’s Map object to be the center of attention, and most if not all user interaction to take place on or around it.  As is my norm, I dose this work with lots of context sensitivity.

I began with PNG objects like those shown in this post.  I got that working fine eventually; tap on the graphic, and a context menu of several options pops up.  Select one, and the graphic updates to reflect the user’s purpose.

But as I began the task of replacing Application Bar buttons with more Map-centric interaction objects, I began thinking that bitmap graphics were too low fidelity.  If I went with vectors, and added more Map layers, I could truly orient the user better and improve engagement.  The Map itself could host most of the UI.I Need HELP

It’s easy enough to add polygonal objects to XAML.  Many of the Windows Phone content objects can host them.  But once you get beyond simple shapes, editing can be a pain.  One quickly misses Adobe Illustrator.

I found a really sweet XAML export plugin for Illustrator, but the creator has been unable to update it past CS4.  I’m using Creative Cloud, and older plugins no longer function [edit: as one reader pointed out in comments, Microsoft’s Blend can import AI files.  Part of my purpose here was to identify a completely free solution.  For many uses, Inkscape works fine].  I discovered that the free vector editor Inkscape supports XAML export, so it was a no-brainer to bring my AI graphics into it and export.  Below is an SVG file of my Map Pushpin object:

`<?xml version=”1.0″ encoding=”utf-8″?>
<!– Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  –>
<!DOCTYPE svg PUBLIC “-//W3C//DTD SVG 1.1//EN” “http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd“>
<svg version=”1.1″ id=”Layer_1″ xmlns=”http://www.w3.org/2000/svg” xmlns:xlink=”http://www.w3.org/1999/xlink” x=”0px” y=”0px”
width=”28.263px” height=”72.538px” viewBox=”0 0 28.263 72.538″ enable-background=”new 0 0 28.263 72.538″ xml:space=”preserve”>
<circle fill=”#3D5EAB” fill-opacity=”0.9″ cx=”14.132″ cy=”7.041″ r=”7.041″/>
<path fill=”#3D5EAB” fill-opacity=”0.9″ d=”M14.132,16.012C6.327,16.012,0,22.339,0,30.143v0v42.395l28.263-28.263V30.143
C28.263,22.339,21.936,16.012,14.132,16.012z M22.332,44.275h-3.956v-8.347H9.814v8.347H5.872V23.784h3.942v8.076h8.562v-8.076
h3.956V44.275z”/></svg>`

I next exported that to XAML, getting:

`<?xml version=”1.0″ encoding=”UTF-8″?>
<Viewbox xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” Stretch=”Uniform”><Canvas Name=”Layer_1″ Width=”28.263″ Height=”72.538″ Canvas.Left=”0″ Canvas.Top=”0″><Canvas.RenderTransform><TranslateTransform X=”0″ Y=”0″/></Canvas.RenderTransform><Canvas.Resources/><!–Unknown tag: metadata–><!–Unknown tag: sodipodi:namedview–><Ellipse xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” Canvas.Left=”7.1″ Canvas.Top=”0″ Width=”14.1″ Height=”14.1″ Name=”circle3405″ Fill=”#E63D5EAB”/><Path xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” Name=”path3407″ Fill=”#E63D5EAB”><Path.Data><PathGeometry Figures=”M14.132 16.012C6.327 16.012 0 22.339 0 30.143v0v42.395l28.263-28.263V30.143  C28.263 22.339 21.936 16.012 14.132 16.012z M22.332 44.275h-3.956v-8.347H9.814v8.347H5.872V23.784h3.942v8.076h8.562v-8.076  h3.956V44.275z” FillRule=”NonZero”/></Path.Data></Path></Canvas></Viewbox>`

I am LOSTOther than redundant schema info and unknown tags, it looked okay.  I cut out the portion I needed (Canvas tag content) and plopped it into a XAML MapOverlay in my project.  Visual Studio immediately complained:

TypeConverter for “PathFigureCollection” does not support converting from a string

The offending bit was the Figures object.  Time to Bing for an explanation… but while I found many examples of people encountering the error, there were no useful solutions.  Some mentioned Kaxaml, which I downloaded.  While it’s a very helpful tool for visualizing and troubleshooting XAML, it didn’t see any problems with my code and offered no way that I could see to refactor what I had into something Visual Studio would like.

The Solution

But reading more about the PathGeometry object tickled a few brain cells.  I found a Path example that looked like it would work for what I wanted.  So I changed the essential code to what follows (key portion in bold):

`<Canvas Name=”Layer_1″ Width=”28.263″ Height=”72.538″><Canvas.RenderTransform><TranslateTransform X=”210″ Y=”300″/></Canvas.RenderTransform><Ellipse Canvas.Left=”7.1″ Canvas.Top=”0″ Width=”14.1″ Height=”14.1″ Name=”circle3405″ Fill=”{StaticResource PhoneAccentBrush}” Opacity=”0.8″/><Path Name=”path3407″ Fill=”{StaticResource PhoneAccentBrush}” Data=”M14.132 16.012C6.327 16.012 0 22.339 0 30.143v0v42.395l28.263-28.263V30.143 C28.263 22.339 21.936 16.012 14.132 16.012z M22.332 44.275h-3.956v-8.347H9.814v8.347H5.872V23.784h3.942v8.076h8.562v-8.076 h3.956V44.275z” Opacity=”0.8″ /></Canvas>`I Want to Play

Success!  In a nutshell, the trick was to remove the PathGeometry and use the Figures string as Path Data…. which just makes sense.  My custom Pushpin rendered exactly as it should, and looked much sharper than the PNG bitmap.  Now to construct other UI elements, add Map layers, and wire up the events.  I’ll post more later, and will provide the full code on app release.

Hope you find this technique useful!

 

May 282013
 

For those who have been active in the Dallas-Fort Worth Windows Phone developer scene for some time, the headline here may seem odd.  After all, the Meetup.com group has been gathering on occasion since this time last year.

But what’s been missing, according to the most common feedback I receive, are semi-social gatherings with a focus on Getting Stuff Done.  Attendees have had enough consumption; they’re ready to create.

With that in mind, I have spent the past few months scouring DFW for good venues for this activity.  I put together the following criteria for sites:

  • Should be free (or at least low-cost)
  • Should have easy facility access (preferrably no security hurdles)
  • Must have decent, dependable WiFi
  • Must have easy access to power
  • Must have comfortable seating for at least 15 attendees for 3+ hours
  • Should have easy access to food and drink (including catering)
  • Must be available weekends and/or evenings

This is not an easy bill to fill.  I encountered many potential venues that had one or more of the must-have items but lacking something critical (usually weekend/eveing access).  To increase our prospects, I asked community members to aid in the search.  Pointing out a possible location wasn’t enough– I needed these foot soldiers to compare sites against the requirement list, talk to managers, and even take pictures.

It may come as a surprise to readers that grocery stores turned out to be generally good locations.  Specifically, the Tom Thumb flagship stores, which meet every Must and Should.  The only drawbacks I’ve run into were man-made… such as the strange reluctance of one store manager (who was worried about us displacing customers, when I saw only 3 people occupying a 35-seat area) and human mistakes.  Mostly mine.

I had scheduled a meetup for May 25 at a Tom Thumb store in Arlington after one member, Dallas .NET’s Omar Villarreal, got clearance from the manager.  Unfortunately I misread Omar’s instructions and secured the wrong store.  When the group arrived, we discovered that there was no WiFi or Starbucks.

Oops.

We waited for stragglers to show before moving to another Tom Thumb a few miles north.  This cost us an hour and a half of valuable time.  Lesson learned: read the fine print.

The second store turned out to be acceptable.  WiFi was mostly reliable (I had a couple of brief drops) and the deli sandwiches were excellent (I recommend the pulled pork).  The 5 other attendees seemed fairly pleased.  However, the late start combined with another error on my part got in the way of getting any work done.

I had set aside the beginning of the meetup for introductions and announcements, which would be okay for social meetups but took way too much productive time from this one.  Socializing is certainly useful, but we’ll hold separate events for that.

I would like to think that the attendees at least benefitted one way or another, but I welcome constructive criticism to help shape future get-togethers.  I definitely need to arrive early to get things set up.

The good news is that this somewhat-rough experience was useful in certain contexts, especially since we had new members attend, and allowed me to get a good idea of what works and doesn’t work.  Going forward, I will put together a handout for updates and trim the initial verbal presentation down to about 5 to 10 minutes.  Less time of me chatting, more time Getting Stuff Done.

Ideally, we will see a good mix of skill levels and experience at these sessions.  I really want to pair mentors and experienced app publishers with beginners, for one.  Same with bringing in more data modelers and UI designers.  To motivate members in that regard, I am offering a recruting incentive: bring in any new member with any useful skills for app creation, and get a $10 gift card.  Bring in any new member with at least one published app, and that amount goes up to $20.  Stipulation: new members must agree to sign up at DVLUP and also provide me full contact information before I award the gift cards.  This promotion runs until I am broke or we have too many members.  ;)

Speaking of DVLUP, I’m also considering holding specific “DVLUP Days” events with the goal of just tackling DVLUP challenges at the event.  XP building opportunities, if you will.  I’m also working on partnering with various companies and instructors for educational meetups– stay tuned!

My intent is to “bounce around” the metroplex and hold these sessions in various parts of the area, with a preference for central locations.  If you know of any, let me know!  By all means, ask the managers about the items on my list, and pictures of the venue are very helpful.  And ask your employers about hosting!

We’ll probably hold another such event in North Dallas next, at an office near highway 35E and Beltline Road.  Registration will be at the Meetup.com website, and I will announce in the usual social channels.

Ultimately, we’ll get into a rhythm that will benefit everyone involved.  I can’t wait to see the results!

Oct 302012
 
Yesterday I received an email from a Dallas entrepreneur who wondered why he kept seeing my name pop up a lot.  Then today I got a call from a former Nokia colleague following up on a LinkedIn update, wondering what I’ve been up to lately.  So it’s no doubt time for Yet Another Boring Update. Continue reading »

Mar 012012
 

Update: plans for Tribal Method have changed just a bit.  See the website for details.

Just recently I sat down to share with whoever is interested what I’m up to lately and where I hope to be going.  Instead, the article turned into a screed on introvert exploration.  Which is okay, because it was a topic I wanted to talk about anyway, and with it now out of the way I can try the other bit again.

I’ve rambled quite a bit about my past in other places, mostly at Tabula Crypticum, so no need to dig into that deeply.  But a synopsis is worthwhile still before revealing the new stuff.

At age fifteen I started in the plumbing business, a family obligation.  After ten years of that torture I stumbled into a product design career, my goal at the time, starting with 7 highly educational years at Texas Instruments.  When that ended I bounced around a bit in various technical ventures as US manufacturing outsourcing reduced opportunities for a maker like me.  And after losing a too-short dream opportunity at Nokia I ended up in IT application support.

And that’s really not where I want to be.

I have some ideas, guys.  Some small and easily rendered by myself into something real, and some so big and potentially game-changing in some way that I would need to wrap a sizeable company around them.  They’ve been popping up for decades, and each job change has just opened up more possibilities to explore.

I have so many ideas that I can’t manage them all.  So I’ve tried assembling teams, virtual and local, to get things going.  With very little, if any, success so far.

So most of these ideas are stagnating, which is really eating at me.  But one thought keeps me optimistic.  It’s that I don’t need to be their ultimate owner; I just want to be their launcher.

You see, I’m not as big on monetary gain as I am on accomplishment.  And I’m also a huge believer in the team approach… including team recognition over my own.  Because I was insecure enough as a kid; having outgrown that long ago, I have motivators other than the need for attention.  My biggest satisfaction comes from helping someone else succeed.  And if it’s with the germ of an idea I had, even better!  But I want the attention on the solution and the team that made it happen.

As my ideas accumulated and lingered, I realized I was seeing the same sort of thing I had seen in the Maemo and MeeGo communities: plenty of needs, plenty of people wanting to work on needs, and yet a big gap in execution.  Organization was required, but these were contributors who resisted organization.  After all, that leads to bureaucracies.  Which lead to dead projects.

But then, so does inaction.

I’ve been thinking for some time that a solution to this dilemma would be big.  And every now and then I toyed with creating one.  I know many of the issues: different opinions on best practices, resource fragmentation, etc.  I also know that the answers lie in solving functional disconnects, automation gaps, and similar.  If people can work the way they want, without being burdened by technical obstacles and personality clashes, it’s a lot easier to get them on board a project.  After all, technology is supposed to be an invisible enabler!

With those thoughts in mind, I believe I’m finally pulling a solution together.  Participating in local entrepreneurial, social media and application development groups has really helped.

So yesterday I took out the domain tribalmethod.com.  Because I have this idea that will help me solve the team assembly problem holding back other ideas, and very likely help you, too.  It will work for open source, closed source and gradients in between.  There will be opportunities for recognition, money and whatever else motivates you.  I just could use help developing it.

There’s nothing at the Tribal Method domain… yet.  I’m going to need to assemble a team for that.  A chicken-and-egg dilemma, but hopefully I’ve piqued the interest of the right people.

Hop on board.  Ask anything.  This is going to be fun.  ;)

%d bloggers like this: