Thursday, April 06, 2017

Whither CodePlex

UPDATE: VFPX is being moved to GitHub and its initial conversion looks well underway.

So Microsoft's latest technology to go to the waste pile in the sky is CodePlex.

It joins a long-standing tradition of Microsoft's to eventually dissolve technologies that it created to help it compete and then decide to get rid of it entirely with fairly minimal warning - the site goes completely dark in December, 2017.

Now are the costs associated with CodePlex that high?

One of the arguments for choosing a company like Microsoft or Google used to be that they would stand behind their products for a good period of time, unlike smaller companies. Smaller companies, they argued, were far more liable to have to stop their services as costs became higher than the benefit of operating. This brings up the question on how several sites that don't have costs manage to continue operating - (I can't imagine Trello has enough people paying for its services to account for all the free accounts - but oops! Trello has been bought by Atlassian so maybe there should be a concern there as well).

In the past, Google has shut down ongoing projects (such as Google Health, and many of the gmail add-ons) with minimal notice but Google's saving grace has been that most of their products were always in "beta". Microsoft never put beta flags on these products so one might be forgiven for expecting they would be around for a while.

One of the explanations behind Codeplex's shutdown is the issue of spammers "and Redmond having to deal with spammers taking advantage of the CodePlex domain." 

So if Microsoft can't figure out a better way of dealing with spammers on the domain, their solution is to close it down.

So developers are encouraged to switch to GitHub, which is awesome but it also means there is only one place where code goes to live, beyond your own proprietary way. But wait - there's always Visual Studio Team Services, right?

Frankly, that Microsoft wants to shut down its own services that haven't been around that long (relatively speaking, CodePlex is less than 10 years old), makes me concerned about a service like Visual Studio Team Services.

Yes, I know that Visual Studio is Microsoft's primary development platform - but it's only been that way since the 90's. Shouldn't that be getting ready to go away as well, following the Microsoft tradition of leaving developers with investments in technology it no longer wants to support?

Visual Studio Team Services links to its own Git server and Visual Studio also links to GitHub so why would or should one bother with Visual Studio Team Services? What is the benefit of such a service if it runs the risk of disappearing in a few years?

Visual Studio Team Services offers a great tool and implementation of TFS (Team Foundation Server) - indeed, one of my clients has made a huge investment (business-wide) in TFS, managing most of its development in that technology. TFS's bug and user story tracking is a HUGE benefit and right now, I only know of software that does smaller bits of it. I suppose they could all work together but that means teaching others to learn new and differing interfaces. It defeats the purpose altogether.

I'm not blind to the ever-changing world of technology platforms - everything evolves. But GitHub is only 9 years old, which in the world of technology is still really young. When it disappears, where will your source code go? But perhaps most importantly, where does the LEGACY code go? TFS offered a migration from SourceSafe, Microsoft's original source code repository. This meant that even ten years after the fact, one could track the history of code going back several years, including comments to identify why decisions were made. Some people have identified how to migrate with their change sets intact (thanks Chris!) Ironically, the tool he refers to (Git-TF) was hosted on....you guessed it, CodePlex. CodePlex has also worked with GitHub and other providers for this transition.

Steven Black started using GitHub for his FoxPro code years ago - (here's a link to his recent set of FoxUnit changes). But what will this mean for a group project like VFPX? Will there be a single VFPX GitHub project? Is that really smart for a group of somewhat related projects that may or may not be updated?

Maybe it would be best for each project to separate out into its own GitHub project and maintain strong links. That offers a lot of benefit as GitHub offers a great way for everyone to contribute and link to each other. Maybe then the VFPX.org web site could then simply provide a better interface to finding those projects.

It's yet another evolution for disappearing Microsoft initiatives.


Saturday, March 04, 2017

FoxInCloud and Bootstrap

As someone who uses WetBoew in their public facing web sites, it was great to hear that FoxInCloud is supporting Bootstrap. (Bootstrap is the core foundation for the WetBoew initiative)

If someone is trying to move their FoxPro application without major rewrites into the web, FoxInCloud does appear to provide a great solution, especially for mobile. Their screen shots look very impressive.

One huge benefit of Bootstrap are a lot of the plugins such as DataTables (which makes Grids totally rock!)

Great job, Thierry!!

Saturday, February 25, 2017

A Developer's Life: Honing Your Writing

Developers hate documentation.

I don't write that as anything but a statement of fact. Documentation, once an idea has been put on paper or in writing, is instantly out of date. And if it's out of date, what's the point?

In fact, sometimes I think the only people who like documentation are those who:
a) are paid to write it (technical writers)
b) paid to prove it exists (legal) or
c) paid to show some form of output for a failed effort (managers)

