+1 512 266 8271 

By Amanda Babb, Principal of Process Delivery

One of the most difficult concepts to explain in agile is the concept of Batch Size. It's a principal tenet of Lean Product Development and is an ACTUAL principle in SAFe (# 6 to be precise). However, when we work with our clients to evaluate their practices and processes, we see product backlogs in the scrum boards of hundreds of items. In one case, a client used the concept of a Groomed Sprint to define what part of the Backlog had been groomed and prioritized by the Product Owner, Scrum Master, and Team. 

What we have here, folks, is a failure to right-size Batch Size. 

I've been thinking about this for a while. What is the best non-Agile example of Batch Size? It wasn't until I discussed it with my husband for the 4th time in two days that it clicked: laundry. 

Laundry is something we all need to do, but don't enjoy. And work is that way too. Sometimes we have a great laundry day: it's not on the floor, it's not stinking up the bedroom(s), it's moving through without being the only thing we accomplish that day. It's a good laundry day. Sometimes, though, it's a horrible laundry day. It's been put off so long that it's almost overwhelming: it's everywhere and is likely the only thing that's accomplished that day. Picture this: it's laundry day at your house. Individual piles are consolidated into a Big Pile. The Big Pile is sorted into smaller piles according to color, fabric, and cleaning products. The smaller piles begin to make their way through the system one at a time. 

I know what you're thinking: Amanda, we all know how laundry works. Bear with me. 

A smaller load of laundry requires less time per batch to both wash and dry. If you've ever flown into a blind panic when realizing you need clothing for the next day and have washed a single set of clothes, you know what I'm talking about. It takes less time for the washer to fill, agitate, rinse, and spin than the extra large load. In addition, it takes much less time to dry a single set of clothes than a whole dryer full of jeans. However, this is wasteful. It wastes energy and water and time because you still have that Big Pile you have to deal with at some point. And you know you do and you will. At some point. Before your husband decides to drag three laundry baskets across the house. And they're full of jeans and work shirts. <sigh>

Thinking about the above scenario another way, instead of lumping everything together into the Big Pile, why don't we pre-sort? Doesn't that make a smaller batch size and make it easier to flow through the system? Yes, but also no. Pre-sorting does take some of the handling out of consolidating laundry into the Big Pile by making smaller batches. However, those small batches can add up to a Big Pile if not adequately moved through the system when they're ready. 

What if, instead, we right-sized the batch? What if, based on the color, fabric, and cleaning products, we put the batch through the system when it was determined to be the right size? Not so big that the Big Pile must be broken into smaller batches to flow through the system, but not so small that we're wasting resources including, the most precious resource of all, time? It's time to right-size your laundry. Just as it's time to right-size your work. 

Within any agile framework, this is the essence of throughput. When requirements come to the Team in a Big Pile, the Team must break the Big Pile into consumable smaller batches. These batches must also be prioritized: clothing needed in the next day, versus clothing needed next week, versus something you've worn once and likely won't wear again for a few weeks or until a special occasion. Just as we prioritize our laundry, so too must we prioritize the backlog. What is the immediate need? What can wait a few weeks? What is a nice-to-have? Note: in the extended metaphor, nice-to-have is dry cleaning. Not something you need, but sits on a hangar in your closet, is reassessed as an outfit every three months, and ultimately placed back in the closet in favor of the clean laundry. So too should those nice-to-haves be removed from the backlog to be addressed every once in a while to see if there's a current need. Either put them back in the closet or donate them. Deprioritize items in the backlog or remove them altogether. 

How can you tell the batch is the right size to move through the system? Much like laundry, it's trial and error and feedback into the system. You didn't come into this world knowing how to do laundry. And there have been plenty of times that you've accidentally thrown a red sock into a load of whites or bleached something in your darks or even shoved too much into the washer only to have to run the dryer three times to get it adequately dried. So what did you do with this information? You learned from it. In fact, you retrospected on what you did and learned from it. I see what you did there, Amanda. So too will the Team learn from each batch of work that flows through the system. Within a retrospective, the Team should look at their batch size estimates and make adjustments for future work. This allows the Team to establish a predictable velocity with which to plan future work. Much like you've figured out how to do laundry efficiently over time (hopefully). Either way, it all comes out in the wash. 

