Can’t Attend DockerCon 2019? Here are your Top 5 “To Dos”

If you’re not one of the thousands of expected attendees at DockerCon 2019 in San Francisco, don’t worry! There are still many ways you can stay connected to the announcements, awesome demos and all of the amazing content coming out of this year’s event. Although we will miss you this year, we’ve put together a few suggestions to stay current on all things DockerCon.

If you’re not one of the thousands of expected attendees at DockerCon 2019 in San Francisco, don’t worry! There are still many ways you can stay connected to the announcements, cool demos and all of the amazing content coming out of this year’s event. Although we will miss you this year, we’ve put together a few suggestions to stay current on all things DockerCon.

1.  Watch the Livestream of the DockerCon keynotes

Register now to see the DockerCon keynote sessions live – on Tuesday, April 30 at 9 AM PT and on Wednesday, May 1 at 9:30 AM PT. Hear the latest Docker announcements from Steve Singh (CEO), Kal De (CTO) and  Scott Johnston (GM, Enterprise Solutions), learn how a range of companies are using Docker to power their business and find out what Docker is doing in a number of container native open source projects. And don’t forget to get your front row seat to the highly technical demos featuring the latest innovations from the Docker team. We also have a few surprises in store for you so don’t forget to tune in next week!

2. Get the latest news from your peers

For those of you interested in learning about all of the exciting announcements, breakout sessions and commentary coming out of DockerCon, stay connected to Docker and your peers. Follow us on twitter @DockerCon and pay attention to #DockerCon and check us out on LinkedIn to stay current.

3. Check for on-demand DockerCon sessions

Don’t miss session content for Docker Tech Talks, Using Docker for Developers, Using Docker for IT, Black Belt and use cases featuring Docker customers including Citizens Bank, ExxonMobil, Halliburton, Liberty Mutual, Lindsay Corporation, McKesson, MetLife, Quicken Loans and more. Visit the DockerCon website after May 7 for more details on our on-demand sessions.

4. Find out what’s happening in open source

DockerCon 2019 includes tons of sessions on open source, including the return of the ever-popular Open Source Summit. This year’s event will feature talks and roundtables on many popular open source topics. Be sure to catch the recordings post-event on the DockerCon website to learn:

  • How to start contributing to open source
  • How to set establish an Open Source Program Office
  • Container security from Docker, NYU and Netflix 
  • Kubernetes and the road maps for the Container Storage Insight (CSI), Container Network Interface (CNI) and support for Windows workloads from Google and Docker
  • Cloud Native Application Bundle (CNAB) from Docker and Microsoft
  • Performance testing for 10 popular service mesh projects
  • The latest on Compose and Docker Application, containerd, BuildKit and SwarmKit

If you can’t attend but would like to learn more, check out our open source page for ways to get involved, contribute to projects like CNAB, or stay tuned to this blog for more updates on many of these exciting projects and initiatives.

5. Participate in Training and Docker Certification

Interested in taking official Docker training or getting your Docker certification? DockerCon 2019 isn’t the only place to gain the knowledge you need. Learn about Docker self-paced and instructor-led training and certifications exams coming to a location near you.

Can’t Attend #DockerCon 2019? Here are the top 5 ways you can stay connected:
Click To Tweet

For more information:

The post Can’t Attend DockerCon 2019? Here are your Top 5 “To Dos” appeared first on Docker Blog.

Can’t Attend DockerCon 2019? Here are your Top 5 “To Dos” syndicated from

Representative Line: Log Every Error