Even online documentation is out of date. Going to the MSDN site for virtually any product now has a "Applies to version" because the functionality changes regularly and even then, you will always find an article that was written once as an example of how to do something right, that has been commented on to the point of how not to do something.

But now even worse, you find a link or a post you like. At the time, you wanted to quote it, maybe even copy it, but attribution should be enough with a link, right? But when you want to go back to it years later, it's gone, replaced by a lovely 404 message. (this is one of the reasons I LOVE that many FoxPro developers put their earlier papers online for easier access - some may be out of date but they are there)

Even with proper links, you have to find the date it was originally written. Sadly some writers or posts don't even bother with a date, leaving you to guess.

Thus, consider the popularity of the Wiki (wikis.com may have been for sale for years, but fox.wikis.com was updated on the 22nd of February - THANK YOU Steven Black.). Documentation that can be modified, rightly or wrongly, on an ongoing basis. It's updated, sometimes in small tidbits or in large swaths, carried out, no doubt, by those living at home with their parents in their pyjamas at night. I can say that, as I originally wrote the draft for this at 5am.

But even Wiki articles can be out of date. One of my clients, Government of Canada, have some great initiatives including their own internal wiki (GCPedia) (inaccessible outside the government network). But many of the articles are out of date. Google it and you'll see that many of the first page articles are from 6 years ago. As with many initiatives, the early enthusiasm gives way to ennui.

With one of our recent projects, which uses the GCPedia as its host for documentation, keeping it up to date is a constant activity. In a recent internal poll, one of the comments by our own developers was how out of date it was.

Everyone wants their work to be "evergreen", that term for pieces of work that stand the test of time. But is there ever such a piece of writing? I have a copy of "Outline of History" by HG Wells (two volumes). Originally written in 1920, you can only imagine how much presented in there was either a) outdated by the time it was printed or b) just plain wrong.

(as an aside, I often think about how NOT evergreen many podcasts are, including the FoxShow, which almost makes them just like bad writing. So while I haven't stopped producing shows, I'm trying to find ways to make them closer to evergreen)

This isn't to disparage those who write. In fact, it's meant to inspire. Why?

Coaches, mentors, spiritual leaders all lead their pupils in spoken mantras. This helps embolden, enthuse and even solidify their efforts. When someone wants to accomplish something, even just the act of saying it out loud makes a difference.

But just as much, putting pen to paper, or fingers to keyboard, or mouth to microphone, also serves a similar purpose. It solidifies a concept, even if it goes out of date the very next second. It forces you to THINK beyond just an idea.

I once (circa 1990) had an idea for a handheld device that would record a voice message and then send it on the network to another recipient, translating the voice to text (as much as that was possible back in 1990). It didn't need a keyboard because that would be in the way, although it did need buttons but the most important aspect was this communication piece. Sure, there were cell phones back then, but this would have been a device I would really like. I thought it was ingenious --- I even drew up a prototype and put an Apple logo on it, because after all, I was a person who bled in six colors and only they would be able to make such a device (ah! the naivety of youth). But I didn't take it further. I didn't think about the other aspects about it. My mistake.


Writing helps you think about the audience and fleshes out the concept, especially when you focus on ideas. It takes you down the rabbit hole and if you ever get to the point of being able to write streams of consciousness, helps you not lose any of those ideas. Coming back to older writing also helps you ensure you got the point across correctly.

I haven't posted in a while but I've been writing. I currently use 750 Words as my "sounding" board. It helps me solidify ideas but with some added bonuses. I also try to write 10 ideas a day, although I will say that the Idea Machine book hasn't really helped me about.