What is GDPR?

If any of your partners, employees or customers are citizens or businesses in the EU, its time to review your company's compliance strategy. The General Data Protection Regulation (GDPR) is a new European Union privacy standard that mandates the ability for someone to have access to their personally identifying information (PII) and have the ability to change the information or "be forgotten" by requesting the removal of that data. These requirements can make achieving backward compliance standards very difficult. This new privacy law will impact everyone, from C-level executives to new hires and likely every department to include Human Resources, Information Security, Compliance and more. Regulations surrounding GDPR will affect most organizations, large and small, regardless of whether your business does business directly in the EU.

With the right tools and know-how, companies using Atlassian products like Jira and Confluence can not only achieve forward compliance by the May 25, 2018 deadline but also attain assurance that pre-existing content is compliant as well.

Why GDPR?

GDPR was designed to strengthen and unify data for European Union residents, regardless of where their data is used, processed, or stored. GDPR essentially legislates a lot of common sense data security ideas, like minimizing the collection of personal data, deleting personal data when no longer necessary, restricting access, and securing data through its entire lifecycle. But compliance violations can have costly consequences including Fines and penalties Your organization can face damaging penalties of 4% of annual global annually or 20 mil. euros.

 

The GDPR Checklist

 

Backward compliance

Praecipio Consulting has over 11 years of expertise in Atlassian products alone. As an Atlassian Platinum Partner, we have full-service solutions ready to go to get your organization's pre-existing Atlassian application data within GDPR compliance quickly and confidently.

Praecipio's Solutions Consultants come armed with the tools to identify, review, and address the content that may not be in compliance throughout your Atlassian stack. We will conduct a thorough scan of your application's existing data to include all version histories. We produce reports that help your teams identify violations, use that feedback to improve and refine our search algorithms to ensure the highest level of coverage possible.

  • Identify: we use tools and techniques developed in-house to locate potentially non-compliant data within JIRA, Confluence and other Atlassian applications.
  • Review: We then provide a detailed analysis and report of our findings and conduct a thorough review of potential violations with your team.
  • Address: Praecipio then incorporates findings from the review into further refinement of identification and generates an execution plan to redact pre-existing content to ensure compliance of your legacy data.

Maintaining Compliance in Confluence with Secure Content 2.0

Once your data is fully reviewed and in compliance, you'll need solutions to keep it that way. After all that effort and expense, you don't want to be one Confluence page edit away from a violation. For Confluence, Praecipio Software offers Secure Content 2.0 to easily secure and limit access to sensitive page content. We use 256-bit encryption to ensure any new content will not expose your organization to penalties in the future.

Your organization can invest considerable time and expense to get your Atlassian data GDPR compliant, but you'll need the tools to keep it that way. Praecipio Software's Secure Content Confluence App, available on the Atlassian Marketplace, gives your team an easy and safe way to store content securely that is both encrypted and with granular-level access control. This means sensitive data is securely encrypted on your database and access set by the author at the group or even individual level.

Secure Content is designed for robust security and ease of use. Ideal for shared, sensitive content such as passwords, data, reports - anything you need to restrict access to; anything that would likely fall under the 'identify and remove' GDPR regulation requirements.

Features Include:

  • Owner Report macro: See all your Secure Content in one place. Drop it on any page and be a click away from all of your Secure Content across the entire Confluence instance for time-saving administration and editing.
  • Transferable ownership: Control of Secure Content blocks can be optionally transferred by the Confluence administrator if needed. Or the owner can lock it down to make sure they maintain complete privacy and control, even from Confluence administrators.
  • Implicit rendering: Less sensitive but still protected data can be optionally made to render automatically with the rest of the page content but only to Authorized users.
  • Access request: Non-Authorized users can request access with a single click, alerting the content owner immediately for action via Confluence notifications.

Custom Compliance Solutions

Praecipio Software's custom development solutions can be engaged as well to address your organization's unique GDPR data security and compliance concerns.

 