Tom C inherited some Go from another developer, and writes, “I’m pretty sick of finding this sort of stuff in this code.”

	if log, err = dockerservice.GetLoggerInstance(); err != nil {
		log.Err(fmt.Sprintf("Logger error: %v \n", err))

It’s good to log every error- it’ll help in the long run when you’re trying to trace through the problem which happens in production but the program works fine on your machine. This code knows that accessing the logger object is code that can throw an error, so if it gets an error fetching the logger object it… logs the error. With the logger object that returned some kind of error.


Forget logs. Next time you're struggling to replicate error, crash and performance issues in your apps – Think Raygun! Installs in minutes. Learn more.

Representative Line: Log Every Error syndicated from

CodeSOD: A Linking Approach

Web development has gone in a bizarre circle since the early 2000s. Whet ASP.NET launched, its “big sell” was Web Forms, which allowed developers to use a desktop model for handling interactive applications. The basic logic you used for building a desktop forms application would work for a web app, because at the time, everyone was a desktop developer.

Fast forward to today, where we bundle our applications up in web browsers and use web metaphors to build desktop applications, because everyone’s a web developer. This may be proof that developers can only ever learn a single way of doing things, and that two options is one too many.

Which brings us to some code Petr Tomanek recently inherited. The original developer, Josiah, started their career around the early 2000s. They were big advocates of the data row approach to data access. In code, they’d forget that they’d already run a query, and run it three more times just to be sure to get the data. Their approach to UI wasn’t even quite up to Web Forms standards, and was more, “mash together my personal library of snippets and Stack Overflow copy/paste”. The current incarnation of the application used the more modern ASP.NET MVC, but you wouldn’t know it to look at most of the code.

But Josiah would at least try to use the new features. For example, when they wanted the URL of a screen in the MVC application, they knew that the ActionLink method was how you created links in your view. There was also a Url.Action method which would construct just the URL. But that’s two different ways to do something, and that’s one too many. Josiah did this:

html.ActionLink(model.NextButtonText, model.RouteActionName, model.RouteControllerName, model.RouteValues, null).ToString().Split('"')[1];

The ActionLink method returns the full <a href=…>…</a>. Then we split on ", and grab the first element after a quote.

At least Josiah was consistent, and used this hammer everywhere they needed a URL.

BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!

CodeSOD: A Linking Approach syndicated from

Suffer Not The Virus To Live

Computer virus illustration

Not so long ago in 2015, Carl C. was asked to give a talk to an amateur radio club. The venue was a local church that rented out their meeting hall to various community groups, businesses, and even the odd academic session. The space boasted a multimedia setup with several video screens, making it a great place at which to present.

Carl prepared his talk, and a PowerPoint slide deck to go with. On the day of the presentation, he arrived at the meeting hall with plenty of time to spare. Alone in silence, he headed toward the front of the room and surveyed the technical setup. Thankfully, it was straightforward: there was a table set up in front of the projector screen, with a VGA connector resting directly on it. Carl unpacked his laptop, retrieved the HDMI-to-VGA adapter he'd brought along, and began plugging everything together.


Carl jumped, then glanced up wide-eyed like a deer in headlights. It wasn't a truck bearing down on him, but rather a flustered gentleman hugging a laptop to his chest.

"I'm the IT guru here," he introduced himself breathlessly, hurrying around the table to all but elbow Carl aside. "We don't allow outside computers to be connected to our system. That's how viruses spread! You'll have to run your presentation from our computer." He connected his own laptop to the AV system in lieu of Carl's.

"Uh …" Carl blurted.

"Yes?" The guru fixed him with a withering stare.

I'm not joining your network, Carl thought. There's no such thing as VGA viruses! But the stare was so intense that the objections died before they left his throat.

"How, uh … how do I get my presentation on there?" he asked instead, gesturing to the guru's laptop.

"Can you copy it to a USB stick?" the guru asked. "That's the best way."

Right. No one's ever gotten a virus from a random USB stick. Biting his lip to short-circuit a laugh, Carl dug through the side pockets on his laptop bag. "I think I've got one with me."

Forget logs. Next time you're struggling to replicate error, crash and performance issues in your apps – Think Raygun! Installs in minutes. Learn more.

Suffer Not The Virus To Live syndicated from

CodeSOD: Be True to Yourself

Ben M recently inherited some code from some Highly Paid Consultants. These consultants needed to be able to set some flags to control the behavior of the application, and for whatever reason, these flags needed to be strings. It probably wasn't a good reason, but there was some reason. The consultants wrote the module which set the flags, and guaranteed that the flags were only ever "true" or "false".

To parse those flags back into boolean values, they did it the true Highly Paid Consultant way: they used a generic "string to boolean" solution they copied from Stack Overflow instead of Boolean.Parse, the built-in C# method for turning "true" into a boolean value.

private bool ConvertBoolean(string value, bool defaultValue = false) { bool returnValue = defaultValue; if (value == null) { return returnValue; } if ("y".Equals(value, StringComparison.OrdinalIgnoreCase) || "yes".Equals(value, StringComparison.OrdinalIgnoreCase) || "true".Equals(value, StringComparison.OrdinalIgnoreCase) || "1".Equals(value, StringComparison.OrdinalIgnoreCase) || "on".Equals(value, StringComparison.OrdinalIgnoreCase)) { returnValue = true; } else if ("n".Equals(value, StringComparison.OrdinalIgnoreCase) || "no".Equals(value, StringComparison.OrdinalIgnoreCase) || "false".Equals(value, StringComparison.OrdinalIgnoreCase) || "0".Equals(value, StringComparison.OrdinalIgnoreCase) || "off".Equals(value, StringComparison.OrdinalIgnoreCase)) { returnValue = false; } return returnValue; }

Finally, this tells us the true value of FILE_NOT_FOUND, which is to say, whatever we passed in for our defaultValue, because that's what happens if this code doesn't understand how to parse the string.


Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!

CodeSOD: Be True to Yourself syndicated from

Error’d: On Second Thought, I’ll Just Go Back to Bed

Gordon S. wrote, "In seeing how someone botched the deployment of Windows on the flight boards, I sure hope that's ALL that admin was allowed to work on."


"This is the login page for the French health insurance system. The red text says 'The Ameli portal will be unavailable from the 01/02/2003 to the 04/05/2006'," Joelle wrote, "Three years of maintenance downtime may seem a bit excessive, but at least they've chosen a time slot that will not affect many users."


Eric writes, "Somehow I don't think giving your card number as **Bunch_of_numbers** will work here."


"Charlotte Airport is here to remind us all that it's the computers, not the airplanes, that crash," David B. writes.


"I can see it now – a long time ago, someone named Craig hurt the BBC's web servers and now, it works tirelessly to ignore me," wrote Craig K.


"Was it helpful? Umm…was it anything?" Ian wrote.


Otter – Provision your servers automatically without ever needing to log-in to a command prompt. Get started today!

Error’d: On Second Thought, I’ll Just Go Back to Bed syndicated from

CodeSOD: Waaaaaiiiiit for it…

There are many moments where our multi-threaded code needs to gurantee only one code path is executing at a time. That’s why we have locks, semaphores, mutexes, and so on. But those are all pretty complicated. Vincent H recently was reviewing someone’s code, and they found a far more elegant solution, which simply uses booleans.

For example, you could whip up a wait loop with a simple block like this:

  while (Busy)
      // wait for it..

When Busy becomes false, thanks to another thread changing its value, this loop will exit. Of course, sharing values between threads introduces its own possible issues, so in context, we’ll write a method that looks more like this:

public static List<T> GetMyList<T>(this List<T> list, bool Busy, string FilePath, string FileName)
  var myfilepath = FilePath + FileName;
  while (Busy)
      // wait for it..

By passing Busy as a parameter (a by-value parameter, in this case), we guarantee that no other running threads will change the value of it while we’re waiting for it to change. This is a great solution to mutexes, because it guarantees that if you call this method while you’re Busy doing something else, this just enters an infinite loop from which it never exits, guaranteeing that you never accidentally do something you shouldn’t do.


ProGet supports your applications, Docker containers, and third-party packages, allowing you to enforce quality standards across all components. Download and see how!

CodeSOD: Waaaaaiiiiit for it… syndicated from

Talk: How to Build Meaningful Animations with Louis Ansa, Art Director at makemepulse

Talk: How to Build Meaningful Animations with Louis Ansa, Art Director at makemepulse

Art Director at makemepulse, Louis Ansa joined us at awwwards Amsterdam to discuss how an animation system can add meaning to a design and an extra layer…
Talk: How to Build Meaningful Animations with Louis Ansa, Art Director at makemepulse syndicated from

The Ballad of Bart

Alvin had the fortune of working with an exceptional talent while he was employed at Virtucon. Bart knew how to do everything from desktop support to software development to database administration to IT security. Not only was he proficient in all of them, he also knew them better than those with many years of experience.

Bart had been with Virtucon since the early days, racking up nearly 20 years of tenure. During this time, he 'mastered' everything and asserted himself to the point that no changes could happen without his approval. His changes were auto-approved because of course any idea he had was a good one. This led to myriad problems for fellow IT people like Alvin, who were hired after Bart.

"Be wary of Bart," Alvin was warned by his coworker Bob, who was Bart's junior by a couple years. "He has a long history of buffoonery, yet has somehow ascended to the #3 position in IT." Alvin sipped on a generous mug of coffee while Bob regaled with the Ballad of Bart. From the time he was just a helpdesk intern that put his shoulder through a core switch after tripping while carrying boxes, Bart was wrecking things.

When Bart worked his way up to server support, he 'fixed' an Exchange issue by restoring a backup into production without warning because "It worked when the backup was taken." When he was assigned a web server problem, he spent a few days troubleshooting it without asking for any help. When he finally gave in, he told Bob that he couldn't figure out a frustrating IIS HTTPS binding issue. Bob explained to him that something else had to be the problem because the server was running Apache 2.4 on Ubuntu 16.04 LTS.

When Bart added software development to his repertoire, he clearly didn't understand how code changes worked. Or code repositories for that matter. He always wanted to be the one to fix problems, so he would stick his nose in code that it didn't belong.

Bart once tried to make fee schedule changes to accounting software by opening its PowerBuilder libraries in Notepad++. He proceeded to print out the .PBL and use a pencil to scribble out every value from the old schedule and wrote in the new ones. He then scanned his penciled changes in as a PDF and emailed it to Bob to implement.

Frustrated, Bob spent an entire day showing Bart how their GitHub repositories worked. He seemed to understand, so Bob went on his way. While Bob hoped Bart wouldn't actually produce any more code, perhaps it would save their printer some toner if he did. The next day, all the developers were complaining to Bob that they couldn't access GitHub. It turns out Bart saw GitHub as a threatening malicious code breeding ground so he had a network admin block it on the firewall. He then sent an email to development staff explaining this and that they were supposed to now use 'BartHub', a file share he set up on his own computer.

Bob and the developers managed to distract Bart by pointing out how the DBA team needed help. The first thing he did was try to create an SSRS report using a series of text boxes in a grid to make a matrix. The DBA's had a good laugh at that until Bart started to commit worse atrocities.

One day an entire metrics database suddenly became a bunch of null values, which is not very helpful for metrics. Bart threw a fit because the data he was working on was gone. He demanded whomever messed up the data be hunted down. He suggested that missing historical data could be found by performing 'key triggers', whatever those were. He emphasized his point by making hand motions like he was scrambling a Rubik's cube. They ignored him and a lead DBA ran a profiler trace to find that the unconstrained null updates came from… Bart's workstation.

Alvin had long since imbibed his coffee when Bob finished his story. Bob turned back to his workstation to check his email, "Oh, would you look at that. I guess we have some changes up top!" The email stated that the current VP of IT was announcing his retirement after 30 years at Virtucon. The CTO would be taking on that new role at the end of the month.

The transition plan began and the CTO was groomed to take over. That plan was shredded a week before it was to take place because the CTO suddenly found himself unemployed. The finance department was investigating his use of the company credit card and found thousands of dollars in personal charges, so he was unceremoniously terminated. Turmoil gripped the office as an entire department waited to find out who their new leader would be.

Everyone except Bart put in a good word for Bob to become the next VP of IT. At minimum, they should hire someone from the outside. Pretty much anyone but Bart was the popular suggestion.

Bart predictably put in a good word for himself and talked a big game about all of his expertise. He added security expert to his resume by talking about disabling his home WIFI’s SSID broadcast and changing the default password. Then there was the previously-unmentioned experience as an IT Project Manager where he apparently led several teams at Schmoeing.

That Friday, that dreaded email with the subject New VP of IT came out. Being the most tenured person remaining while having "great leadership qualities," Bart got the promotion and Bob didn't. Many job search sites probably thought they were getting a DDoS attack over the weekend while everyone in Virtucon IT looked to abandon ship. Bart's reign of terror lasted 18 months before Virtucon realized they made a grave mistake. Bob, Alvin, and many others weren't around to see the way it all ended.

Forget logs. Next time you're struggling to replicate error, crash and performance issues in your apps – Think Raygun! Installs in minutes. Learn more.

The Ballad of Bart syndicated from