Using NuGet the way you should
Consuming NuGet packages, that’s what everyone does. Open source projects create NuGet packages and post them on NuGet.org. Meanwhile, all of us are still working with shared projects and fighting relative paths, versioning and so on. In this talk, we’ll use Visual Studio, NuGet and TeamCity to work with NuGet the way you should. Project references must die! Add Package Reference and good continuous integration is everything you will ever need.
Organize your chickens: NuGet for the enterpriseMaarten Balliauw
Managing software dependencies, whether those created in-house or from third parties can be a pain in the behind. Whether dependencies feel like wild chickens or people run around like chickens dealing with dependencies, the NuGet package manager can be a cure. Let us guide you to creating enterprise (chicken) NuGets and dealing with them in a structured, easy-to-maintain manner. From developer workstation to build server, NuGet tastes great! We'll provide you the dip sauce.
Using NuGet the way you should - TechDays NL 2014Maarten Balliauw
Consuming NuGet packages, that’s what everyone does. Open source projects create NuGet packages and post them on NuGet.org. Meanwhile, all of us are still working with shared projects and fighting relative paths, versioning and so on. In this talk, we’ll use Visual Studio, NuGet and TeamCity to work with NuGet the way you should. Project references must die! Add Package Reference and good continuous integration is everything you will ever need.
NuGet is evolving to be much more than a Visual Studio extension used only for ASP.NET applications. Come see how NuGet can be used cross-platform and in new scenarios.
Windows Just Got Chocolatey (Package Management) LISA15Rob Reynolds
Other platforms have long enjoyed package management, a concept that was mostly foreign to Windows. There have been a few attempts at it, but the only one that has had a large amount of success is Chocolatey. Chocolatey took a different approach that has allowed it to build on top of an existing Windows ecosystem. Learn about the simplicity and sensible design of Chocolatey, how it has started to serve the role of package management for Windows, and where we are taking it in the future.
Kids love it. Microsoft Approved! Chocolatey does some cool things that will save you time and money for your organization and make you look uber smart for using it.
This talk aims to cover a breadth of topics about package management and Chef, starting with some fundamentals and continuing on to more advanced techniques and tips.
This talk will begin by explaining why packages and package management are fundamental tenants to managing infrastructure. We'll examine why the common practice of simply running "make install" in a Chef recipe is a bad idea and what users can do when they see recipes like this in the wild.
An extremely common problem with package management is misconfiguration of package repositories and client software. Most of the existing documentation available does not cover all of the configuration required to correctly setup and access package repositories securely and lots of configurations are simply copy-and-pasted from unreliable sources.
In order to combat some of this, the talk will continue by examining some common Chef resources for controlling package repositories with care to carefully go over commonly misunderstood and misused options. We'll examine how to generate secure package repositories, what options must be set in Chef recipes to access repositories securely, and what bugs you may bump into in your infrastructure that may prevent you from securely accessing package repositories.
Finally, this talk will wrap up with some concluding tips, tricks, and thoughts about packaging and how to use it to carefully manage infrastructure.
https://youtu.be/-HJ7EZ85THU
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...Puppet
Here are the slides from Glenn Sarti's PuppetConf 2016 presentation called How Not to Freak Out When You Start Writing Puppet Modules for Windows. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
Organize your chickens: NuGet for the enterpriseMaarten Balliauw
Managing software dependencies, whether those created in-house or from third parties can be a pain in the behind. Whether dependencies feel like wild chickens or people run around like chickens dealing with dependencies, the NuGet package manager can be a cure. Let us guide you to creating enterprise (chicken) NuGets and dealing with them in a structured, easy-to-maintain manner. From developer workstation to build server, NuGet tastes great! We'll provide you the dip sauce.
Using NuGet the way you should - TechDays NL 2014Maarten Balliauw
Consuming NuGet packages, that’s what everyone does. Open source projects create NuGet packages and post them on NuGet.org. Meanwhile, all of us are still working with shared projects and fighting relative paths, versioning and so on. In this talk, we’ll use Visual Studio, NuGet and TeamCity to work with NuGet the way you should. Project references must die! Add Package Reference and good continuous integration is everything you will ever need.
NuGet is evolving to be much more than a Visual Studio extension used only for ASP.NET applications. Come see how NuGet can be used cross-platform and in new scenarios.
Windows Just Got Chocolatey (Package Management) LISA15Rob Reynolds
Other platforms have long enjoyed package management, a concept that was mostly foreign to Windows. There have been a few attempts at it, but the only one that has had a large amount of success is Chocolatey. Chocolatey took a different approach that has allowed it to build on top of an existing Windows ecosystem. Learn about the simplicity and sensible design of Chocolatey, how it has started to serve the role of package management for Windows, and where we are taking it in the future.
Kids love it. Microsoft Approved! Chocolatey does some cool things that will save you time and money for your organization and make you look uber smart for using it.
This talk aims to cover a breadth of topics about package management and Chef, starting with some fundamentals and continuing on to more advanced techniques and tips.
This talk will begin by explaining why packages and package management are fundamental tenants to managing infrastructure. We'll examine why the common practice of simply running "make install" in a Chef recipe is a bad idea and what users can do when they see recipes like this in the wild.
An extremely common problem with package management is misconfiguration of package repositories and client software. Most of the existing documentation available does not cover all of the configuration required to correctly setup and access package repositories securely and lots of configurations are simply copy-and-pasted from unreliable sources.
In order to combat some of this, the talk will continue by examining some common Chef resources for controlling package repositories with care to carefully go over commonly misunderstood and misused options. We'll examine how to generate secure package repositories, what options must be set in Chef recipes to access repositories securely, and what bugs you may bump into in your infrastructure that may prevent you from securely accessing package repositories.
Finally, this talk will wrap up with some concluding tips, tricks, and thoughts about packaging and how to use it to carefully manage infrastructure.
https://youtu.be/-HJ7EZ85THU
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...Puppet
Here are the slides from Glenn Sarti's PuppetConf 2016 presentation called How Not to Freak Out When You Start Writing Puppet Modules for Windows. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
PuppetConf 2016: Easily Manage Software on Windows with Chocolatey – Rob Reyn...Puppet
Here are the slides from Rob Reynold's PuppetConf 2016 presentation called Easily Manage Software on Windows with Chocolatey. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
Puppet On Windows - Puppet Camp DC 2015Rob Reynolds
Puppet on Windows from Puppet Camp DC 2015 co-located with LISA15 - https://puppetlabs.com/events/puppet-camp-intro-puppet-lisa15
Code, Demo and Lab files at https://github.com/ferventcoder/puppet-windows-presentation
Managing JavaScript projects in a MonoRepo
(Zacky Pickholz)
Managing a large front end project with multiple npm packages can be overwhelming sometimes. During this session we cover popular tools that help us maintain this project much more easily.
Modulesync- How vox pupuli manages 133 modules, Tim MeuselPuppet
Managing a single Puppet module isn't easy, especially if you want to stay up-to-date with current best practices, modern testing, and the Puppet-DSL guidelines. This becomes even more difficult when maintaining multiple modules. Modulesync is the open source tool to change this! Learn from Vox Pupuli how we manage over 130 modules with no overhead and how we lowered the bar for newcomers in the open source world to more easily contribute.
Chocolatey and Puppet: Managing Your Windows Software Since 2011Rob Reynolds
It’s like an obsession. You had a taste of Chocolatey and then you wanted some more. Now you can’t get enough of it. This year at PuppetConf we will bring you all-new Chocolatey Goodness and maybe even some peanut butter(?) to go along with that. Chocolatey, a Linux-like package manager for Windows, has grown up quite a bit over the last year. We’ll show you all of the new things you can do with Chocolatey, plus how the Puppet provider has grown up with all of those new options. Come learn something old, something new, something borrowed, something blue. Puppet has worked on Windows since 2011, Chocolatey was created in 2011. Coincidence? I think not!
What are Monorepos, who uses it, why and a usage example with Lerna
Created for the 3rd React Hannover Meetup on the 5th September 2018
Even more useful links:
- https://github.com/korfuri/awesome-monorepo
- https://medium.com/@Jakeherringbone/you-too-can-love-the-monorepo-d95d1d6fcebe
An overview of the challenges to get real-time data and stats to HOMER/HEPIC for post-mortem and live troubleshooting, with the streaming of IETF meetings as a real use case.
Chocolatey Goodness: From Fringe to Mainstream #dotnetfringeRob Reynolds
Chocolatey (a Windows package manager) started out very much a thought experiment and has since become very popular. Let's dive in and learn how this happened and where Chocolatey is going next. We'll also demo some *hopefully* "fringe-y" areas of Chocolatey showing how to create package and set up your own private package server.
Learn about how the core NuGet team the NuGet Client project. The project has challenges related to:
- Open Source
- Hard Deadlines
- Very Large Backlog
- Many Conflicting Requirements
- Git
We'll talk about our strategies for:
- Issue tracking - Branching
- Continuous integration
- Testing
- Release sign-off
PuppetConf 2016: Easily Manage Software on Windows with Chocolatey – Rob Reyn...Puppet
Here are the slides from Rob Reynold's PuppetConf 2016 presentation called Easily Manage Software on Windows with Chocolatey. Watch the videos at https://www.youtube.com/playlist?list=PLV86BgbREluVjwwt-9UL8u2Uy8xnzpIqa
Puppet On Windows - Puppet Camp DC 2015Rob Reynolds
Puppet on Windows from Puppet Camp DC 2015 co-located with LISA15 - https://puppetlabs.com/events/puppet-camp-intro-puppet-lisa15
Code, Demo and Lab files at https://github.com/ferventcoder/puppet-windows-presentation
Managing JavaScript projects in a MonoRepo
(Zacky Pickholz)
Managing a large front end project with multiple npm packages can be overwhelming sometimes. During this session we cover popular tools that help us maintain this project much more easily.
Modulesync- How vox pupuli manages 133 modules, Tim MeuselPuppet
Managing a single Puppet module isn't easy, especially if you want to stay up-to-date with current best practices, modern testing, and the Puppet-DSL guidelines. This becomes even more difficult when maintaining multiple modules. Modulesync is the open source tool to change this! Learn from Vox Pupuli how we manage over 130 modules with no overhead and how we lowered the bar for newcomers in the open source world to more easily contribute.
Chocolatey and Puppet: Managing Your Windows Software Since 2011Rob Reynolds
It’s like an obsession. You had a taste of Chocolatey and then you wanted some more. Now you can’t get enough of it. This year at PuppetConf we will bring you all-new Chocolatey Goodness and maybe even some peanut butter(?) to go along with that. Chocolatey, a Linux-like package manager for Windows, has grown up quite a bit over the last year. We’ll show you all of the new things you can do with Chocolatey, plus how the Puppet provider has grown up with all of those new options. Come learn something old, something new, something borrowed, something blue. Puppet has worked on Windows since 2011, Chocolatey was created in 2011. Coincidence? I think not!
What are Monorepos, who uses it, why and a usage example with Lerna
Created for the 3rd React Hannover Meetup on the 5th September 2018
Even more useful links:
- https://github.com/korfuri/awesome-monorepo
- https://medium.com/@Jakeherringbone/you-too-can-love-the-monorepo-d95d1d6fcebe
An overview of the challenges to get real-time data and stats to HOMER/HEPIC for post-mortem and live troubleshooting, with the streaming of IETF meetings as a real use case.
Chocolatey Goodness: From Fringe to Mainstream #dotnetfringeRob Reynolds
Chocolatey (a Windows package manager) started out very much a thought experiment and has since become very popular. Let's dive in and learn how this happened and where Chocolatey is going next. We'll also demo some *hopefully* "fringe-y" areas of Chocolatey showing how to create package and set up your own private package server.
Learn about how the core NuGet team the NuGet Client project. The project has challenges related to:
- Open Source
- Hard Deadlines
- Very Large Backlog
- Many Conflicting Requirements
- Git
We'll talk about our strategies for:
- Issue tracking - Branching
- Continuous integration
- Testing
- Release sign-off
Nuget is easier than you think and you should be using it as both a consumer ...Justin James
Nuget is a package manager for Visual Studio that allows you to easily share assets (dll, javascript, c#, etc files) and use them in your project. Most Visual Studio developers have consumer nuget packages but few have created and shared nuget packages. It is amazingly easy to create and publish a nuget package. In less than 60 minutes I will show you how move from a consumer to a creator. You will learn how to package up dll's, source code that needs to be inserted in a project, add/change configurations, publish a package and host your own nuget feed.
NuGet 3.0 - Transitioning from OData to JSON-LDJeff Handley
From Oredev 2014
http://oredev.org/2014/sessions/nuget-3-0--transitioning-from-odata-to-json-ld
The NuGet team has spent most of 2014 working on NuGet 3.0. You’ll get a tour of NuGet 3.0, its features, and the direction we’re headed. But then we’ll get to the fun stuff we can all learn from: the challenges we’ve faced, and how we’re overcoming them. You’ll hear chilling tales about how interfaces, LINQ, and general-purpose server APIs have caused us so much grief. But you’ll also see how we broke a cycle of endless design and started making progress when it seemed like none could be made, allowing us to transition from OData to JSON-LD.
Ever wondered why NUnit is such a good unit testing framework?
Did you try understanding the true abilities of NUnit from their website and still left with questions?
then read this preety simple presntation about NUnit's top features!
For extensive information, please follow the notes.
Gestion paquetes NuGet con Visual Studio Team Services y MyGetLuis Fraile
¿Cómo gestionas las dependencias en tus proyectos? Mejora en la gestión de tus dependencias mediante la creación y consumo de paquetes NuGet de tus propias dependencias. Usaremos los feed de VSTS y MyGet
Domain-Driven Design provides a set of principles and patterns that are useful for tackling complex software problems. In this session, we'll review a few DDD concepts and demonstrate how they can be applied within an ASP.NET MVC Solution to keep concerns separated and implementation details loosely coupled from business logic and your domain model.
Presented at FalafelCON 2014, San Francisco, September 2014
10 years after the release of the original book Domain Driven Design by Eric Evans we are seeing more and more applications built on the core concepts of DDD. Still, there is a long way to go before we fully grasp all its potential. First we need to change the way we do things in our projects. In this session I will show a possible implementation in C# that I've been using in many projects.
Package manages and Puppet - PuppetConf 2015ice799
This talk will begin by explaining what a package manager is and how package managers work, at a high level. Next, we'll observe the common patterns seen on the internet of compiling software in a Puppet manifest and discuss why this not ideal. This talk will conclude by showing how you can add package repositories to your infrastructure using Puppet and what settings are important for ensuring secure access to remote package repositories.
Puppet Camp LA 2015 talk covering: packages, package managers, puppet, and tips, tricks, and puppet modules for setting up secure package repositories.
Controlling Component Chaos with NuGet and VersioningPerforce
In the last few years, NuGet has gone from being a poorly understood Visual Studio extension to the definitive tool for component-based development (CBD) in the Microsoft dev-ecosystem.
In this webinar, we’ll examine NuGet with a critical eye and detail best practices for its use, avoiding its pitfalls, and crafting its place in your CBD tool chain. Along the way we'll highlight how best to use it with Perforce, which is uniquely well suited to be the foundation of your own component-based development with NuGet.
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchHoward Greenberg
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
OpenNTF presents Water Cooler Talks, an irregular new series of webinars to provide a stage for individuals sharing their stories, experiences and best practices with their peers.
This month's topic is all about developers' workbenches. As developers we all have tools and routines we use to develop, collaborate and test our applications. We have experienced lots of issues and made mistakes and have a workflow that does the job, but may not be ideal. Are there better ways to do our jobs? Come learn from your fellow developers in this webinar that looks at the typical toolbox and workflow routines of several OpenNTF Board members and how they develop apps, manage tasks, track bugs, handle versioning and more.
Howard Greenberg develops Notes/Domino/XPages applications for a variety of clients. Come learn how he uses source control in Domino Designer along with SourceTree and BitBucket to collaborate with his clients and maintain a history of all changes.
Jesse Gallagher develops XPages and webapp projects that target Domino. He will present his development environment and discuss using Maven and Jenkins to automate builds and delivery.
Serdar Basegmez utilizes Domino to create RESTful APIs for his clients. He will present his development environment and share some tips on Eclipse configuration, deployment and testing Domino plugins.
View the video at https://youtu.be/AMbQ5H4dEvw
This lecture is the first part of an introduction to SVC tools with a focus on Git and GitHub. This Lecture discusses the basic concepts as well as Installation and initial configuration of Git
Conda is a cross-platform package manager that lets you quickly and easily build environments containing complicated software stacks. It was built to manage the NumPy stack in Python but can be used to manage any complex software dependencies.
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAppDynamics
A cornerstone of the DevOps philosophy, investment in automation at all stages across the SDLC has increased over recent years. Automation promises velocity and reduced errors, helps foster repeatable processes, and removes the need for long hours on dull, repetitive tasks. So what’s not to like? The downside of automation is that unless applied at the right place in your SDLC it can make a bad process worse. Automation also raises questions around job security, the need for re-skilling in other areas, and tool sprawl if different teams each choose their preferred technology. This session will outline:
-A short chronology of where automation has impacted the modern software stack
-Where it makes the most sense to automate (by identifying your key constraints)
-Best practices for adopting automation and how to identify where it’s working — and where it isn’t
For more information, visit: www.appdynamics.com
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGroup
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly gives an overview of the strengths and weaknesses of DevOps automation, tips on developing your automation strategy, and a high level overview of automation options across the DevOps toolchain.
Similar to Using nu get the way you should svcc (20)
Bringing nullability into existing code - dammit is not the answer.pptxMaarten Balliauw
The C# nullability features help you minimize the likelihood of encountering that dreaded System.NullReferenceException. Nullability syntax and annotations give hints as to whether a type can be nullable or not, and better static analysis is available to catch unhandled nulls while developing your code. What's not to like?
Introducing explicit nullability into an existing code bases is a Herculean effort. There's much more to it than just sprinkling some `?` and `!` throughout your code. It's not a silver bullet either: you'll still need to check non-nullable variables for null.
In this talk, we'll see some techniques and approaches that worked for me, and explore how you can migrate an existing code base to use the full potential of C# nullability.
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Maarten Balliauw
After buying a set of Sonos-compatible speakers at IKEA, I was disappointed there's no support for playing audio from a popular video streaming service. They stream Internet radio, podcasts and what not. Well, not that service I want it to play!
Determined - and not knowing how deep the rabbit hole would be - I ventured on a trip that included network sniffing on my access point, learning about UPnP and running a web server on my phone (without knowing how to write anything Android), learning how MP4 audio is packaged (and has to be re-packaged). This ultimately resulted in an Android app for personal use, which does what I initially wanted: play audio from that popular video streaming service on Sonos.
Join me for this story about an adventure that has no practical use, probably violates Terms of Service, but was fun to build!
Building a friendly .NET SDK to connect to SpaceMaarten Balliauw
Space is a team tool that integrates chats, meetings, git hosting, automation, and more. It has an HTTP API to integrate third party apps and workflows, but it's massive! And slightly opinionated.
In this session, we will see how we built the .NET SDK for Space, and how we make that massive API more digestible. We will see how we used code generation, and incrementally made the API feel more like a real .NET SDK.
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices.
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider.
We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...Maarten Balliauw
The .NET Garbage Collector (GC) helps provide our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Can we do without allocations? Are strings evil? It still matters to understand when and where memory is allocated.
In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
https://blog.maartenballiauw.be/post/2019/07/30/indexing-searching-nuget-with-azure-functions-and-search.html
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and SearchMaarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
Approaches for application request throttling - Cloud Developer Days PolandMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
Approaches for application request throttling - dotNetCologneMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
CodeStock - Exploring .NET memory management - a trip down memory laneMaarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
ConFoo Montreal - Approaches for application request throttlingMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...Maarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
VISUG - Approaches for application request throttlingMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
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.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
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.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Using nu get the way you should svcc
1. Using NuGet
the way you should
Maarten Balliauw
@maartenballiauw
2. Who am I?
• Maarten Balliauw
• Antwerp, Belgium
• Developer Advocate, JetBrains
• Founder, MyGet
• AZUG
• Focus on web
• Big passion: Azure
• http://blog.maartenballiauw.be
• @maartenballiauw
Shameless self promotion: Pro NuGet -
http://amzn.to/pronuget2
3. Agenda
• NuGet
• File | New Project…
• The state of NuGet
• Every project is a package
• Creating packages
• Distributing packages
• Consuming packages
5. A brief NuGet introduction...
• Package management system for .NET
• Visual Studio extension, command line, console
• Simplifies incorporating 3rd party libraries
• Developer focused
• Free, open source
• Use packages from the official feed
• Publish your own packages
• Create & use your own feed
8. That was trouble!
Dependency hell
•Dependencies on NuGet packages
•Dependencies on projects
•Dependencies on file system layout
• Breaking changes in dependencies
9. “Dependencies, also in real
life, are trouble. Have you
ever had to depend on a
plumber showing up?”
- Maarten Balliauw
10. Dependencies before NuGet
• Projects in solution
•Reference in-house projects:
• Either the assemblies (typically unversioned / all 1.0.0.0)
• Either the actual project / linked files (unversioned by design)
•Reference third party assemblies (e.g. JSON.NET)
11. Dependencies with NuGet
• Projects in solution
•Reference in-house projects:
• Either the assemblies (typically unversioned / all 1.0.0.0)
• Either the actual project / linked files (unversioned by design)
•Reference third party packages (e.g. JSON.NET)
• Semantic Versioning to announce breaking changes
(happy times as long as package authors respect that)
13. The state of NuGet
Where are we, 3 years in?
•We are consumers!
• Even quite some overconsumption I dare say…
•We sort of know about Semantic Versioning
• If the mayor version changes, we’re doomed
•Are we producing?
• Some are, e.g. OSS and some companies
• Did we solve our dependency issues?
14. .NET is late to the party!
•Others have been doing package management for
decades
• Perl (CPAN.org)
• Linux (RPM/YUM/APT-GET/...)
• PHP (PEAR, Composer)
• Node (npm)
• Ruby (Gems)
•We can learn a great deal from these!
16. What are the others doing?
What was in that package.json?
•Name and version of the project
•Dependencies (and version range) of the project
• Every project is a package!
• It can have dependencies
• It can be depended on
18. Supporting componentization
• Every project is a package
• Clearly identifyable
• Proper Semantic Versioning
• Every project becomes discoverable
• Nice description, release notes, ...
• Add it to a private feed so developers can find it
•Dependencies (can) stay out of source control
•Dependencies are versioned
19. But… NuGet only has packages.config!
•Nodejs: packages.json
•Composer (PHP): composer.json
•NuGet:
• packages.config: dependencies
• <projectname>.nuspec: package description
• NuGet.config: other settings
• It’s 2-3 files in our world, but it is all there.
• Let’s become producers!
21. All we need is one file
<projectname>.nuspec
• XML file which can be generated
• nuget.exe spec
• Install-Package NuSpec && Install-Nuspec
•Run nuget.exe pack to create package
23. Think about versioning!
Enforce Explicit Semantic Versioning
• www.semver.org
Major Breaking changes
Minor Backwards compatible changes
e.g. API additions
Patch Bugfixes not affecting the API
• SemVer states intentions
• It’s the only way to
avoid dependency
versioning hell.
But not bullet-proof.
<dependency id="ExamplePackage" version="1.3.2" />
1.0 = 1.0 ≤ x
(,1.0] = x ≤ 1.0
(,1.0) = x < 1.0
[1.0] = x == 1.0
(1.0) = invalid
(1.0,) = 1.0 < x
(1.0,2.0) = 1.0 < x < 2.0
[1.0,2.0] = 1.0 ≤ x ≤ 2.0
empty = latest version
25. Which medium?
We will need a “package source” or feed
• In source control (please don’t)
• Local / network folder (slow > ~50 packages)
• NuGet.Server (slow > ~50 packages)
• NuGet Gallery (clone of www.nuget.org)
• MyGet (www.myget.org, SaaS)
• ProGet (www.inedo.com/proget)
• TeamCity NuGet artifacts (www.jetbrains.com/teamcity)
• Sonatype (www.sonatype.com/nexus)
• Artifactory (www.jfrog.com)
26. How do they get there?
•Manual upload
• As part of our continuous integration process
• All benefits of CI (e.g. testing)
• Plus reporting on which packages we are using
• Plus publishing packages for consumption
28. What did we just see?
•Creating packages using .nuspec
•NuGet configuration inheritance
•Continuous Integration on TeamCity
• How to run package restore
• How to build a package
• How to see packages that are being used
•How to consume a package
29. NuGet configuration inheritance
•Make settings common to projects!
• NuGet walks up the directory tree to find NuGet.config files
• Or even push them to developer machines
• %AppData%NuGetNuGet.config
• %ProgramData%NuGetConfig*.config
• ...
•See http://bit.ly/nuget-config-inheritance
• Configure feeds, proxy, credentials, ...
30. More recommendations…
• Don’t just update blindly
• Not everyone respects SemVer…
• It would take us back to the original problem
• Don’t autoupdate during builds
• Continuous Integration: Same Input = Same Output
• Be explicit about versioning
31. Deploying from NuGet packages
•Using a simple, handcrafted script
• Using a tool like OctopusDeploy.com
• Which is even cooler combined with Chocolatey.org
•TeamCity supports various ways of deploying (e.g.
WebDeploy)
33. Considerations
•TeamCity internal NuGet feed
• Only build artifacts
• No way to add external packages that are being used
• May not be a problem for your setup
• But maybe it is: a feed is much like source control for dependencies
• Add dependencies that are being used, NuGet.org, component
vendors, ...
• If it is, create your own feed, e.g. MyGet.org
34. Create a package source / feed
For your team or the entire organization
• That’s a cool library! And that one too!
• Avoid overconsumption by limiting packages
• May not block developers but at least the build will fail
• Your own feed will only contain packages you
know
• Keep versions under control
• Keep licensing under control
• Easy way to audit external packages in use
36. But I’m using NuGet. It’s broken!!!
http://blog.nuget.org/20141010/nuget-is-broken.
html
• Tied to Visual Studio
•Merging sucks (XML merge, yuck!)
•Updating fails often
• Disk space pollution
• Project re-targeting
•Pessimistic package version picker / fixed versions
39. Conclusions
What have we learned?
• NuGet
• File | New Project…
• The state of NuGet
• Every project is a package
• Creating packages
• Distributing packages
• Consuming packages
40. “Project references must
die. Embrace NuGet by
consuming and creating
packages. It’s a logical
evolution.”
- Maarten Balliauw
Open IniTech.TpsReports solution
Explain demo application we will be building
Explain we will skip the actual File | New Project... Because of demo purposes, but we will cover the steps right after that
Go through HomeController and the related views and model classes
Let’s add some NuGet Goodness!
Bootstrap Datepicker
ELMAH for diagnostics
Run updates! We are get-latest addicts!
Next, explain that for date formatting, we need one of our own projects. Which is located somewhere on my disk in another github repository from the framework code team enterprise architects.
Open TpsReportCoversheet.cshtml and add reference
That is awesome! Build, run and demonstrate the application.
Switch hats: become the architect and open IniTech.Framework solution
A good architect refactors! Let’s switch namespaces. And that formatter,we need a FormatterFactory for that!
Close Visual Studio. We also want to move this project in the source repository, because it is not at the best location
Switch hats again and try compiling IniTech.TpsReports solution...
What has happened! RELEASE IS TODAY! HELP! And the architect guy is in a meeting or presenting or something. PANIC!
Open IniTech.Framework solution
Run a nuget spec and show the file in action (update it and so on)
Run nuget pack to package it
Open it in NuGet Package Explorer (explain the tool!) and see what is in there
Level up: add a dependency on Newtonsoft.Json and run nuget pack again
Open in NPE again and see the dependency magically appeared!
If you do not want this, add developmentDependency=“true”
Open the IniTech.TpsReports solution
Drop the project reference and add a package source, install the framework that way
Explain how it all works and where packages can come from, folder (and NuGet.Server) are a bad idea! (BAD BAD BAD!)
Now that we are here... Create a spec, run packaging on the .csproj
Explore the package: dependencies are there, contents are in there too
Explain TeamCity (CI, project, configuration, build steps)
Let’s make sure our IniTech.Framework is packaged
Create project from URL - https://github.com/maartenba-demo/initech-nuget.git
Autodetected build steps: none in this case?
Add build step: package restore
Solution file: src/framework/IniTech.Framework/IniTech.Framework.sln
Restore mode: restore
Explain other options and their evilness (autoupdate? noooo!)
Mention because of the private feed we are using (TeamCIty itself), we want to add authentication there as well
Add build step: build solution
Solution file: src/framework/IniTech.Framework/IniTech.Framework.sln
Add build step: pack
Project file: src/framework/IniTech.Framework/IniTech.Framework/IniTech.Framework.csproj
Version: 1.0.%build.number%
Output: “artifacts” + tick publish to artifacts to make the package visible on the TeamCity NuGet feed
Run a build, see package has been created. Run a NuGet.exe list
nuget list -Source http://teamcity.balliauw.net/httpAuth/app/nuget/v1/FeedService.svc
Sources: %teamcity.nuget.feed.auth.server% and https://nuget.org/api/v2
Switch to the existing build configuration for the IniTech.TpsReports solution
Explain same setup: package restore, build, pack
Edit the package restore step and mention for this configuration we are using the TeamCity server itself as a package source, as well as NuGet.org
Run a build, see the results tabs and get an inventory of all packages consumed
Open IniTech.Framework solution, make a change, commit, build
Open the IniTech.TpsReports solution, update packages, keep working
Explain that when the framework would have a breaking change, we have to update the version number so developers will see there are breaking changes and they will have work to do when they update for the update.
How do developers know about the feeds to use?
Open the NuGet.config file, mention inheritance, mention developers will automatically have that feed available
Package restore: close the solution, delete the packages folder, open and build
Explain no need to use the Enable package restore menu anymore (in fact, it will hurt you)
If package restore fails (which happens a lot when fiddling with settings), make sure the (Aggregate Source) is selected in the NuGet.config file so ALL feeds are checked, not just one
Similar to consuming packages in Visual Studio, only command line this time
Do a nuget list -Source http://teamcity.balliauw.net/httpAuth/app/nuget/v1/FeedService.svc
Explain we can get all packages, install them, ...
We know this is a web application, so let us create a deploy.bat
Open the existing one
Explain the steps in there
Explain we are installing without version number in paths so we can more easily script something
Feel free to add database deployment in a similar way, calling into SQL Server command line
Feel free to add DevOps stuff: why not create a new Windows Azure VM using th CLI tools they have and then FTP the NuGet contents up there?
Mention this is quite archaic but it works. You have to know the project you will be deploying and that is it.
Mention we could also run this script from TeamCity, in fact we have a demo on that
Show the configuration there
Show the snapshot dependency
Show promoting build
Mention OctopusDeploy.com again, show it on screen quickly, explain it is a good companion to TeamCity:
Build on one, convention-based deployments with the other
Explain setup: instead of using the TeamCity internal feed we want to use another one
The reason for that is: we don’t want to have just our build artifacts on there, but we want to make it the only feed of thruth (much like a VCS does for sources, this feed will do so for dependencies)
Quickly create a feed on MyGet, add dependencies from the IniTech.TpsReports solution by uploading packages.config. Make sure they are mirrored.
Also configure the framework build to push there and run it.
Delete package sources in the IniTech.TpsReports solution and add our one source of thruth
All developers can now only use these approved packages + in-house artifacts that are created
Option: create an “unstable” feed to test out new versions and migrate to teh “real” feed when they get approved (there is a push upstream feature for that on MyGet)