Small errors can cause big problems. In 2007, a car dealership hired a promotions firm to mail 50,000 scratch-off tickets to potential customers, with one lucky winner designated to receive a $1,000 prize. However, the first 30,000 tickets were all mistakenly printed as winners, adding up to a $30 million mistake. Obviously, the dealership was unable to honor the pay-out, and instead offered $5 gift cards to the numerous lucky winners.

Perhaps a comma in the wrong place caused the prize value to skyrocket? Whatever the reason, this error was caused by inaccurate data.

Data Accuracy is Important

Data accuracy is important, and while Jira provides a solid foundation for data collection, Turbo Kit for Jira can enhance your data with field validation

As agents and customers are entering information into a Jira issue, key data points will need to be stored correctly for future retrieval.  For anyone working directly with customer issues that refer to a specific item number (e.g. policy, product, part, account) it's necessary to be able to lookup the ID of the specified item. Collecting the ID, however, isn’t always a straightforward task, and often involves multiple conversations with the customer. People will often leave fields blank, enter the wrong type of ID reference, or enter a number with a typo, and many other errors that contribute to data inaccuracies. 

Turbo Kit for Jira offers field validation ensures that people provide the right information. Organizations typically have standardized formats for their ID numbers, often consisting of a string of letters and numbers with a specific number of characters. By checking the count of numbers and letters entered into the field, Turbo Kit for Jira can validate that the ID is formatted correctly before it's submitted.

Validated Data Will Show You the Patterns You Care About

Reporting is huge. Identifying trends in the information that's reported on can help your organization recognize what is and isn't working and where energies are being focused.

If you're curious about what type of insurance policies have the most associated issues, you can filter issues based on the insurance policy field. Maybe you'd like to see how many open tickets related to the newest insurance policy 'NEW1234'. But if half of the tickets had 'NEW-1234' written in the Policy custom field, the extra dash could prevent these tickets from showing up in a search. If all of these ticket policy numbers are written in the same way, you'll be able to query the entire set in a search. Turbo Kit for JIRA and its field validation enables these reporting conditions so you can get a more accurate picture of what's happening in your organization.

Mystery Solved, Case Closed

Is your company able to survive a $30 million mistake? Do you want to end up a cautionary tale because you didn't enforce data validation and other data best practices in your Jira instance? It's elementary, my dear Watson. With Turbo Kit for Jira on the scene, the data mystery is solved and this case can be closed.   

Download a free trial today to see how Turbo Kit for Jira can help protect your organization. 

Work smarter, not harder. Easier said than done.

However, in agile software development, there are some things teams can do to begin working smarter and more efficiently. 

Many companies still estimate the amount of time a project will take in hours. But this approach, typical of the waterfall methodology, can lead to cost overruns and missed deadlines. "(Humans are) terrible at estimating how long something is going to take. We're just not good at it," said Christopher Pepe, Chief Technology Officer at Praecipio Consulting. "But what we are good at is estimating the relative sizes of things." And so he makes this point in his story above on story points vs. hours, and why companies should adopt this agile concept of planning and managing development projects.

But first, what is a story point? According to Dan Radigan in his article The secrets behind story points and agile estimation, "Story points rate the relative effort of work in a Fibonacci-like format: 0, 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100." Story points provide an abstract way of understanding how complex a project is, and how much work a project will take. 

In a comparison between agile and waterfall time estimates, Steve Cooke at Swarm Online writes "The reasoning behind using points rather than hours, is that it might be difficult to estimate in units of time at speed. Also, the speed at which the team can deliver points of effort will depend on the skills of the individuals in the team. Team A might not be as fast as Team B but the relative size of the stories remains the same."

If you want to know more about how using story points could help your team with project estimation, reach out to us today. 

Wednesday, May 2, 201811:00 AM - 12:00 PM

Service desk solutions enhance incident management response, but the volume and variety of alerts and “noise” can contribute to delays in response. Join Praecipio Consulting and Moogsoft for this webinar about modernizing IT operations to accelerate and improve incident management processes. Learn how ITIL-based tools, like Jira Service Desk, coupled with algorithmic clustering and correlation solutions like those from Moogsoft, can help IT teams have better visibility and be more agile and responsive.


