Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Citizen developer tools are not just for citizen developers!
SPSTwin Cities 4/14/2018
Level: 200 ||Track: Developer (The r...
Citizen developer tools are not
just for citizen developers!
Antti K. Koskela - 14.4.2018, SPSTC
@koskila | https://www.ko...
Who’s speaking?
• Antti K. Koskela, Escalation Engineer for
Valo Solutions
• From Finland, lived in USA in 2017, moved
to ...
Session
• The session will include a quick overview of the capabilities of
• Microsoft Flow
• SharePoint (both Modern and ...
Session: Structure
• A quick look into the bigger picture! (1/4)
• What’s a citizen developer?
• What does all this mean f...
Enter the Citizen Developers!
@koskila | https://www.koskila.net
What’s a “Citizen Developer”?
An end-user, who creates applications, usually without
programming anything themselves.
• “A...
An Epic Showdown
Devs vs Citizen Devs – who’s going to persevere?
@koskila | https://www.koskila.net
The typical Developer…
• Expensive
• Slow, obsolete from inception?
• Creates more bugs than
features
• Constrained by IT/...
…vs the Citizen Developer!
• Understands business
• Agile, can react to changes in
business immediately
• No code – no bug...
Citizen Developers == a mortal threat?
• “End of Software Development”
• “Citizen Developers are appearing at the workplac...
Citizen Developers == a mortal threat?
• Death of programming and obsoleteness of programmers (by
automation, citizen deve...
Citizen Developers == a mortal threat?
• “Low-code tools won’t be putting developers out of a job; on the
contrary, they h...
Citizen Developer tools for
“actual developers”
@koskila | https://www.koskila.net
Toolpack
• Microsoft Flow
• Built on top of Logic Apps
• Simple integration tool for “any white collar”
• Azure Logic Apps...
Advantages of Flow
• Easy-to-use, fairly well-tested integrations available out-of-the-box
• Run history is saved – you ca...
Azure Functions considerations
• Consumption plan is practically free for small usage
• 1 million executions and 400 000 G...
Azure Cognitive Services -Text Analytics API
• Detect sentiment, key phrases, and language from your text
• Powered by Mic...
SharePoint: Modern
• Finally, SharePoint that looks (kind of) good out-of-the-box
• It’s even responsive 
• “Back to basi...
SharePoint: Classic
• Classic SharePoint is not dead either!
• If something works with Modern, it’ll usually work with Cla...
How does this relate to real-life
business problems?
Case studies and demos
@koskila | https://www.koskila.net
Our demos today
1. Fancy: Using Machine Learning to achieve otherwise
difficult goals
2. Practical: Content mirroring in c...
Case 1: “The Fancy”
Automatic MetadataTagging Using Azure Cognitive Services
@koskila | https://www.koskila.net
The Problem
• The amount of data is surging (~90% of the data in the world has
been created in the last 2 years)
• To ensu...
The Solution
• Using ModernTeam Sites in SharePoint for document storage
enables collaboration
• SharePoint Search is dece...
Our StackToday (1/2)
• Modern SharePointTeam Sites
• Document Library used as a Data Source
• The only End-User Facing GUI...
Our StackToday (2/2)
• The whole stack is super cheap!
• SharePointOnline included in most licenses anyway, standalone
$5/...
How?
• A Flow attached to Document
Library will call theAzure
Function that’ll do the heavy
lifting
• A simple HTTP reques...
How?
• An Azure Function will
run, extract text,
analyze it using Azure
Cognitive Services,
and then write the
info back t...
Case 1: Resources
• Case description: https://www.koskila.net/2018/03/20/resolving-
managed-metadata-madness-good-enough-t...
Case 2: “The Practical”
Mirroring content between Classic SharePoint sites
@koskila | https://www.koskila.net
The Problem
• A lot of organizations will live with Classic SharePoint for years – it’s
not dead, and we’ll need to enhanc...
The Solution
• Classic SharePoint publishing sites
• Flow for orchestration and copying everything we can from site A to
s...
@koskila | https://www.koskila.net
Our StackToday
• Microsoft Flow
• For orchestration
• An Azure function
• Fixes the layout, copies the fields that can’t b...
Case 2: Resources
• Code: https://github.com/koskila/CitizenDeveloperToolsDemos
• Video: https://youtu.be/fe_NiTjmL58
@kos...
Case 2: Issues
• Flow’s support for dynamic values needs to be better
• Still a lot of custom development required
• Confi...
Case 3: “The Hacky”
The easy but geeky way to subscribe to any push notifications
@koskila | https://www.koskila.net
The Problem
• You want to subscribe to push notifications from a workload, that
doesn’t support them.
• You often have the...
The Solution
• You can use Microsoft Flow to create a simple “API” to push
notifications to your phone
• By creating a HTT...
Our StackToday
• SharePoint
• Classic or Modern, doesn’t matter – anything that supports webhooks
• Chrome SP Editor
• A t...
Case 3, Demo 1:
• Get theAzure FunctionURL
• Hook it into a SharePoint list
• Add an item to the list
• Check out the noti...
Case 3: Resources
• Video: https://youtu.be/DaX6V_fFqy8
• Code: https://github.com/koskila/CitizenDeveloperToolsDemos
@kos...
Further Considerations
@koskila | https://www.koskila.net
Flow Custom Connectors
• Don’t want to configure multiple HTTP –requests with difficult
parameters after one another?You c...
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Conclusions & Final words
@koskila | https://www.koskila.net
Conclusions
• Citizen Development is not a threat, it’s an ongoing process and an
opportunity for developers – embrace it!...
Caveats
• The stack’s evolving – no telling how long this will be valid or required
• You could replace text extraction wi...
What’s next?
• Microsoft Flow is getting more Managed Metadata capabilities
• Maybe we won’t need the OfficeDev PnP / CSOM...
Resources & Further reading
• Documentation:
• https://azure.microsoft.com/en-gb/campaigns/developer-guide/
• Slides avail...
Feedback, Ideas,
Questions? Let’s connect!
• antti@valointranet.com
• @koskila
• www.koskila.net
• https://github.com/kosk...
Thank you
#SPSTC
sponsors!
Upcoming SlideShare
Loading in …5
×

Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018) by Antti K. Koskela

123 views

Published on

So, the citizen developers have all the cool tools, and those that actually code for a living are left with legacy stuff? Not so fast! The same tools that Microsoft is targeting for citizen developers make development easier, faster and cheaper for everyone!

This session combines tools such as Flow, Azure Cognitive Services and Azure Functions with some actual simple development work to provide highly customized, Machine Learning powered analysis workflow for the newly baked Modern Team Sites in SharePoint Online. This demo-heavy session will look at real business scenarios, and how we can solve them using citizen developer tools and some code (Because we’re developers after all, right?)

After this session, you'll know how to create rich and customized business automation processes that use the latest tools offered to us by Microsoft.

See the whole description here:
https://www.koskila.net/2018/04/09/speaking-at-sps-twin-cities-sps-tc/

And my experiences from the event here:
https://www.koskila.net/2018/04/27/my-sps-tc-session-citizen-developer-tools-are-not-just-for-citizen-developers/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018) by Antti K. Koskela

  1. 1. Citizen developer tools are not just for citizen developers! SPSTwin Cities 4/14/2018 Level: 200 ||Track: Developer (The rest of my slides will have less text, I promise!) So, the citizen developers have all the cool tools, and those that actually code for a living are left with legacy stuff? Not so fast!The same tools that Microsoft is targeting for citizen developers make development easier, faster and cheaper for everyone! This session combines tools such as Flow, Azure Cognitive Services and Azure Functions with some actual simple development work to provide highly customized, Machine Learning powered analysis workflow for the newly baked ModernTeam Sites in SharePoint Online.This demo-heavy session will look at real business scenarios, and how we can solve them using citizen developer tools and some code (Because we’re developers after all, right?) After this session you'll know how to create rich and customized business automation processes that use the latest tools offered to us by Microsoft. @koskila | https://www.koskila.net
  2. 2. Citizen developer tools are not just for citizen developers! Antti K. Koskela - 14.4.2018, SPSTC @koskila | https://www.koskila.net
  3. 3. Who’s speaking? • Antti K. Koskela, Escalation Engineer for Valo Solutions • From Finland, lived in USA in 2017, moved to Montreal 2018. • Background in Fintech + accounting • A developer since 2004. • Bending and twisting SharePoint into different shapes since MOSS. • Blogging at https://www.koskila.net @koskila | https://www.koskila.net
  4. 4. Session • The session will include a quick overview of the capabilities of • Microsoft Flow • SharePoint (both Modern and Classic!) • Microsoft AzureCognitive ServicesTextAnalyticsAPI • Azure Functions (coupled with some helpful libraries). • There’s going to be code. @koskila | https://www.koskila.net
  5. 5. Session: Structure • A quick look into the bigger picture! (1/4) • What’s a citizen developer? • What does all this mean for a developer? • And: Are we all going to be unemployed in a couple of years? • A word or two about the tools (1/4) • Demos (1/2) @koskila | https://www.koskila.net
  6. 6. Enter the Citizen Developers! @koskila | https://www.koskila.net
  7. 7. What’s a “Citizen Developer”? An end-user, who creates applications, usually without programming anything themselves. • “A citizen developer is a user who creates new business applications for consumption by others using development and runtime environments sanctioned by corporate IT -- can build departmental, enterprise and even public applications using shared services, 4GL-style development platforms and cloud computing services.” • Gartner, 2009 @koskila | https://www.koskila.net
  8. 8. An Epic Showdown Devs vs Citizen Devs – who’s going to persevere? @koskila | https://www.koskila.net
  9. 9. The typical Developer… • Expensive • Slow, obsolete from inception? • Creates more bugs than features • Constrained by IT/vendor (vendor-lock!) • Doesn’t understand business @koskila | https://www.koskila.net
  10. 10. …vs the Citizen Developer! • Understands business • Agile, can react to changes in business immediately • No code – no bugs? • Limited only by their imagination (and tools…) • While a developer still waits for Visual Studio to start, a Citizen Developer has already hacked together an integration between 13 different systems using Flow. @koskila | https://www.koskila.net
  11. 11. Citizen Developers == a mortal threat? • “End of Software Development” • “Citizen Developers are appearing at the workplaces” • Tietoviikko (The Knowledge Weekly), 2018 • “Software Developers Will Become Obsolete” • Brain Food, 2016 • “Software engineers will be obsolete by 2060” • DanAuerbach, 2015 • “A new technology [5th GL] in software development [gives us] the ability to automate fully the development process from design to installation. - - Programming is better done by a machine than a human.“ • In “Can fifth-generation software replace fallible programmers?”, Philips, R, Computerworld, v 18, n 29, 1D/27-30, 16 July 1984 • “4th Generation Languages make programmers largely unneeded” • In “Applications Development Without Programmers”, James Martin, 1982 @koskila | https://www.koskila.net
  12. 12. Citizen Developers == a mortal threat? • Death of programming and obsoleteness of programmers (by automation, citizen developers, higher level languages, AI) has been proposed at least from the 80s! • Excel is the biggest software development environment (and the most dangerous one) anyway. @koskila | https://www.koskila.net
  13. 13. Citizen Developers == a mortal threat? • “Low-code tools won’t be putting developers out of a job; on the contrary, they have the potential to help developers do better work.” • -Mike Fitzmaurize,Vice President ofWorkflowTechnology for Nintex, 2017 • Citizen Developer tools are not useful just for Citizen Developers • Tools like Flow make the lives of “actual” developers easier, too! • And when the tools won’t do the trick anymore, a developer will get to (have to) export them to “real” development tools and fix them. @koskila | https://www.koskila.net
  14. 14. Citizen Developer tools for “actual developers” @koskila | https://www.koskila.net
  15. 15. Toolpack • Microsoft Flow • Built on top of Logic Apps • Simple integration tool for “any white collar” • Azure Logic Apps • More hardcore integration tool – a code view available • Flows can be exported to be “full-fledged” logic apps • Azure Functions & AzureApp Service WebJobs • Code-first integration services (and much more!) • Azure Functions are serverless – and easy to attach to Flow/Logic Apps! • Webjobs are a more classic solution – console apps you can run in an App Service • … and SharePoint  @koskila | https://www.koskila.net Great resource: https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow- webjobs
  16. 16. Advantages of Flow • Easy-to-use, fairly well-tested integrations available out-of-the-box • Run history is saved – you can always go back in time and rerun something that didn’t work. Great for debugging and iterating! • Easy to extend • Custom connectors • HTTP requests to send and receive data from almost any source @koskila | https://www.koskila.net
  17. 17. Azure Functions considerations • Consumption plan is practically free for small usage • 1 million executions and 400 000 GB-s time/transfer are FREE • After that €0.000014/GB-s & €0.169 per million executions • Maximum runtime of 10 minutes! • Scalability’s great (even though it still loses to AWS Lambda Functions) • Running a function in an App Service • It isn’t serverless • Max runtime unspecified – but long! • Azure Function can be durable (stateful) • https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions- overview @koskila | https://www.koskila.net
  18. 18. Azure Cognitive Services -Text Analytics API • Detect sentiment, key phrases, and language from your text • Powered by MicrosoftCognitive Services, machine learning and AI algorithms in the cloud. • DetectTopics used to exist – it was great – but we’ll be using key phrases today instead @koskila | https://www.koskila.net Learn more: https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/ Also noteworthy: MachineTranslation in SharePoint, and BingTranslator (used in Facebook), are powered by Cognitive Services
  19. 19. SharePoint: Modern • Finally, SharePoint that looks (kind of) good out-of-the-box • It’s even responsive  • “Back to basics” • Only does what SharePoint does well • Excellent file storage (used byTeams & Groups), decent web interface, and a mobile app • Uses other services for everything it’s bad at: • Calendars from Exchange, tasks from Planner, IM and discussions viaTeams orYammer • Webhooks + SPFx = decent extensibility @koskila | https://www.koskila.net
  20. 20. SharePoint: Classic • Classic SharePoint is not dead either! • If something works with Modern, it’ll usually work with Classic, too – just requires some sweat, tears and clever workarounds • Publishing infrastructure makes things a bit complicated: • Bad/no support for fields like “Page Layout” or “Publishing Page Content” @koskila | https://www.koskila.net
  21. 21. How does this relate to real-life business problems? Case studies and demos @koskila | https://www.koskila.net
  22. 22. Our demos today 1. Fancy: Using Machine Learning to achieve otherwise difficult goals 2. Practical: Content mirroring in classic SharePoint 3. Hacky: Playing around with push notifications and Flow- as-an-API @koskila | https://www.koskila.net
  23. 23. Case 1: “The Fancy” Automatic MetadataTagging Using Azure Cognitive Services @koskila | https://www.koskila.net
  24. 24. The Problem • The amount of data is surging (~90% of the data in the world has been created in the last 2 years) • To ensure that data in organizations is useful, it needs to be found easily • A great “Enterprise-y” solution has been metadata tagging! • However, users generally hate doing that manually • Automatic solutions are either cumbersome to maintain, expensive to develop, or both • Many required metadata fields will cause users to migrate to shadow IT solutions (like DropBox) @koskila | https://www.koskila.net
  25. 25. The Solution • Using ModernTeam Sites in SharePoint for document storage enables collaboration • SharePoint Search is decent, but thorough metadata tagging makes it a lot more useful • UsingAzure Cognitive Services we can fill the metadata fields automatically – without any user interaction at all! • Content will be found and users will be happy  @koskila | https://www.koskila.net
  26. 26. Our StackToday (1/2) • Modern SharePointTeam Sites • Document Library used as a Data Source • The only End-User Facing GUI • Microsoft Flow • Launches via webhook, calls an Azure Function, finally sends a notification • Azure Function • Contains the actual program logic • Azure Cognitive Services • TextAPI used to analyze text for Key Phrases @koskila | https://www.koskila.net
  27. 27. Our StackToday (2/2) • The whole stack is super cheap! • SharePointOnline included in most licenses anyway, standalone $5/user/mo (including 1Tb of OneDrive!) • Cognitive Services free (for a small monthly quota – commercial plans starting from ~$70/mo) • Azure Functions billed per usage, my monthly cost for my demos has been $0.02 • Flow free for personal, basic use @koskila | https://www.koskila.net
  28. 28. How? • A Flow attached to Document Library will call theAzure Function that’ll do the heavy lifting • A simple HTTP request to Azure Function – could create a custom connector, too! • Finally, notifies admin of the execution and the creator of the file. @koskila | https://www.koskila.net
  29. 29. How? • An Azure Function will run, extract text, analyze it using Azure Cognitive Services, and then write the info back to SharePointOnline @koskila | https://www.koskila.net
  30. 30. Case 1: Resources • Case description: https://www.koskila.net/2018/03/20/resolving- managed-metadata-madness-good-enough-to-win-a-hackathon/ • Video of 3 different cases: https://youtu.be/G0kESOlBBjk?t=109 • Code: https://github.com/koskila/KeyphraseExtraction @koskila | https://www.koskila.net
  31. 31. Case 2: “The Practical” Mirroring content between Classic SharePoint sites @koskila | https://www.koskila.net
  32. 32. The Problem • A lot of organizations will live with Classic SharePoint for years – it’s not dead, and we’ll need to enhance and maintain those sites. • Often there’s a need to replicate or mirror content between sites, but out-of-the-boxSharePoint offers little to help automate this.. • Most of the intranets seem to use publishing infrastructure – and that complicates the solution even more! @koskila | https://www.koskila.net
  33. 33. The Solution • Classic SharePoint publishing sites • Flow for orchestration and copying everything we can from site A to site B • Using an Azure function to “patch the holes” • Page Layout is broken by default • Publishing Page Content is not copied @koskila | https://www.koskila.net
  34. 34. @koskila | https://www.koskila.net
  35. 35. Our StackToday • Microsoft Flow • For orchestration • An Azure function • Fixes the layout, copies the fields that can’t be copied with Flow • 2 Classic SharePoint Site( Collection)s • As the GUI & CMS @koskila | https://www.koskila.net
  36. 36. Case 2: Resources • Code: https://github.com/koskila/CitizenDeveloperToolsDemos • Video: https://youtu.be/fe_NiTjmL58 @koskila | https://www.koskila.net
  37. 37. Case 2: Issues • Flow’s support for dynamic values needs to be better • Still a lot of custom development required • Configuration overhead (hooking the Flows to lists – or you could use a model, where you catch all the new items in the whole site collection at once?) @koskila | https://www.koskila.net
  38. 38. Case 3: “The Hacky” The easy but geeky way to subscribe to any push notifications @koskila | https://www.koskila.net
  39. 39. The Problem • You want to subscribe to push notifications from a workload, that doesn’t support them. • You often have the option to just send a notification email – but there’s so much email already! • You just want to notify yourself, so using a Push Notification Hub would be the overkill of the lifetime @koskila | https://www.koskila.net
  40. 40. The Solution • You can use Microsoft Flow to create a simple “API” to push notifications to your phone • By creating a HTTP POST RequestTrigger, you can define the schema of the payload, and use the properties for a push notification • It’s hacky – but a really simple way to just notify yourself, and get rid of the email notifications  @koskila | https://www.koskila.net
  41. 41. Our StackToday • SharePoint • Classic or Modern, doesn’t matter – anything that supports webhooks • Chrome SP Editor • A tool to add the webhook, you won’t need PowerShell! • Azure function • Receives the payload from the webhook, modifies the notification and sends it to the ”API” • Microsoft Flow • Basically, a personal ”notification API” @koskila | https://www.koskila.net
  42. 42. Case 3, Demo 1: • Get theAzure FunctionURL • Hook it into a SharePoint list • Add an item to the list • Check out the notification  @koskila | https://www.koskila.net
  43. 43. Case 3: Resources • Video: https://youtu.be/DaX6V_fFqy8 • Code: https://github.com/koskila/CitizenDeveloperToolsDemos @koskila | https://www.koskila.net
  44. 44. Further Considerations @koskila | https://www.koskila.net
  45. 45. Flow Custom Connectors • Don’t want to configure multiple HTTP –requests with difficult parameters after one another?You can automate some of that with custom connectors! • Custom Connectors can be shared between teams, so if you have a great API you want to publish to your colleagues, it’s fairly easy to share • They also look fancy, and (arguably) make your flows more readable! @koskila | https://www.koskila.net
  46. 46. Flow Custom Connectors @koskila | https://www.koskila.net
  47. 47. Flow Custom Connectors @koskila | https://www.koskila.net
  48. 48. Flow Custom Connectors @koskila | https://www.koskila.net
  49. 49. Flow Custom Connectors @koskila | https://www.koskila.net
  50. 50. Flow Custom Connectors @koskila | https://www.koskila.net
  51. 51. Flow Custom Connectors @koskila | https://www.koskila.net
  52. 52. Flow Custom Connectors @koskila | https://www.koskila.net
  53. 53. Flow Custom Connectors @koskila | https://www.koskila.net
  54. 54. Flow Custom Connectors @koskila | https://www.koskila.net
  55. 55. Conclusions & Final words @koskila | https://www.koskila.net
  56. 56. Conclusions • Citizen Development is not a threat, it’s an ongoing process and an opportunity for developers – embrace it! • Flow = great for orchestration (with caution, even for complex, customized workloads) • Azure Functions = code-first integrations and so much more! • Demos: • 1: Filling ML-powered taxonomy automatically for documents uploaded to SharePoint = not a problem! • 2: Content mirroring, even between classic publishing sites = not a problem! • 3: Getting push notifications (instead of emails) = easy @koskila | https://www.koskila.net
  57. 57. Caveats • The stack’s evolving – no telling how long this will be valid or required • You could replace text extraction with Azure OCR – but last time I tried, the custom library worked better. • TextAnalysis is interesting – sometimes it works better, sometimes it’s not that accurate! • For shorter documents, it often doesn’t work well @koskila | https://www.koskila.net
  58. 58. What’s next? • Microsoft Flow is getting more Managed Metadata capabilities • Maybe we won’t need the OfficeDev PnP / CSOM library to write to the document library soon? • (Currently, can’t add new items via PowerApps / Flow: https://techcommunity.microsoft.com/t5/PowerApps-Flow/Set-values-for-Managed- Metadata-aka-Taxonomy-columns-in/td-p/129888) • Azure Functions can now be ran in user context • With Flow this is quite finicky!Couldn’t get it to work here – passing cookies between HTTP actions is forbidden. • See: https://powerusers.microsoft.com/t5/General-Flow-Discussion/Passing-Cookies- Between-HTTP-Actions/td-p/69761/page/2 • See if you can figure it out?: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web- parts/guidance/connect-to-api-secured-with-aad @koskila | https://www.koskila.net
  59. 59. Resources & Further reading • Documentation: • https://azure.microsoft.com/en-gb/campaigns/developer-guide/ • Slides available: • Coming after the event! • Code available: • https://github.com/koskila/KeyphraseExtraction • https://github.com/koskila/CitizenDeveloperToolsDemos • Descriptions of the cases: • Case 1: https://www.koskila.net/2018/03/20/resolving-managed-metadata- madness-good-enough-to-win-a-hackathon/ @koskila | https://www.koskila.net
  60. 60. Feedback, Ideas, Questions? Let’s connect! • antti@valointranet.com • @koskila • www.koskila.net • https://github.com/koskila • https://www.linkedin.com/in/koski la/ @koskila | https://www.koskila.net
  61. 61. Thank you #SPSTC sponsors!

×