And now for something completely different.

 

I'm pleased to announce that, in contrast to my many appearances at developer events over the years, I'll be speaking at the Conference on Precession and Ancient Knowledge (CPAK), Sept 30-Oct 2 in Palm Springs(Rancho Mirage), CA.

 

TL;DR – if you have any interest in ancient technologies like the Baghdad Battery and the Antikythera device, or in subjects like non-traditional Egyptology and the 10,000 year-old ruins of Gobekli Tepi in Turkey and throw a wrench into mainstream views of cultural evolution, read on.

 

I've attended CPAK in the past, and it's full of intriguing research and reports by some real characters, which I guess now includes me. :) But perhaps what attracts me most is this disclaimer on the conference's About page:

 

Warning: This conference may address untraditional viewpoints subject to prosecution by the paradigm police. If you work in an untenured position in academia or other learning institution where unorthodox thinking is discouraged we advise you to avoid this event.

 

For the curious, the origins of this conference and its subject matter starts back in the late 1800s, with one Swami Sri Yukteswar, who is known as the guru of Paramhansa Yogananda, author of Autobiography of a Yogi–yes, the book that Steve Jobs, among others, rave about. Sri Yukteswar wrote a short book called The Holy Science that, among other things clarified the ancient Vedic tradition of the "yugas" or cycles of time. Based on faulty calculations in that tradition, many believe that the world is heading into a 432,000 dark age within a cycles of millions of years (abandon all hope, ye who enter here). Yukteswar instead wrote that the cycle is more on the order of 24,000-26,000 years, and is related to the astronomical phenomenon known as the precession of the equinoxes (see Wikipedia). Accordingly, he pointed out that we today are in an ascending arc of an age of energy, which makes a lot of sense looking at the last couple hundred years. Yogananda made note of this in Autobiography of a Yogi (Chapter 16, read online here or here).

 