Have you ever missed a deadline because your team couldn’t get aligned? Maybe a key team member was traveling, or you spent too much time discussing the plan instead of implementing it. Have you ever tried to “rally” through email? It starts out with good intentions; but 43 messages later, someone was left off the thread, and you’re trying to determine action items by sifting through a lengthy email chain.

Connecting the dots in email is one thing, but working with distributed teams adds to the complication. According to The State of the Remote Job Marketplace report, 3.9 million (2.9%) of the US workforce works remotely at least half the time. Historically, employers required workers to be local or work in the office 5 days a week. This requirement has shifted over time, as employers have taken advantage of new communication technologies to connect their workforce. But with a geographically dispersed team, how do you ensure they are working together effectively and efficiently? The answer is ChatOps!

So, what is ChatOps? And how can it help your organization collaborate effectively and efficiently?

ChatOps is a “collaboration model that connects people, tools, process, and automation into a transparent workflow.” Using a chat application like Atlassian’s Stride will centralize and streamline your discussions, planning, and action items; while improving the following areas:  

  1. Swarm on an Issue – Instantly connect with team members in chat rooms to discuss needs and action items. Include your traveling teammates in the discussion by using the Stride mobile app.
  2. Decide on a Clear Path Forward – Real-time decisions can be implemented and assigned in Stride using the Decisions and Actions functionality.
  3. Resolve Issues Faster – Centralizing your discussion in Stride will quickly determine objectives, cutting down on unnecessary cycles.
  4. Ensure transparency – Tasks (Actions) are tracked in Stride and visible to others. Team members can view what tasks are pending or completed, and how it impacts current workflows.

No matter where your teams are located, you can increase your productivity by embracing the ChatOps philosophy and using Stride. If for no other reason, do it for the Giphy App.

Interested in learning more about ChatOps? Contact us today.

By Amanda Babb

Clients and potential clients ask us what sets us apart from other Atlassian Solution Partners. While I hate answering this question as I have good relationships with people from other Solutions Partners, I love the answer we have at Praecipio Consulting. 

We're people people. The relationship is the most important thing to our success. While we're working on the cutting edge of technology every day with every client, at the end of every day and every engagement, we're still focused on the people. The goal of every engagement is to make life just a little easier on the people through good process, well practiced. 

We're officially wrapping a nine-week engagement this week with a long-term client. This particular client has come back to us several times throughout my career here at Praecipio Consulting. The relationship and trust we've built with these folks have gone a long way to establishing both business and personal relationships around not only mutual interests but genuine caring about each other as people. 

This week, though, I was humbled by the other people I appreciate, but often overlook. When you stay at the same hotel for ~ two months, you get to know the staff as well. In particular, two employees stood out to me, not only for their excellent customer service, but their own openness and willingness to have conversations, debates, asking how the project team is doing, accommodating last minute changes, and making sure we were taken care of in whichever small ways they could. It's about the people and these two people showed us that what we drive with our clients is the right thing to do. 

Today was particularly poignant as this was my last night at this hotel. As a small gesture of my appreciation, I bought a simple bouquet and split it to give each of them a thank you for taking care of the project team. Not only taking care of the project team, but during a particularly arduous week, taking goofy pictures, discussing Netflix series, sharing their excitement of going to a Cavs game for the first time, or the excitement of the premiere of Black Panther. To put it plainly, they treated us like people...not consultants. 

At the end of the day, it's about people. It's about our day-to-day interactions with people that make what we do so amazing. Good days or bad days, people are people: interacting as a person and not as a title can bring great things to clients and friends. I, for one, am super proud to know these two amazing gentlemen and sincerely thank them for all they do! 

Wednesday, May 23

6 - 9 p.m. PT

W Hotel San Francisco / SPiN

 

Join Praecipio Consulting, xMatters, and MoogSoft for a fun and interactive Incident Management Game Day at the W Hotel San Francisco (Laptops required!).

How fast can you resolve an incident? Find out how Atlassian and other ITSM tools can help reduce MTTR and provide world-class IT support.

From application monitoring to alerts, to issue tracking and team collaboration, the most effective IT teams leverage automation and integration for record-breaking mean time to resolution of incidents. In this special, hands-on workshop, attendees will interact as teams in a simulated service desk environment and respond to incident scenarios with a streamlined ITSM toolchain including Atlassian's Jira Service Desk, HipChat, StatusPage and others.

