The document discusses building ecosystems that empower users through hackable platforms and opinionated software. It outlines two approaches: 1) building opinionated software or 2) building a platform for users to hack on through APIs and sandboxes. Well-known examples that take approach 1 include Apple, Chrome/Firefox, Android, and WordPress. The document then discusses how Atlassian takes approach 2 by starting with plugin frameworks, exposing REST APIs, and fostering a community for developers to build and share plugins.
Wil jij weten hoe je slimmer en efficiënter kan werken? Als projectmanager binnen MediaCT is het mijn taak (en zoektocht) om zo slim mogelijk te werken. Niet alleen voor mijzelf, maar ook voor de mensen waarmee ik werk.
De afgelopen jaren ben ik regelmatig geconfronteerd met overstromende mailboxen en takenlijsten. Het verliezen van grip op wat moet gebeuren en wanneer. Last van stress en teveel werken. Voor velen zijn dit herkenbare situaties en problemen. Deze presentatie biedt geen definitieve oplossing, maar wel tips en trucs om slimmer te kunnen werken. Zelfbeheersing door dagelijkse processen te structureren. Hoe pak je dat aan, hoe kun je ermee beginnen en waar moet je op letten.
Termen en tools als Getting Things Done, Het Nieuwe Werken, To-do managers, Text Expander en Evernote zullen de revue passeren. Wees erbij, leer slimmer werken en creëer rust!
Hivos and Kennisland co-operate in organizing the Wicked Series. In this series the objective is to learn more about the complex dynamics of wicked problems by generating new insights derived from innovatives strategies and approaches that are currently deployed and experimented with in the context of wicked problems.
The Wicked Notes are a direct knowledge product of the Wicked Series and reflect on the ideas and findings generated by the members of this new network during the series.
The Wicked Notes will eventually be part of a Wicked Publication, co-created by Hivos, Kennisland and the Wicked-members to share insights and ideas on the dynamics of wicked problems.
http://www.kennisland.nl/filter/projecten/the-wicked-series
The future of Facebook fundraising - IoF National Convention 2012Jonathan Waddingham
Facebook is the world's largest social network and charities are keen to create communities and engage with supporters there, yet few are using any of Facebook's tools to raise any money effectively. Based on data from Facebook and JustGiving, we show you how to prompt donors to share their donations and the pound value of a Facebook share compared to other social networks. You'll also hear Facebook's own advice to charities on using the platform, and how a charity has successfully done so.
Wil jij weten hoe je slimmer en efficiënter kan werken? Als projectmanager binnen MediaCT is het mijn taak (en zoektocht) om zo slim mogelijk te werken. Niet alleen voor mijzelf, maar ook voor de mensen waarmee ik werk.
De afgelopen jaren ben ik regelmatig geconfronteerd met overstromende mailboxen en takenlijsten. Het verliezen van grip op wat moet gebeuren en wanneer. Last van stress en teveel werken. Voor velen zijn dit herkenbare situaties en problemen. Deze presentatie biedt geen definitieve oplossing, maar wel tips en trucs om slimmer te kunnen werken. Zelfbeheersing door dagelijkse processen te structureren. Hoe pak je dat aan, hoe kun je ermee beginnen en waar moet je op letten.
Termen en tools als Getting Things Done, Het Nieuwe Werken, To-do managers, Text Expander en Evernote zullen de revue passeren. Wees erbij, leer slimmer werken en creëer rust!
Hivos and Kennisland co-operate in organizing the Wicked Series. In this series the objective is to learn more about the complex dynamics of wicked problems by generating new insights derived from innovatives strategies and approaches that are currently deployed and experimented with in the context of wicked problems.
The Wicked Notes are a direct knowledge product of the Wicked Series and reflect on the ideas and findings generated by the members of this new network during the series.
The Wicked Notes will eventually be part of a Wicked Publication, co-created by Hivos, Kennisland and the Wicked-members to share insights and ideas on the dynamics of wicked problems.
http://www.kennisland.nl/filter/projecten/the-wicked-series
The future of Facebook fundraising - IoF National Convention 2012Jonathan Waddingham
Facebook is the world's largest social network and charities are keen to create communities and engage with supporters there, yet few are using any of Facebook's tools to raise any money effectively. Based on data from Facebook and JustGiving, we show you how to prompt donors to share their donations and the pound value of a Facebook share compared to other social networks. You'll also hear Facebook's own advice to charities on using the platform, and how a charity has successfully done so.
The story of how we leveraged a number of agile practices and lived the agile principles to turn a project on the edge of disaster into a resounding success, delivering 46% more functionality than planned.
An approach towards a theoretical understanding of the avatar phenomenon, discussing avatars as 1) visual articulations within public spheres, 2) interactive actants and 3) hybrid actors.
¿Qué es la información científica?
¿Por qué hacer información científica?
¿Qué implica investigar?
¿Qué hacer con la información científica?
¿Qué es hacer ciencia para el investigador?
In today’s age, it is important to have a basic understanding of computer programming. Although not everyone will become a computer programmer as a result, it is helpful these days to understand how computers and various software applications run code behind the scenes; plus, troubleshooting esoteric messages becomes much easier with some computer programming essentials under your belt. Without a doubt, it can be difficult to teach coding skills, but if fun and engaging tools are introduced it won’t be too bad. Thinking like a programmer does involve problem solving, but it can enhance creative confidence and inventive learning. In this webinar:
• Learn the basics of some visual programming languages like Scratch, Hopscotch, App Inventor, Raptor and others.
• Understand basic code syntax to gain important mathematical, computational, and creative thinking concepts through playful learning!
• Discover alternative tools and applications to give people practice programming while having fun!
• Gain other programming ideas, computing devices, and apps to help children & young adults thrive in a world based on technology.
Madris Duric (HU), Koning Jasper en Hay Kranen (VPRO) en ik waren afgelopen maand in Austin, TX, USA, voor het SXSW-festival, en vertellen daarover
Vrijdag 6 april een presentatie bij de VPRO, en woensdag 11 april op de Uithof, Utrecht (FEM - 2.F1)
The story of how we leveraged a number of agile practices and lived the agile principles to turn a project on the edge of disaster into a resounding success, delivering 46% more functionality than planned.
An approach towards a theoretical understanding of the avatar phenomenon, discussing avatars as 1) visual articulations within public spheres, 2) interactive actants and 3) hybrid actors.
¿Qué es la información científica?
¿Por qué hacer información científica?
¿Qué implica investigar?
¿Qué hacer con la información científica?
¿Qué es hacer ciencia para el investigador?
In today’s age, it is important to have a basic understanding of computer programming. Although not everyone will become a computer programmer as a result, it is helpful these days to understand how computers and various software applications run code behind the scenes; plus, troubleshooting esoteric messages becomes much easier with some computer programming essentials under your belt. Without a doubt, it can be difficult to teach coding skills, but if fun and engaging tools are introduced it won’t be too bad. Thinking like a programmer does involve problem solving, but it can enhance creative confidence and inventive learning. In this webinar:
• Learn the basics of some visual programming languages like Scratch, Hopscotch, App Inventor, Raptor and others.
• Understand basic code syntax to gain important mathematical, computational, and creative thinking concepts through playful learning!
• Discover alternative tools and applications to give people practice programming while having fun!
• Gain other programming ideas, computing devices, and apps to help children & young adults thrive in a world based on technology.
Madris Duric (HU), Koning Jasper en Hay Kranen (VPRO) en ik waren afgelopen maand in Austin, TX, USA, voor het SXSW-festival, en vertellen daarover
Vrijdag 6 april een presentatie bij de VPRO, en woensdag 11 april op de Uithof, Utrecht (FEM - 2.F1)
If you're new to prototyping or wireframing then this presentation is for you. Attendees will gain an understanding of prototyping and some of the different tools available.
We will cover 3 main topics:
1. Why do we make prototypes?
2. The prototyping process
3. Tools available for making prototypes
Students will gain an understading of how the different tools available can be combined to produce meaningful results to aid with iterative development. Starting at the lo-fi end with pen and paper (it's important!), the class will move on to lean, web based tools (popapp.in, moqups.com and appgyver.com).
The fundamentals covered in this presentation also prove useful for dealing with developers and agile teams.
My presentation deck for Ohio State's College of Engineering, Human Factors and Ergonomics, ISE5640 Class. One of the class project options is to prototype an app concept, talking with users/stakeholders, iterating on that feedback etc.
Maker Science with Arduino and SparkFun Electronics @NSTA14 BostonBrian Huang
Learn how to integrate Arduino, microcontrollers, programming, and electronics into the K-12 classroom within your science class with SparkFun. We offer a wide range of free tutorials, project ideas, and resources on our site: learn.sparkfun.com as well as several classes and workshops throughout the country!
Web is now visible everywhere. It's highest time to learn webdevelopment! Know why it's great branch of IT, what it's made of and what tasks are waiting the for today's web developers.
Learn the HTML, JS and CSS from basics. Do not read HTML courses written 10 years ago.
Want to do backend, but still wondering whether to choose PHP, Ruby, Python, nodeJS ? No fear! We'll try to show pros & cons of every language AND also give a short guide how to learn them quickly.
Original presentation: http://akai.org.pl/slides/webstarter/
LESSON 1: INTRODUCTION TO PYTHON, VARIABLES, DNA CODING, AI
Introduction to Python, how to download (Python 3), Create your own Chat Bot. Introducing variables, sequence, programs, Alan Turing and Artificial Intelligence. Big ideas to discuss: DNA Coding and Intelligent design. Create apps which include the use of random number and item generation. Suggested videos on ‘Introducing Python’ and History of Computing. Learn about Mathematical and comparison operators and the importance of indentation in Python. Includes a suggested videos, ‘Big ideas’ discussion, and HW/research projects section.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Hello... My name is Rich Manalang and I’m your lunch time entertainment today. Everyone having a good conference so far?\n\nCool. I want to spend the next hour talking about something that many of us who build products don’t often do... and that is, build ecosystems inside your product that caters to hackers.\n\nAnd, I use the term “hackers” loosely in this context. Hackers tend to have a bad rap, but in recent years, I think it’s become a cool thing to be a hacker. Wouldn’t you agree?\n
... and frankly, Hackers are people too. Smart people who are usually highly opinionated, motivated to change things (not always with bad intentions) -- look at these people... do they look like they can cause harm, and generally, these are the people you want to be around in the context of writing software.\n
So... I’m a self-proclaimed hacker...\n
And so are you. You don’t need to know l33t speak or even know what l33t speak is. If you’ve ever tinkered with software (and frankly, anything), you’re a hacker. In different communities, you might be known as a maker, a craftsman, a hobbyist... for the next hour let’s just say you’re a hacker.\n
As I said before, my name is Rich Manalang. Find me on Twitter as @rmanalan\n
I’m here via my employer Atlassian where I spend my days trying to improve our dev experience to hackers like you!\n
Let’s start by looking at how most of us build software. \n\nFirst someone comes up with an idea. Then, they prototype it. Iterate several times until it’s right, then code it. Eventually you ship. Shipping is the best thing in this whole process. Then you do it all over again.\n\nThe unfortunate thing in this cycle is that over time, your product is never really the same. For users, it usually appears that the product is improving, meanwhile most of your devs gradually begin to dislike the codebase because it’s lost it’s simplicity, it’s gotten bloated, and it’s generally no longer cool to work on. Refactorings only go so far.\n\nThat’s just the nature of the software business... it happens everywhere. In the end, all software gets old and becomes a legacy system of sorts. The hard part that not everyone can do is how to grow old slowly and gracefully.\n\nHow do you fix this?\n\nWell... there’s no one answer, but in someways the burden this creates can be taken off your shoulders and passed onto your user-base by allowing them to inject themselves in this process.\n
But generally, we don’t allow our users to inject themselves in the process of creating the product. At least not in a way where they have greater control. Why don’t we build software to empower our users?\n\nSimple... we generally think users are stupid, so we don’t want them to shoot themselves in the foot which would in turn create a support nightmare for you. And generally, software craftsmanship is hard enough and the last thing we want to do is make it harder. As software practitioners we’re always striving for simplicity... well, at least I am :)\n\n
So, how do you keep things simple, but also empower your user base to get what they want out of your product? It’s a difficult problem.\n\n\n
Most devs simply build opinionated software which makes it easy for them maintain and define future product direction... simply because they’ve defined the limits of their product to their user and say no to their users a lot. Generally, this is good practice because 1) the user isn’t always right and is more often wrong about most things and 2) you get to control your destiny, not your user.\n\nHowever, the big drawback is you will likely look like an asshole to lots of people -- although you will appear as a hero to just as many. Either way, you’ve drawn a line in the sand and told your users to take it or leave it.\n
Another approach is to build a platform for extending your product. This approach enables a few things:\n\n1. It gives your users the power to extend your product without you needing to be involved\n2. It allows you to keep your code simple\n3. It allows you to build an ecosystem of developers who want to build on your platform... which in turn can provide you a nice little revenue stream (just like all of the app stores you see cropping up).\n\nI don’t know about you, but I’m not scalable. Generally, individual developers are not good at multi-tasking and those that are, aren’t very good at keeping focus. So, there’s really only one way to scale out your development... add more developers.\n\nAnother nice benefit to this is that you can use that platform for yourself to build new features... which has a nice consequence of forcing you to keep the platform relevant and useful because you have to use it yourself.\n\n\n
Building a platform requires some thought.\n\nThere are two schools of thought in creating a platform. The first allows your hackers to embed themselves inside your platform. The second provides the hacker with an api, but they can only use it outside of that platform.\n\nThere are good use cases for supporting one or the other or both. #2 is much easier and cleaner but limits your developers ability to extend your product.\n
Today, we’re going to focus on option #1... building a platform developers can embed themselves in. These are some companies who do this well today...\n\nBTW, Atlassian is there because we really do do this well.\n
The end output of having a platform is having a way for your developers to benefit from showing off their wares and maybe make some money for what they created. The implications of this are huge.\n\nThis is old news, but check out how well Apple has done with their App Stores. It’s been so successful, so many others have copied them.\n\nAt Atlassian, for example, we have plugin developers who make their living off of building plugins for our platform. If you do this right, you get to contribute to boosting the economy by helping create jobs!\n
So... now I suppose I should show you how we do this at Atlassian.\n
We start with a plugin framework. Our apps are all web based Java apps.\n\nThere are several ways to do this with each language and framework. So, do you your research before you start. And depending on how deep you want to allow your developers access into your app’s innards, you can either build or implement a framework that works for you.\n\nWe happened to pick OSGi as our plugin framework of choice. It’s a complex beast, but gave us pretty good control of what we wanted.\n
We took a bunch of technologies (felix, springDM, jersey, jackson, etc) and built an in-app plugin framework where administrators can browse/search for plugins then install/disable/ or uninstall them.\n\nEach of our products define various extension points that they want to be available to external developers, but in all products there’s a common set of extension points that devs can use. For example, in all of our products, they have the ability to create new pages and augment the builtin navigation. They also have the ability to alter and enhance our delivered pages. There are also extension points that allow devs to do things in the background.\n\nBecause this is so flexible, people can create their own “plugin” framework on top of ours.\n
One of these plugin within a plugin plugins is called Speakeasy. It was developed by a guy named Don Brown, who happens to be the architect behind our plugin framework. You might have heard of him... he’s also one of the guys behind Struts.\n\nSpeakeasy’s goal is to make it possible for users to build product enhancements/extensions without writing an Atlassian plugin. Building Atlassian plugins are pretty easy and we provide a great SDK to get a dev going, but you still need an administrator to install it into a running instance. If you’re not an administrator, you’re sort of out of luck.\n\nSpeakeasy is like Greasemonkey. Although the big difference is that it’s hosted inside the app instead of on your browser. Any user can create a speakeasy extension. It’s just like writing a Greasemonkey extension as a matter of fact. The big difference is that speakeasy provides libraries that you typically would want when building a browser side app. We provide users the use of Mustache, jQuery, and Backbone for example (to name a few).\n
Here’s what Speakeasy looks like... as you would expect, you can browse for an extension then install it...\n
However, it goes a step further...\n\nYou can fork the extension, clone it locally via git, then push your changes back up! It also provides the author of the extension some nice built in features like the ability to take feedback from its users.\n
Here’s what happens when you click on the Git menu... again... you can clone it locally. Edit it in your favorite text editor/ide, commit locally, then push it back up or to some other repo or Atlassian product that has Speakeasy installed!\n
But say you didn’t want to go through the trouble of cloning the repo locally and just had some minor changes you want to make to your forked version. Well, you can then edit the extension inside the app!\n\nHere’s a demo...\n
Speakeasy becomes even more powerful when you’ve got a nice set of REST APIs you can access. It turns out Atlassian has quite a few REST resources.\n\nWhen I started at Atlassian in September, I surveyed our products for all our REST resources. I got mixed answers. No one quite knew how many REST resources were available in each product. It turns out that each product published their formal REST APIs and with the expected documentation for each, but it was spotty -- meaning there are some undocumented resources.\n\nWhen I discovered how we built REST resources (as plugins using Jersey), it became clear that we needed a tool to manage all of our REST resources. It turns out that Jersey creates a WADL for each REST resource created. This WADL described everything we needed to know about the REST resource (endpoint, methods, parameters, etc).\n\nSo, we set out to build a dynamic REST API browser that looked at all of the REST resources available in the product. Also because we allow our external developers to either extend or build out their own REST resources as plugins, the REST API browser works for those apps work also!\n
Here’s what the REST API browser looks like. It’s basically an in-app REST API playground.\n\nYou can find the api you want to use, then test it out and see what you get back. Everything you need is right there.\n
If you want to access another REST resource (one provided by Atlassian or another plugin developer), you can do so.\n\nSpeakeasy coupled with some REST APIs and this browser, make for a nice way to build extensions on top of the product.\n\nHowever, there are drawbacks of course. The first is that these extensions have to be installed manually by each user -- currently, there’s no way for an adminstrator to push these out to all users. The next drawback is that it runs on the client... well, maybe that’s not a drawback. Either way, you’re a bit more limited to what you can do with Speakeasy extensions than a traditional plugin.\n\nAnother good use for Speakeasy is for rapidly prototyping a feature inside the product. If appropriate, you can turn the Speakeasy extension into a plugin quite easily.\n
How does one build one?\n\nWith an SDK of course. You can’t build a platform to hack on if you don’t provide some tools to allow it. Our SDK is a set of command line tools that allow for easy creation, testing, packaging, and deploying of plugins. It takes the pain out of getting started and allows our developers to be productive.\n
... which they can download from a dedicated developer site we host. BTW, if you’re going to amass a group of developers, you’ll need to provide them a dedicated resource for documentation, reference materials, etc. Our developer site is just that.\n
Here’s what the SDK provides...\n
I’m going to skip talking about the rest of the plugin dev details because it’s just that... code. I don’t know about you, but I hate staring at Java code on large screens in conference presentations.\n\nSo, let’s talk about what happens after you’ve built your plugin. Well... first, you celebrate. Then you deploy it. We provide you with a place to host and market your plugin, plugins.atlassian.com.\n
Here users can download and review your plugin. Early next year, you’ll be able to sell them.\n
The nice side effect of building a platform for people to hack on is that you end up creating a community of people who become your fans. And in the software business, there’s nothing better than having fans.\n\nBut now that you have fans, you have to keep them happy and satisfied. Your platform has become a product of its own. You have to maintain it, support it, and continually make it better in order to keep the ecosystem happy. How do you do that?\n
well... for us, we do a few things.\n\nA few years ago we started holding a plugin development contest. It was really popular. We give our participants about 6 weeks to build something cool. At the end, the a panel of judges pick the best and give out a nice package of prizes.\n
This year, one of the most popular plugins submitted was called JIRA Hero. It’s a plugin that added game mechanics to managing issues. Users can collect badges for managing their issue queues well. If you’re good, you move up levels. And there’s also a leaderboard.\n
Another awesome entry is called Jitter which basically adds a twitter-like microblog inside of JIRA.\n
Having a community is nice, but it’s nicer when you get an opportunity to connect the members of that community real life. For us we do that once a year at an event called AtlasCamp (it’s going to be twice a year starting in 2012). We hold a conference in Half Moon Bay every year just for our plugin developers. It’s a great way to get way to get people out from under their keyboards and a great opportunity for sharing and learning.\n
During the event event we also try to do something fun. Having hackathons are great, but this is really why people show up.\n
Well... in the end, most hackers just want to be able to contribute, right? So, let’s not shut them out of our products. Let’s embrace them. They can become our biggest fan, but not if we don’t include them.\n\n\n
Well... that’s all I have. If you’ve got questions or comments, let me know. And if you or one of you pals is looking for a job, let me know... we’re hiring... lots!\n