Based on Yukteswar's work as well as worldwide traditions about similar cycles–e.g. the Greek traditions of Golden, Silver, Bronze, and Iron ages–a number of historians, scientists, and other researchers have taken an active interest looking for evidence of the cycle within ancient sites and ancient knowledge (e.g. myths and legends). There have been general studies, such as Hamlet's Mill, The Yugas (the author of which is my next door neighbor) and Lost Star of Myth and Time (written by CPAK's organizer), and the DVD The Great Year (narrated by James Earl Jones).

 

There is also a host of more specific, ongoing research, such as the work of Boston University geologist Robert Schoch and Egyptologist John Anthony West, TV programs like The Pyramid Code (on Netflix), and more. I just recently finished reading two books by software engineer Laird Scranton that analyze ancient creation myths of both the Egyptians and a modern-day tribe in Mali called the Dogon, demonstrating that those myths clearly spell the atomic and subatomic theories of matter along with the fundamental tenants of modern string theory. Go figure.

 

Like I said, something completely different, and I'm looking forward to participating as a speaker this year. My topic is Participating in the Cycle of the Ages, Today. Should be fun!

 

Perhaps you might join us! Register at https://www.regonline.com/Register/Checkin.aspx?EventID=1810152.

 

CPAK-SpeakerPromo-Brockschmidt


I'm delighted to announce that Microsoft Virtual Academy has just posted an ~80 minutes couse (in nine segments) that I recorded with Jonathan Carter, Getting Started with Unit Testing for Cross-Platform Mobile Apps. This follows from the documentation I wrote on the subject for the taco.visualstudio.com earlier in the year, but is expanded to include both JavaScript and C# demonstrations.

The course is a great introduction to both the subject and to the type of content that Microsoft Virtual Academy has in general–all for free!


Yeah, it's been a while since I've posted anything, thanks to an intensive project in February and March, followed by a series of travel including //build, Xamarin Evolve, a graduation at Pacifica Graduate Institute, and a two-week road trip into eastern Oregon, among others.

Better late than never, though–specifically, the "intensive project" that I was on earlier in the year was MyDriving, which you can explore on https://azure.microsoft.com/en-us/campaigns/mydriving/.

This was a project that Scott Guthrie asked for leading up to //build. He wanted to see a real-world, comprehensive demonstration of an IoT scenario that involved mobile apps, Power BI, a rich Azure back end, and complete documentation including an ebook reference guide that would explain how everything worked. So we got a team together to pull this off in about 8 weeks, and my particular role was leading production of the docs and the ebook.

With the help of a number of other writers in my org, especially Dominic Betts, Alan Wills, and Seth Mannheim, we were able to produce what I think turned out to be a pretty good 141-page ref guide, which you can download directly from http://aka.ms/mydrivingdocs. I especially enjoyed the chapter on machine learning, which Alan write, because that's a space I wasn't familiar with. The same goes for the chapters on IoT from Dominic. I did the section on the mobile app and Azure App Service, and recruited a number of others for some of the other Azure topics. I also got to edit the whole thing multiple times, as is necessary when you're getting material from multiple writers.

All in all, it's quite interesting to see how many Azure services combine in the back end to make the system work. I hope you enjoy it too.

PS Right now I'm working on content related to DevOps for mobile apps. I have stuff on UI testing for Cordova apps using Appium that'll soon be on taco.visualstudio.com, and am working on a series of articles for MSDN Magazine that will roll out in August. Stay tuned!



Larry Conklin, author of the blog post at http://voixsecurity.blogspot.com/2015/12/privacy-breadcrumbs-and-personally.html, wrote me recently to let me know about this post in which picks up on my mention in Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition about obscuring my geolocation in a screenshot. The point of his post is that with all the other public information out there, it's not all that difficult to get a reasonably good bead on where I live.

I wrote him back, of course, with the note below (also in his blog comment), explaining that the public information isn't quite good enough:

What fun! I don’t mind at all being the subject of your blog, as obviously I put out a fair amount of personal information already. In my particular case, however, the home address that appears by the methods you outline provides my mailing address, but not the location of my physical house. In my community here we have a shared mailroom, which means that 200 residential addresses all start with the same street address. My house itself has a different address that’s used by only a few contractors and service providers. (I should also add that one of the other services came up with me living in Bellevue, WA, which hasn’t been true since 1993, meaning that its pulling from outdated public records. J)

Fortunately, what I have not shared is something like an aerial photo of my house location, because if I did, you’d be able to look around the location of my mailing address and find the house itself.

At the same time, if you drove into my community, you’d probably find a sufficient number of friendly people willing to point to the house especially if you had my name and claimed to be making a special delivery or something.

I should add that quite a few of my neighbors probably aren't entirely sure where our house is, exactly! :)


I just finished publishing a body of content on unit testing for JavaScript in the context of Apache Cordova, including both command-line and Visual Studio interfaces. I had a lot of fun learning about the subject and finding ways to communicate a number of concepts. I also found a direct example of a slight difference between JS runtimes that can bite you, but I'll leave that for the articles themselves.

You can find it all on http://taco.visualstudio.com/, the docs site for the Visual Studio Tools for Apache Cordova, under the "Test" node. Here are the individual topics:

There are two other topics in that node that I'll be revising and/or integrating into the stuff above: Test Apache Cordova apps with Karma and Jasmine and Test Apache Cordova apps with Chutzpah.

I'd love to know what you think, as this material is easily the basis for a video course with Microsoft Virtual Academy as well.

In January I'll start diving into UI testing for mobile–should be fun!


Microsoft's Developer Division just hosted its second Connect(); event, which I suspect many of you have been following on http://www.visualstudio.com/connect2015.

I got to be in the heart of things this year. I've been temporarily managing the Visual Studio Blog while Radhika Tadinada, the PM who owns it, is out on maternity leave until about March enjoying her adorable little baby girl. For Connect();, this meant two things. First was managing the content for the VS blog itself, which included working closely with John Montgomery on posts like his news/announcement rollup. Second was that I coordinated the efforts of all the other blogs that are represented on the header menu on the blog site…and that was quite a few of them!

Anyway, I compiled a list of all the blogs that went out yesterday for Connect(); and wanted to share that here.

.NET
Announcing .NET Core and ASP.NET 5 RC
Entity Framework 7 RC1 Available

App Insights and HockeyApp
Introducing Mobile DevOps with Visual Studio Team Services and HockeyApp
Deep Diagnostics for Web Apps with Application Insights
Azure Diagnostics Integration with Application Insights

Apps for Windows
Vungle SDK for Windows 10 Released
November improvements in Dev Center: submission, promotion and developer agreement
Windows Bridge for iOS: Where we are and where we are headed

Azure and Azure SDK
Azure: The cloud for any app and every developer
Public preview of Azure Service Fabric
Public preview of Azure DevTest Labs
Announcing the Azure SDK 2.8 for .NET

Brian Harry
News from Connect(); 2015

C++
Announcing the VS GDB Debugger extension

OfficeDev
Introducing the Microsoft Graph

Visual Studio
News and Announcements at Connect(); //2015
Node.js Tools 1.1 for Visual Studio Released
Announcing the Intune App SDK

Visual Studio Code
Announcing Visual Studio Code Beta

Web Development
Announcing ASP.NET 5 Release Candidate 1

Visual Studio ALM
Getting Started with DevTest Lab for Azure
MacinCloud Visual Studio Team Services Build and Improvements to iOS Build Support
Announcing Public Preview for Visual Studio Team Services Code Search
Announcing the new Release Management service in Visual Studio Team Services
Subversion integration with Visual Studio Team Services
Announcing Public Preview of Visual Studio Marketplace
Announcing easy to use browser-based exploratory testing for Visual Studio Team Services
Git Credential Manager for Mac and Linux
Test Results in Build

Xamarin (I didn't have anything to do with this one, but it's referenced from the VS blog, so I’m including here)
Introducing Xamarin 4



The other day an old co-worker from my days at Microsoft on the Oslo/M/Quadrant projects, asked if a college friend could pick my brain on being a content developer in advance of his upcoming interview at Microsoft for that role. I wrote back a lengthy reply (because it's fun for me to think about such things), and in the spirit of Scott Hanselman's Keys Left pricinple, I'm sharing all of that here.

To respond to the young man's question, I asked myself, what would I be looking for if I interviewed someone for the job? I had to admit that I've been through only one content-specific interview myself. It was just a couple of hours because I already had such a strong reputation. The interview was really more about getting to know people I’d be working with.

First, let me explain how I see the role of "content developer" vs. "programming writer." I personally like the idea of “content developer” much more because it opens itself to many kinds of content that aren’t just about writing: code, videos, presentations at conferences, improving answers on StackOverflow, etc.

I’ve seen too many people with the title of “writer” get stuck in the mindset that their job is to put words on a page, and that they measure success by how many words they write. A content developer, on the other hand, measures success in terms of effectiveness of communication—does the content I’ve produced help developers get to the needed information and answers quickly? And does it answer the questions they actually have, including one they’ve not identified yet because they’re still learning a technology?

Thinking this way, content development is an ongoing process just like software development. And just as with software, sometimes the right answer in that development is to cull, prune, and even wholesale delete large amounts of previous work because they’re obsolete, unhelpful, or otherwise don’t have much value.

Side note: It’s worth thinking about what this means in terms of metrics collected for content. Traditionally, people have worried about page views and time spent on page, but for developers, this doesn’t necessarily make sense. For developer documentation, the real question is whether they found their answer quickly, which means time spent on page is actually irrelevant. (That measure is really applicable only to sites that have on-page advertising, because more time means they can charge more for that advertising space!)

Next, I looked through the job listing itself (on the Microsoft Careers site) to see what skills it identifies for the role. Here are my thoughts on those:

  • “Enable the creation of amazing apps, innovative services, and creative experiences through the education of the developer ecosystem.” This tells you that the role is very much about education, not performance as an code-monkey. It’s about the ability to effectively and clearly communicate, so be prepared to demonstrate where you’ve had success in this way.
     
  • “It will be your job to learn about Microsoft platforms and technologies in order to teach devs…” I like to say that this role is all about suffering as much as possible in order to save many other developers from suffering. That is, I like to go through pain and anguish to figure out some difficult task because within Microsoft you have the luxury of then going to the engineering teams that create the stuff itself. Nobody on the outside—that is, the customers your serving—have this luxury. So you’re the bridge to take what they know and present it in a way that external people can most effectively utilize. A specific implication of this is that although engineering teams can afford to think in the silo of their particular domain (such as touch input), a content developer has to meaningfully relate those specifics to a much broader picture, such as “gaming apps” that happen to use touch input…and a whole lot of other stuff! So be prepared to demonstrate any experiences you’ve had in being that kind of a bridge, of taking specific details and putting them in a broader context.
     
  • “This role leverages your passion for teaching, writing, and coding.” And in that order! So be prepared to demonstrate that passion. I will add that one of the most important qualities to demonstrate—something I would certainly look for in a candidate—is empathy. You cannot be an effective teacher or writer if you don’t understand the people you’re trying to educate or communicate with. So how do you go about understanding that audience? Think about that and be ready to talk about it, and if people don’t bring up matters of empathy or knowing your customer, bring it into the conversation yourself. I, for one, like to go to developer conferences for this purpose. I also like to read other blogs, monitor questions on forums (and answer a lot of them!). And when I’m writing, I try to keep part of my awareness separate so it can immediately respond to my work as if I was an outside reader. In that way I’ve been able to anticipate questions that someone might have, and then answer them right away.
     
  • In fact, a short time later the description says, “You’ll walk in the shoes of your customers…” This is what empathy is all about!
     
  • “You’ll start by diving into code and collaborating with people across engineering, design, and marketing to understand the end to end story.” Again, big picture thinking is part of the equation here, so demonstrate that you have the ability to collect a lot of specifics and abstract them into the big picture. And clearly, the ability to collaborate is very important. You need to be able to relate well and work with people who aren’t like you, but just as essential to the shared goals. Be prepared to give examples of anything you’ve done along these lines, e.g. working effectively in teams. As a new college grad you won’t be expected to have done too much of this, but even to understand the need is super-valuable.
     
  • “Deliver code samples and technical assistance”: this is where the rubber meets the road, because in the end it is about delivering content. Be prepared to talk through how you’ve managed your own projects and assignments—how you’ve organized tasks, kept yourself to a schedule, and checked for quality.
     
  • “Engaging deeply with the community”: again, this is super-important for developing empathy.
     
  • “Excellent writing skills”: Do you know what the big secret is about writing? That it’s 80% editing. It’s one thing to put your thoughts down on a page. It’s another skill entirely to go through it several more time to make it better and better. If I were conducting an interview I’d actually quiz people on this, i.e. give them a piece of writing and have them think through how to improve it. I’d spend more time on this than I would on code, although I’d probably do the same thing with code (more on this in a moment).
     
  • “Graphics background a plus”: This isn’t so much about being a graphic designer as it is about the ability to express concepts through diagrams and illustrations. Take a look at the latest MSDN magazine article of mine for some examples. Or for a much bigger piece of work, download my free ebook Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition. I did all the illustrations and graphics for that one myself—what’s in the book is straight from my files.
     
  • It’s not mentioned in the job description, but if you’ve done any video production and editing, showing those projects would be a big plus. Take a look at the One Dev Minute video series (https://channel9.msdn.com/Blogs/One-Dev-Minute). These are really working to communicate as efficiently as possible—they have lots of studio and graphics support, but if you have anything to show that approaches thoughtful editing in the video space, that would certainly be a plus.

Now for a few other thoughts:

  • Don’t worry about tooling—you'll learn on the job in a matter of days. At best, familiarity with some industry standards like Markdown might help, but really, you’ll get all the specifics in the process of the job.
     
  • The ability to do on-the-spot coding exercises as is traditional with software development interviews is not all that important to content development. In content, your job is much more about using code as a means for explaining concepts, techniques, and so forth. It’s part of documentation. I would want to make sure a candidate could write good, clean, and well-documented code, especially where the commenting explains the bigger picture of how all the code works and how it might relate to code that uses it. In other words, being able to explain why you chose to do something the way you did is often more important than the simple how or what.
     
  • In fact, what I would potentially ask a candidate is to show me an application project they’ve worked on, walk me through what it does, give me an architectural overview, illustrate the relationships between the key pieces, and explain what pieces could be most useful to other developers writing similar applications, and what parts are more specific to the project itself.
     
  • Let me return to the question of editing. There are two main things you to consider, and perhaps also practice instead of trying to solve coding problems.

     

    • I highly recommend spending time with the existing content produced by the team you’re be interviewing with. For example, if someone was interviewing for the team I'm currently in, I'd want them to go through the topics on MSDN under Cross-Platform Development. Reviewing that material would familiarize you with the technical areas that my team's involved with, but more importantly, pick a few topics that you understand pretty well already and ask: how would I improve this content? And overall, could you think of ways to improve the whole table of contents? Does the ordering of Getting Started material make sense to you? If you were just starting out, would you find this content engaging and effective, or are there changes that might improve it. These are things that writers and content developers should have opinions about.
       
    • If I were doing an interview, instead of having you write code from scratch, I’d show you a few pieces of code and ask how you would improve them to make them more useful as samples or as documentation? (Samples are documentation.) I’ve seen plenty of crappy samples in my time, and could explain to you exactly why they are crappy as a sample (even if they are good code from an engineering standpoint). To that end, find some samples that are relevant to the team you're interested in (including ones they've produced), and study them. Do you think these are good samples? What about them works well as educational material? What about them can be improved and how would you make those improvements? It would probably be helpful to spend more time with one of the samples to the point where you can give an on-the-spot tutorial about how it all works, as I suggested above.

 

In the end, I think content development is a pretty cool career path. You get to be deeply involved in technology, but you don't get so buried in the details of creating it that you lose sight of how it relates to everything else. I, for one, thrive on seeing, understanding, and communicating those relationships, and enjoy serving other developers in this way. In fact, I'm more delighted with a clear, well-written explanation or a clear illustration about how a piece of code works than I am about getting that piece of code to work in the first place. That's why I've always gravitated to content and community work.

If you feel the same way, this is definitely a career path to consider, especially as content is increasingly seen today as one of the keys to technology adoption, which is especially important with startups and innovators.


It's been a few years since I've taken the time to write a fuller essay for my site, but I'm delighted to offer a new one. Comments are welcome with this post as I don't have comments enabled for the articles themselves.

The California Drought: A Problem of Consciousness? – A defense of my claim that "all problems in the world are ultimately problems of consciousness." It's easy to see this truth in matters of human interactions, but is it also true with impersonal factors like the weather and other natural events? And it ths claim defensible without resorting to metaphysical explanations? It is, because what makes such things a problem in the first place is that humans happen to be in the way of such events, and that placement is subject to human choice and thus a matter of consciousness. The very act of classifying a natural event as a problem in the first place is also itself an act of consciousness, because we could just as well classify such things as opportunities. September 2015