Through friendly competition and collaborative retrospectives, attendees will learn how to push alerts to the right resources, through the right platforms, for highly responsive swarming and troubleshooting.

Who should attend?
If you're an IT pro this one is definitely for you! But there's something for non-IT folks, too. Designers, technical writers, project managers - everyone - can learn how to participate in providing a better customer experience through a service desk simulation.

What else should you know?
Admission to this event is free and includes a delicious dinner menu, drinks, ping pong to follow at SPiN. We'll also be offering cool swag and sweet door prizes. Bring a laptop, and YES, bring co-workers that would be interested in this workshop.

When:

Wednesday, May 23
6-9 p.m. PT

Where:

Workshop:

W Hotel San Francisco

181 3rd Street

San Francisco, CA 94103

Drinks and ping pong:

SPiN

690 Folsom St #100

San Francisco, CA 94107


 

 

Praecipio Consulting was recently named one of the first New Relic Navigators in New Relic's Partners Program. As an Atlassian Enterprise Platinum Solutions Partner, Praecipio Consulting has also developed strong partnerships and expertise with a variety of complementary technologies, like New Relic, to ensure its customers are implementing the most effective solutions.

The New Relic Navigators Program was designed to help organizations interested in using New Relic to drive speed and visibility for joint customers with cloud migration best practices.

The program required Praecipio Consulting sales, delivery, and support team members to become trained and certified as New Relic Certified Performance Pros, learning all there is to know regarding the New Relic platform and how to build its capabilities around services for cloud migration and application performance monitoring.

Praecipio Consulting, founded in 2006, is a business process management and technology consulting firm leveraging the Atlassian toolset to deliver first-class solutions for DevOps, Agile, and IT Ops practices. Praecipio Consulting services include process and technology consulting, managed services/hosting, and product and software development. As an Atlassian Platinum Solutions Partner and process expert, Praecipio Consulting leverages the best technologies and methodologies to enable true DevOps transformations.

Introduction 

Custom macros are a popular, supported, and versatile addition to any confluence page. Confluence users are able to use macros by making their own, searching the macro library, or by getting access to additional macros through add-ons. If you are making your own macro through an add-on, you will know that the parameter types, aka fields, are limited to the following: 

    • boolean - displays a check box.
    • enum - displays a select field.
    • string - displays an input field (this is the default if unknown type).
    • spacekey - displays an autocomplete field for search on space names.
    • attachment - displays an autocomplete field for search on attachment filenames.
    • username - displays an autocomplete field for search on username and full name.
    • confluence-content - displays an autocomplete field for search on page and blog titles.

Using JavaScript and Soy templates, you are able to inject custom parameters into a macro. The following tutorial is an example of a custom field injected into a basic macro form. The goal is to create a multi-select drop down menu comprised of static predetermined menu items. Note- JS functionality to create a multi-select list and the CSS are not included. 

 

Steps for injecting an element into a macro 

Building the macro

Example code of plugin.xml 

<xhtml-macro name="macro-list" key="macro-list" class="your.class.name"  documentation-url="#"
             icon="/path/to/yourPic.jpg">
    <category name="external-content"/>
    <parameters>
        <parameter name="User" type="username"/>
        <parameter name="Page" type="confluence-content"/>
        <parameter name="StatusSelect" type="string"/>
        <parameter name="Status" type="string"/>
        <parameter name="Width" type="percentage" default="100%"/>
        <parameter name="Max Results" type="int" default="30"/>
    </parameters>
</xhtml-macro>

 

Macro prior to injecting content

 

*Note: The "Status" parameter is not visible in this image. That is because the element is hidden with CSS. More on why the element is hidden in the JavaScript section

 

Configuring the Soy template multi-select code

{template .multiSelect}
    <div class="status-container">
        <div class="closed-status-margin status-selected-container macro-input-fields text">
            <span class="aui-icon aui-icon-small aui-iconfont-arrow-down select-icon" onclick="toggleStatuses()"></span>
        </div>
        <ul class="status-list hide-statuses">
            <li value="created" onclick="statusSelect(this)">Created</li>
            <li value="deleted" onclick="statusSelect(this)">Deleted</li>
            <li value="sent" onclick="statusSelect(this)">Sent</li>
            <li value="correct" onclick="statusSelect(this)">Correct</li>
        </ul>
    </div>
{/template}