We have a book at home called More Political Babble and one of the parts that always makes me chuckle is a piece about  Newt Gingrich:

"When Gingrich was speaker of the House, Bob Dole was the Senate majority leader. And so Dole spent a lot of time listening to the speaker’s proposals. “Gingrich’s staff has these five file cabinets, four big ones and this little tiny one,” he told The New York Times. “Number one is ‘Newt’s ideas.’ Number two, ‘Newt’s ideas.’ Number three, number four, ‘Newt’s ideas.’ The little one is ‘Newt’s Good Ideas.’”" 

I take an idea and then try to see how it can be built. By writing about it :

a) how could I tell someone about it so they understand?
b) how can I write it so that it's actually feasible?
c) how can I ensure that it's deliverable?

By writing these items out, I improve, not just my writing, but also my ability to deliver on my ideas. Delivery isn't always about shipping a product - it can be about changing a point of view, shaping an hypothesis or validating an argument. In software development, all of those skills are needed.

So yes, I realize that many of the links in this article will be outdated at some point. Your production documentation may be outdated, especially if it's not online, but even if it IS online. There is still value in creating it provided you plan for it to be obsolete at some point:

1. Date your work. You don't want someone thinking it's current if it's not.

2. Realize it's dated. Realize that things will, in all likelihood, change.

3. Realize that not everything is known. Therefore, what you write may be right or it may be wrong.

What else can you write about as a developer? I like to write out our post mortems or retrospectives. It keeps me honest. We may continually to come back to wanting to do something that doesn't get done or try something and then decide it doesn't work. I like to create an entry in our Wiki the minute someone asks a question or has a problem, so we can come back to it and try and improve on it later. The writing may be short or long. It may even be wrong.

But most importantly, keep it around. There is nothing worse than losing writing.

There's an added trick you can do when you have written down all those ideas:

Condense a larger piece of writing into a smaller set. 

Think about your audience. No one wants to read a 750 word email - they want to read a three point Powerpoint or a five sentence email.  If you've written your longer piece, then coming up with your three or five points is a lot easier. Because you've thought of the issues, you've carried it through, you've worked out the kinks or at least identified them. Your condensed version will offer a lot more and may inspire more reading and writing. I thank Bill Jensen and Simpler Work for that little tidbit.

But the value in writing out your ideas, and honing that writing to get a point across, will always be useful, to developers, to writers, to teachers, to students, to managers, and sometimes, even just to YOU.

Tuesday, February 14, 2017

VFPX - Alive and kicking with new

UPDATE: VFPX is being moved to GitHub and its initial conversion looks well underway.

I find it interesting that Visual Studio is celebrating their 20th anniversary and the post even made mention of FoxPro (see the comments) and despite all of the growth, it's still a tool kept in some people's toolbar (even back as far as 1997).

But moreso, the open-source VFPX is more than 10 years old (I believe the official birthday would have been around June , 2016). Nowadays Microsoft is open-sourcing more of its underlying code. I'd like to think that if they had this attitude 10 years ago, VFP would have been open-sourced but that's doubtful. The proprietary VFP engine and concepts have made its way into countless Microsoft products.

I always think about open-source projects as a bit of leap-of-faith. That's because open-source projects aren't always like the public domain projects of yore. By their very nature, they rely on a group of people providing feedback and pushing forward from a version 0.1 all the way to full release cycles. That's not just open-source, of course - Microsoft is notorious for starting projects and then abandoning , sorry, folding them into newer technologies. I came across an older project of mine that used DDE, it made me think fondly of building interactive spreadsheets with Windows 2.0.

But even though Visual FoxPro is a defunct product from Microsoft, the VFPX project is still going strong with over 14 updated projects in the past year. These projects keep FoxPro applications able to use popular products and technologies.

One of the best things is that many of them provide these functionalities without relying on special DLLs or COM automation. Need to go beyond VFP's limited Excel output? consider the XLSXWorkbook project. Doing payment systems? Look at Stripe integration.

The great thing about VFPX is that many of the older projects are still getting updated or do their job exactly as they need to and aren't obsolete.

VFP and the FoxPro community has always been one of "if you need it and it's not there, build it and then share it". That attitude continues to this day.