JavaScript injection

JS code with explanation

//Run function on ajaxComplete to capture edit macro view. 
$(document).ajaxComplete(function() {
	//looking for the macro-list macro to start running
	if( AJS.$("table[data-macro-name = 'macro-list']")){
    		//must verify that the MacroBrowser is available to prevent errors
			if (AJS.MacroBrowser) {
			//override command that selectes the ds macro and the field/s selected
    		AJS.MacroBrowser.setMacroJsOverride("macro-list", {
        		fields: {
            		//calls anonymous function on string fields
            		"string": function (param) {
                		//checks specifically for the string input we want to inject to
                		if (param.name == "StatusSelect") {
                    		//calls our function with the input's selected string param
                    		return handleSpacesLookup(param);
                		}
            		}
        		}
    		});
		}
	}
});
//globally available but only called if the above criteria is met
function handleSpacesLookup() {
    //grabbing the div that surrounds our selected input/param
    var paramDiv = AJS.$(Confluence.Templates.MacroBrowser.macroParameterSelect());
    
	//create a variable for our desired template
    var docStatus = path.to.your.template.multiSelect();
    
    //setting a variable to the paramDiv that corresponds to our desired input area via ID 
    var select = AJS.$("#macro-param-div-StatusSelect", paramDiv);
    
	//adding our docStatus element to the selected div
	paramDiv.append(docStatus);

	//return the selected/created element to the macro
    return AJS.MacroBrowser.Field(paramDiv, select);
};
 
//Functional logic for the multiselect not included.  

 

Completed front-end example with JavaScript

 

 

Why is the Status Parameter Gone? 

The drop down multi-select captures the user's selection on the front end. When passing the macro form information back to the server via the preview or the save button, the Status Select format is not readable. To make sure that your information is able to be parsed, you may insert relevant information into another macro field. In this case, the user's responses are sent to the hidden Status parameter each time he/she makes a change to the StatusSelect. On save or on preview, only the hidden information is sent to be parsed. 


Potential Issues 

  • I only see an empty field when opening the edit macro, I can only see my field when reloading the page with the editable macro, OR I am getting null variable errors. 

    This may be a JS async error, which could explain some inconsistencies. Make sure that this JS file is accessible to the page, that functions are properly nested, and that the initial if clause is triggered as expected. The edit screen and dialog boxes are not connected to a page reload so queries done "on load" of the page will not be caught at this point. Use .ajaxComplete or an event trigger to re-run necessary functions. 

  • My new element works but now I am missing functionality from other parts of my page.

    Make sure that your selectors are unique and as specific as possible. Try to limit using css and JS selectors by the AUI class names as these are repeated through out Confluence. 

  • I am appending my element but only see a blank input box. 

    Your parameter type may limit the content that can be appended to it. For example, select lists cannot have non-option items added to it and will instead render a broken input box. Confirm that your template has the appropriate wrappers if any. You may need to append your template to the container instead of the parameter. 

 

 
 


By Christopher Pepe, Dragon of the West

Machine learning, artificial intelligence (AI), and other advanced technical concepts are not new to Praecipio Consulting's engineers. In their spare time, they like to experiment, solve problems, and test ideas in a variety of areas. And the way they see it is they succeed, or they learn. Praecipio Labs, formalized in 2017, has really been around since the beginning. Whether it was a problem that needed solving, or it was just innate curiosity, Praecipio Labs was there to dig in and find a solution - or just have some fun! Most of the team's activity includes a variety of topics that may not be beneficial today, but are interesting nonetheless - like AI, improving advanced systems configurations, and much more.

So, who's the fearless leader?

Christopher Pepe, the Dragon of the West, oversees Praecipio Consulting's more technical endeavors. Having studied neural networks in college for robotic control systems, he has recently revisited the topic to enjoy some of the advancements that have been made. As artificial intelligence is held up as the greatest thing the universe has ever known it seemed like the right time to jump back in. Together with a ragtag team of interested engineers, Christopher is leading the Praecipio Consulting machine learning think tank to see if they can converge on a future that is better than a bag-o-if statements.

Some of Pepe and team's early projects included the Jira Toaster and Beer Me Jira. That was just the beginning. Today, Praecipio Labs is beginning to experiment with applications for machine learning. 

Pepe's recent experiment with text generation with neural networks is one of the many learning opportunities. We explored with Pepe his most recent experiment. 

Concept

Using neural networks to generate text is certainly not novel but is a fun exercise. It is also a fairly simple problem since there isn't much preprocessing to create training data. (In most data science and AI exercises one spends the majority of the time formatting and processing data.) The idea here is simple, we want to train a neural network on a given body of text (corpus) so that it can generate similar text. In this way one can generate text in the voice of the author.

I took on this experiment to build an AI that could speak in my voice. As with any worthwhile endeavor, I learned more than I accomplished.

Approach

People approach this problem with either character based or word based inputs. Character based means that if your input is "Hi there Bob" then the network is fed "H", "i", " ", "t", "h", "e", "r", "e" and so on. If word based then the network is fed "Hi", "there", "Bob." Character based approaches allow the network to do cool things like create new words. Word-based is an easier approach and in our approach was the more successful choice with less training. Our approach used a wide-ish, shallow network instead of a deep network. That means our model memorized the corpus rather than learning the meaning of it.

Training data

In all training problems, you need a large set of training data that has inputs and corresponding outputs. For instance to build a tweet sentiment model one needs 1+ million tweets with an associated sentiment label (0=mad, 1=annoyed, 2=flat, 3=happy, 4=overjoyed) and the quality of that training data determines how good your model is. That's a big task to build on a novel data set.

On the other hand training, a text generator is a simple process. The input is some number of words and the output is the next word in the corpus. Using this paragraph as an example one input might be "On the other hand training a text generator is a" and the associated output value would be "simple." The next input would be "the other hand training a text generator is a simple" and the output would be "process." 

Stepping in this way over the corpus a number of times the network eventually converges to an acceptable point.

Goals

GPU Training

To get anywhere with deep learning one really needs to train on GPUs. There are some nuances to using GPUs on AWS, and to writing code that will take advantage of multiple GPUs. This project allowed us to figure out a successful approach to using AWS for training our models.

Intro to Recurrent Neural Networks

My intro to neural networks was in college using plain old fully connected, feed forward networks for non-linear control systems  (it was a bit more state of the art back then but would still be a fun project). Life and career keep me focused elsewhere and I've only recently jumped back in. There are a dizzying array of new architectures, and approaches to interesting problems to solve. I have long been interested in time series problems and have been focused on recurrent neural networks. This was a simple but non-trivial challenge to write from scratch.

Results

After 84 epochs the loss function was minimized to 0.1195. Providing a random sample of text from the corpus as a seed the network produced this output:

 to merge completed stories and bugfixes as quickly as possible into develop so that integration and quality testing can begin sooner. merging a feature branch into the develop branch should start a build and potentially deployment to an integration testing environment. deployments can be manually triggered, but the if automatic then one is always testing the tip of the develop branch. integration and qa testing should always be occurring on the develop branch. feature branches are where developers write their code. this keeps their work isolated from other developers until it is stable. stories are sized so that a feature branch lives for 1 to 3 days. many feature branches make up a deliverable epic. features are integrated into develop by way of pull requests. pull requests are gated merges. before the feature branch can be merged into develop the code must go through a review. this can be forced with permissions or by a convention that the team uses. the merged pull request also provides a single commit to use for cherry picking features. cherry picking process again note that this process circumvents best practices

The source corpus content is listed here. You can see that the network simply memorized and regurgitated the source.

The Develop branch is the shared branch that developers use for integration testing and to accumulate features from the product backlog. The aim is to merge completed stories and bugfixes as quickly as possible into develop so that integration and quality testing can begin sooner. Merging a feature branch into the develop branch should start a build and potentially deployment to an Integration Testing environment. Deployments can be manually triggered, but the if automatic then one is always testing the tip of the develop branch. Integration and QA testing should always be occurring on the develop branch.

Feature branches are where developers write their code. This keeps their work isolated from other developers until it is stable. Stories are sized so that a feature branch lives for 1 to 3 days. Many feature branches make up a Deliverable/Epic. Features are integrated into develop by way of Pull Requests.

Some generated samples varied or had incomplete sentences but overall this model did an excellent job of recreating the source document.

I, and the team, look forward to sharing more experiments and tests like this one soon.

Wednesday, April 25

6 - 9 p.m. CST

Sheraton Westport Chalet

 

Join Praecipio Consulting, xMatters, and MoogSoft for a fun and interactive Incident Management Game Day at the Sheraton Westport Chalet (Laptops required!).

How fast can you resolve an incident? Find out how Atlassian and other ITSM tools can help reduce MTTR* and provide world-class IT support.

From application monitoring to alerts, to issue tracking and team collaboration, the most effective IT teams leverage automation and integration for record-breaking mean time to resolution of incidents. In this special, hands-on workshop, attendees will interact as teams in a simulated service desk environment and respond to incident scenarios with a streamlined ITSM toolchain including Atlassian's Jira Service Desk, HipChat, StatusPageand others.

Through friendly competition and collaborative retrospectives, attendees will learn how to push alerts to the right resources, through the right platforms, for highly responsive swarming and troubleshooting.

Who should attend?
If you're an IT pro this one is definitely for you! But there's something for non-IT folks, too. Designers, technical writers, project managers - everyone - can learn how to participate in providing a better customer experience through a service desk simulation.

What else should you know?
Admission to this event is free and includes a delicious dinner menu, drinks, and games to follow at Westport Social. We'll also be offering cool swag and sweet door prizes. Bring a laptop, and YES, bring co-workers that would be interested in this workshop.

When:

Wednesday, April 25
6-9 p.m. PT

Where:

Workshop:

Sheraton Westport Chalet

191 & 900 Westport Plaza

St Louis, Missouri, 63146

Drinks and games:

Westport Social

910 W Port Plaza Dr,

St. Louis, MO 63146

 

AUSTIN, TX
March 27, 2018 - 9 a.m. to 5 p.m.

Join us for Atlassian Planning with Portfolio for Jira to learn everything you need to know for project planning

About the event:

Interested in learning the ins and outs of Portfolio for Jira? Join our course to get the full scoop on one of Atlassian's most powerful apps for Jira Software. From this course, you'll get an introduction to Portfolio for Jira, a comprehensive overview of how the product works, and we'll share some best practices. The course walks you through building a roadmap based on work in Jira Software, forecasting release dates, managing team capacity, and creating and sharing reports on these important topics with stakeholders. This course also includes several hands-on labs giving you an opportunity to build and refine a Portfolio plan using sample data. We will provide refreshments throughout the training, and lunch will be catered. 

Objectives

After attending this course, attendees should be able to:

  • Configure Jira Software to work optimally with Portfolio for Jira
  • Create a roadmap based on data in Jira Software
  • Maintain a live plan so it's always in sync with work happening in Jira Software
  • Understand and manage team capacity through Portfolio for Jira
  • Forecast when your project will ship or whether you'll be able to ship by a certain date
  • Adjust scope, team velocity, and release timeline to understand impacts to your plan
  • Clearly see how your work aligns to business strategy with "themes" and reporting in Portfolio for Jira
  • Use reports to communicate with stakeholders about project progress and scenarios under consideration
  • Use new levels of issue hierarchy to ensure epics and stories always map back to the big picture

Audience

Anyone responsible for setting up a Jira Software project which includes:

  • Program managers
  • Project managers
  • Product owners
  • Product managers
  • Development team managers using Jira Software


Where:

Praecipio Consulting 

5918 West Courtyard Drive Ste 450

 Austin, Texas 78730


Be a part of Atlassian’s biggest world tour, and visit us at the Atlassian Team Tour right here in Austin, TX. Get the latest product updates and learn how the right tools, paired with team practices, can strengthen your organization.

Hear from Atlassian and industry leaders in your city at this unique, one-day-only event. Spend a day exploring exciting announcements and new features, see live demos, and connect with teams in your community.

Anyone who's interested in getting the most out of their tools is welcome to come.