Some ideas about debugging and monitoring live applications: logging, remote-shells using Twisted (even in non-twisted apps), python debuggers, and creating IM bots so your apps can talk to you.
Presented at Kiwi Pycon 2009
Lua: the world's most infuriating languagejgrahamc
Slides from a talk I gave at the Lua London Meetup on October 17: "When first confronted with Lua an experienced programmer (like me!) finds themselves infuriated by the languages little differences and hopes that can dismiss it as not worth learning :-) Later they find themselves infuriated to learn that they can't dismiss it: Lua is just too fast, too useful and too flexible. This talk will look at my experience of learning Lua and using it to send a high-altitude balloon into the stratosphere and build CloudFlare's new low latency WAF."
This document summarizes the Go programming language. It was created by Google in 2007 and announced in 2009. Go is intended for systems programming and features garbage collection, static typing, and built-in concurrency with goroutines and channels. It aims to have high compilation speed and a syntax familiar to C/C++/Java programmers. Concurrency in Go is based on lightweight goroutines and channel-based communication between them.
This document discusses common software issues that can occur with high altitude balloon (HAB) flights and provides recommendations to help avoid problems. Some key points include:
- Software defects are common, with typical defect rates of 2-4 per thousand lines of code, so HAB software needs thorough testing.
- Real issues seen on HAB flights include computer crashes, incorrect sensor readings, premature cutdown triggers, and transmission/camera failures.
- HAB environments are harsh and software must be able to handle potential hardware failures.
- Common errors include assuming code works without testing, last-minute changes, being too clever in code, overlooking odd behaviors, copying code without understanding it, and thinking finding one bug fixes all
This document discusses Go memory management and garbage collection. It explains that Go uses garbage collection to free unused memory blocks and scavenging to return idle memory to the operating system. It provides details on allocation primitives like new() and make(), garbage collection configuration using GOGC, and memory statistics available via runtime.ReadMemStats(). Code examples are provided to demonstrate buffer pooling to reduce garbage collection overhead.
The document discusses the future of asynchronous I/O in Python. It introduces PEP 3156 and the new asyncio module in Python 3.4 as a standard library for asynchronous I/O. It describes how asyncio (called Tulip in the presentation) provides primitives like event loops, transports, protocols and coroutines to build asynchronous applications and frameworks in a pluggable, coroutine-friendly way. It provides examples of using Tulip to run asynchronous tasks and build an echo server.
The document provides an introduction to C++.NET Windows Forms course. It outlines topics that will be covered including OOP concepts in .NET, C++.NET console programming, debugging, Windows forms controls, drawing, collections, event handling, exception handling, file processing, and dynamic controls. It also provides brief introductions and overviews of the .NET framework, languages and tools, common language runtime, base class libraries, and Visual Studio.
The document provides an overview of asynchronous programming in Python. It discusses how asynchronous programming can improve performance over traditional synchronous and threaded models by keeping resources utilized continuously. It introduces key concepts like callbacks, coroutines, tasks and the event loop. It also covers popular asynchronous frameworks and modules in Python like Twisted, Tornado, gevent and asyncio. Examples are provided to demonstrate asynchronous HTTP requests and concurrent factorial tasks using the asyncio module. Overall, the document serves as an introduction to asynchronous programming in Python.
Rapid Application Design in Financial ServicesAerospike
Applying internet NoSQL design patterns to fraud detection and risk scoring, including when to use SQL and when to use NoSQL. The state of NAND Flash and NVMe is also discussed, as well as storage class memory futures with Intel's 3D Xpoint technology.
This talk was presented in LA at the following meetup:
http://www.meetup.com/scalela/events/233396111/
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
Monitoring with Syslog and EventMachine (RailswayConf 2012)Wooga
The document discusses building monitoring dashboards using syslog and EventMachine. It proposes sending application events to a server over UDP using syslog format. The server would parse, aggregate, and push events to dashboards over server-sent events. A Sinatra app is used to stream events to the browser. Testing involves sending random test events over UDP. Existing solutions like StatsD, Graphite, and Librato Metrics are also mentioned. The document provides motivation, criteria for the solution, implementation details, and areas for further improvement.
This document introduces libTimeMachine, a library that allows manipulating the system time reported to PHP for testing purposes. It works by overriding PHP's system calls for getting the time (time(), gettimeofday(), etc.) and changing them to report a simulated past or future time. This allows unit testing code that relies on or processes time-based logic and events. The library works on Linux and Mac OS X and can be used with the PHP command line, built-in web server, and Apache+mod_php.
Talk on Fluentd with introduction on what it is, how it works, and some real life feedback on its usage. This was presented at the Cloud Native Paris Meetup on 15th February 2018 : https://www.meetup.com/Cloud-Native-Computing-Paris/events/247273583/
Ansible can be used to summarize documents in 3 sentences or less:
1) The document provides tips and tricks for using Ansible for tasks like automation, orchestration, and distributed batch execution across multiple hosts.
2) It also demonstrates how Ansible can be used for auditing changes to files and system configuration over time through plugins, callbacks, and other extensions.
3) Additionally, the document shows how Ansible can be customized and expanded through techniques like abstracting packages and configurations, creating custom modules, and executing tasks in a more programmatic way.
Ansible is a configuration management and orchestration tool that is agentless, uses SSH for connections, and is designed to be easy to use. It allows users to define infrastructure by writing playbooks that describe configurations, deployments, and orchestrations. Playbooks can install software, copy files, execute commands, and more on remote servers. Ansible playbooks provide an idempotent and predictable way to configure and manage infrastructure and applications.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
This document provides a complete guide to Node.js, covering installation methods, checking installation, modules, NPM, events, streams, and persisting data. It discusses installing Node.js from nodejs.org, using a version manager like NVM, or compiling from source. It also covers creating a basic web server, reading and writing files, uploading files, and using Socket.IO for real-time applications.
Slides used at CNCF Paris Meetup 02/15/18.
This covers how we setup Prometheus at Deezer and his architecture. We also give some configuration examples and tweaks.
Node.js is a JavaScript runtime built on Chrome's V8 engine that allows building scalable network applications using JavaScript on the server-side. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, suitable for data-intensive real-time applications that run across distributed devices. Common uses of Node.js include building web servers, file upload clients, ad servers, chat servers, and any real-time data applications. The document provides an introduction to Node.js concepts like callbacks, blocking vs non-blocking code, the event loop, streams, events, and modules.
This document provides an introduction and overview of Node.js. It discusses that Node.js is asynchronous and event-driven, uses non-blocking I/O, and is well-suited for data-intensive real-time applications that run across distributed devices. It also provides instructions on getting started with Node.js, including installing it, basic usage like importing modules and writing files, how to create a simple web server, working with event-driven libraries, and popular Node.js projects like Express and Socket.IO.
This document discusses various tools for rapidly provisioning development environments including Packer, Vagrant, Puppet, Chef, Ansible, Salt, and Docker. It compares the tools and highlights features like infrastructure as code, declarative configuration, provisioning, and ready-to-go images. It also discusses using these tools together in a continuous integration/deployment pipeline with tools like Jenkins.
This document discusses Node.js architecture and how software lives in hardware. It notes that Node.js uses a single-threaded, event loop model to avoid context switching and blocking I/O. This allows high throughput for operations like HTTP requests but is not optimal for long-running computations in a single thread. The document also addresses issues like callback hell and scaling event emitters, providing solutions like using promises and external queue systems. It concludes by stating Node.js is best for I/O operations, not all problems, and event loop models have existed in other frameworks before Node.js.
This document provides an overview of using asyncio for asynchronous programming in Python. It discusses what asyncio is and some key concepts like coroutines, the event loop, and the await keyword. It then demonstrates several examples of using asyncio to run asynchronous functions with coroutines, gather futures, handle synchronous code, and iterate over async iterators/generators. Common asyncio packages for web applications, databases, and networking are also mentioned.
It is mainly about the multithreading and the multiprocessing in Python, and *in Python's flavor*.
It's also the share at Taipei.py [1].
[1] http://www.meetup.com/Taipei-py/events/220452029/
PyCon AU 2012 - Debugging Live Python Web ApplicationsGraham Dumpleton
Monitoring tools record the result of what happened to your web application when a problem arises, but for some classes of problems, monitoring systems are only a starting point. Sometimes it is necessary to take more intrusive steps to plan for the unexpected by embedding mechanisms that will allow you to interact with a live deployed web application and extract even more detailed information.
OSDC 2013 | Ansible: configuration management doesn't have to be complicated ...NETWAYS
Ansible provides an easy way to configure systems and deploy applications without using complicated configuration tools. It uses SSH and does not require installing agents or dealing with PKI. Playbooks written in YAML define actions using modules to install packages, copy files, and more across multiple systems. Variables, templates, and facts provide flexibility. Ansible is push-based but pull is possible using fireball operations. It aims to automate tasks without requiring programming experience.
Try to imagine the amount of time and effort it would take you to write a bug-free script or application that will accept a URL, port scan it, and for each HTTP service that it finds, it will create a new thread and perform a black box penetration testing while impersonating a Blackberry 9900 smartphone. While you’re thinking, Here’s how you would have done it in Hackersh:
“http://localhost” \
-> url \
-> nmap \
-> browse(ua=”Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+”) \
-> w3af
Meet Hackersh (“Hacker Shell”) – A new, free and open source cross-platform shell (command interpreter) with built-in security commands and Pythonect-like syntax.
Aside from being interactive, Hackersh is also scriptable with Pythonect. Pythonect is a new, free, and open source general-purpose dataflow programming language based on Python, written in Python. Hackersh is inspired by Unix pipeline, but takes it a step forward by including built-in features like remote invocation and threads. This 120 minute lab session will introduce Hackersh, the automation gap it fills, and its features. Lots of demonstrations and scripts are included to showcase concepts and ideas.
Python and Oracle : allies for best of data managementLaurent Leturgez
In this presentation, I described Python and how Python can Interact with Oracle database, and Oracle Cloud Infrastructure in various project : from data visualisation to data science.
Rapid Application Design in Financial ServicesAerospike
Applying internet NoSQL design patterns to fraud detection and risk scoring, including when to use SQL and when to use NoSQL. The state of NAND Flash and NVMe is also discussed, as well as storage class memory futures with Intel's 3D Xpoint technology.
This talk was presented in LA at the following meetup:
http://www.meetup.com/scalela/events/233396111/
Talk given at DomCode meetup in Utrecht (August 2014) on different frameworks to do asynchronous I/O y Python, with a strong focus on asyncio (PEP-3156).
Monitoring with Syslog and EventMachine (RailswayConf 2012)Wooga
The document discusses building monitoring dashboards using syslog and EventMachine. It proposes sending application events to a server over UDP using syslog format. The server would parse, aggregate, and push events to dashboards over server-sent events. A Sinatra app is used to stream events to the browser. Testing involves sending random test events over UDP. Existing solutions like StatsD, Graphite, and Librato Metrics are also mentioned. The document provides motivation, criteria for the solution, implementation details, and areas for further improvement.
This document introduces libTimeMachine, a library that allows manipulating the system time reported to PHP for testing purposes. It works by overriding PHP's system calls for getting the time (time(), gettimeofday(), etc.) and changing them to report a simulated past or future time. This allows unit testing code that relies on or processes time-based logic and events. The library works on Linux and Mac OS X and can be used with the PHP command line, built-in web server, and Apache+mod_php.
Talk on Fluentd with introduction on what it is, how it works, and some real life feedback on its usage. This was presented at the Cloud Native Paris Meetup on 15th February 2018 : https://www.meetup.com/Cloud-Native-Computing-Paris/events/247273583/
Ansible can be used to summarize documents in 3 sentences or less:
1) The document provides tips and tricks for using Ansible for tasks like automation, orchestration, and distributed batch execution across multiple hosts.
2) It also demonstrates how Ansible can be used for auditing changes to files and system configuration over time through plugins, callbacks, and other extensions.
3) Additionally, the document shows how Ansible can be customized and expanded through techniques like abstracting packages and configurations, creating custom modules, and executing tasks in a more programmatic way.
Ansible is a configuration management and orchestration tool that is agentless, uses SSH for connections, and is designed to be easy to use. It allows users to define infrastructure by writing playbooks that describe configurations, deployments, and orchestrations. Playbooks can install software, copy files, execute commands, and more on remote servers. Ansible playbooks provide an idempotent and predictable way to configure and manage infrastructure and applications.
A story of a Ruby programmer having to understand that learning Erlang is more than just syntax. Learn differences in paradigms, pitfalls and applied use cases for this incredibly powerful language
This document provides a complete guide to Node.js, covering installation methods, checking installation, modules, NPM, events, streams, and persisting data. It discusses installing Node.js from nodejs.org, using a version manager like NVM, or compiling from source. It also covers creating a basic web server, reading and writing files, uploading files, and using Socket.IO for real-time applications.
Slides used at CNCF Paris Meetup 02/15/18.
This covers how we setup Prometheus at Deezer and his architecture. We also give some configuration examples and tweaks.
Node.js is a JavaScript runtime built on Chrome's V8 engine that allows building scalable network applications using JavaScript on the server-side. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, suitable for data-intensive real-time applications that run across distributed devices. Common uses of Node.js include building web servers, file upload clients, ad servers, chat servers, and any real-time data applications. The document provides an introduction to Node.js concepts like callbacks, blocking vs non-blocking code, the event loop, streams, events, and modules.
This document provides an introduction and overview of Node.js. It discusses that Node.js is asynchronous and event-driven, uses non-blocking I/O, and is well-suited for data-intensive real-time applications that run across distributed devices. It also provides instructions on getting started with Node.js, including installing it, basic usage like importing modules and writing files, how to create a simple web server, working with event-driven libraries, and popular Node.js projects like Express and Socket.IO.
This document discusses various tools for rapidly provisioning development environments including Packer, Vagrant, Puppet, Chef, Ansible, Salt, and Docker. It compares the tools and highlights features like infrastructure as code, declarative configuration, provisioning, and ready-to-go images. It also discusses using these tools together in a continuous integration/deployment pipeline with tools like Jenkins.
This document discusses Node.js architecture and how software lives in hardware. It notes that Node.js uses a single-threaded, event loop model to avoid context switching and blocking I/O. This allows high throughput for operations like HTTP requests but is not optimal for long-running computations in a single thread. The document also addresses issues like callback hell and scaling event emitters, providing solutions like using promises and external queue systems. It concludes by stating Node.js is best for I/O operations, not all problems, and event loop models have existed in other frameworks before Node.js.
This document provides an overview of using asyncio for asynchronous programming in Python. It discusses what asyncio is and some key concepts like coroutines, the event loop, and the await keyword. It then demonstrates several examples of using asyncio to run asynchronous functions with coroutines, gather futures, handle synchronous code, and iterate over async iterators/generators. Common asyncio packages for web applications, databases, and networking are also mentioned.
It is mainly about the multithreading and the multiprocessing in Python, and *in Python's flavor*.
It's also the share at Taipei.py [1].
[1] http://www.meetup.com/Taipei-py/events/220452029/
PyCon AU 2012 - Debugging Live Python Web ApplicationsGraham Dumpleton
Monitoring tools record the result of what happened to your web application when a problem arises, but for some classes of problems, monitoring systems are only a starting point. Sometimes it is necessary to take more intrusive steps to plan for the unexpected by embedding mechanisms that will allow you to interact with a live deployed web application and extract even more detailed information.
OSDC 2013 | Ansible: configuration management doesn't have to be complicated ...NETWAYS
Ansible provides an easy way to configure systems and deploy applications without using complicated configuration tools. It uses SSH and does not require installing agents or dealing with PKI. Playbooks written in YAML define actions using modules to install packages, copy files, and more across multiple systems. Variables, templates, and facts provide flexibility. Ansible is push-based but pull is possible using fireball operations. It aims to automate tasks without requiring programming experience.
Try to imagine the amount of time and effort it would take you to write a bug-free script or application that will accept a URL, port scan it, and for each HTTP service that it finds, it will create a new thread and perform a black box penetration testing while impersonating a Blackberry 9900 smartphone. While you’re thinking, Here’s how you would have done it in Hackersh:
“http://localhost” \
-> url \
-> nmap \
-> browse(ua=”Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+”) \
-> w3af
Meet Hackersh (“Hacker Shell”) – A new, free and open source cross-platform shell (command interpreter) with built-in security commands and Pythonect-like syntax.
Aside from being interactive, Hackersh is also scriptable with Pythonect. Pythonect is a new, free, and open source general-purpose dataflow programming language based on Python, written in Python. Hackersh is inspired by Unix pipeline, but takes it a step forward by including built-in features like remote invocation and threads. This 120 minute lab session will introduce Hackersh, the automation gap it fills, and its features. Lots of demonstrations and scripts are included to showcase concepts and ideas.
Python and Oracle : allies for best of data managementLaurent Leturgez
In this presentation, I described Python and how Python can Interact with Oracle database, and Oracle Cloud Infrastructure in various project : from data visualisation to data science.
This document discusses various techniques for monitoring applications without interfering with core engineering work. It recommends using open source tools like the Wordnik profiler, Swagger, and MongoDB's oplog to provide business metrics monitoring and allow product teams to define their own metrics. The oplog can be used to access real-time data changes and power use cases like alerts, analytics, and pushing data to external systems without interrupting application code.
This document discusses Go web development using the Gin web framework. It provides an overview of Gin's features and file structure conventions. It also describes using Orator ORM for database migrations in Go applications. Benchmark results show the json-iterator library provides better JSON performance than the standard encoding/json package in Go. The document concludes with recommendations for Nginx SSL and security header parameters.
#Pharo Days 2016 Data Formats and ProtocolsPhilippe Back
The document discusses various data formats and protocols for building bridges between Pharo and the outside world.
It describes common data formats like CSV, JSON, and XML that can be used to serialize and deserialize Pharo objects to and from streams. It provides examples of parsing and generating data in these formats using libraries like NeoCSV and NeoJSON.
It also discusses common protocols like HTTP, filesystem I/O, and subprocesses that can be used to communicate with external systems. Specific examples covered are the memcached protocol and using Zinc for HTTP client/server communication.
This document provides an overview of setting up an ultimate UNIX development environment with custom shell functions, package managers, terminal multiplexers, monitoring tools, and shell customizations. It discusses using Homebrew and apt to manage packages, configuring Tmux and custom scripts, monitoring tools like Htop, iftop and Glances, colorizing tools like ccze and grc, shell enhancements like Oh My Zsh, and utilities like Z and ZLE line editor functions.
CONFidence 2015: DTrace + OSX = Fun - Andrzej Dyjak PROIDEA
This document summarizes a presentation about using DTrace on OS X. It introduces DTrace as a dynamic tracing tool for user and kernel space. It discusses the D programming language used for writing DTrace scripts, including data types, variables, operators, and actions. Example one-liners and scripts are provided to demonstrate syscall tracking, memory allocation snooping, and hit tracing. The presentation outlines some past security work using DTrace and similar dynamic tracing tools. It concludes with proposing future work like more kernel and USDT tracing as well as Python bindings for DTrace.
This document outlines an iOS development lecture on practical networking, system dialogs, and threading. It discusses using NSURLConnection to make network requests, common system dialogs like MFMailComposeViewController and UIImagePickerController, and threading approaches including NSThread, Grand Central Dispatch (GCD), and NSOperation. GCD and blocks are recommended for concurrency as they simplify threading compared to using NSThread directly. Slow tasks should run on background threads while the UI runs on the main thread.
This document provides an overview of basic hacking techniques using Windows and Linux command lines. It discusses using tools like netcat, SMB sessions, FOR loops, and the /dev/tcp feature in Linux to perform tasks like port scanning, password guessing, file transfers, and creating backdoor shells. The document includes code examples for scanning IP ranges, mounting SMB shares, transferring files over the network, and connecting back to an attacker's machine to execute commands.
Go is an open source programming language designed by Google to be concurrent, garbage collected, and efficient. It has a simple syntax and is used by Google and others to build large distributed systems. Key features include garbage collection, concurrency with goroutines and channels, interfaces without inheritance, and a large standard library.
The document provides a 12 step guide to writing efficient and maintainable LotusScript code. The steps include how to code with a focus on maintenance, testing early and often, planning before coding with the "measure twice, cut once" approach, using defensive coding practices, leveraging built-in data types like NotesDateTime instead of strings, and using functions like Evaluate and GetThreadInfo to get runtime information. Logging is also recommended for applications with scheduled agents or a diverse user base. The overall emphasis is on writing code that is well-structured, tested, and optimized for long-term maintenance and support.
This document discusses different approaches for profiling Java applications without using third-party tools. It begins by explaining the benefits of a do-it-yourself approach such as avoiding reliability and compliance concerns with tools. Various profiling types are then covered, including CPU profiling using wall clock time and calls, sampling, and memory profiling using JVM options. Bytecode manipulation is also presented as a method using ASM to add profiling code without changing sources. The document emphasizes learning the Java Virtual Machine and using its built-in capabilities for profiling purposes.
InSecure Remote Operations - NullCon 2023 by Yossi SassiYossi Sassi
- The document discusses remote operations and credential exposure during remote management. It highlights the use of various living off the land techniques like RPC, WMI, PSRemoting and RDP.
- It provides tips for preventing lateral movement without dedicated security products by leveraging configurations like LogonWorkstations to restrict where accounts can logon.
- The key takeaways are to embrace a living off the land mindset, be aware of credential exposure risks during remote operations, and that single configurations can be effective for preventing issues like lateral movement when properly configured and monitored.
This document provides tips for writing LotusScript code for large systems with a focus on logging, performance, code reuse, and handling weird situations. Some key points include:
- Logging is important for stability and managing large systems. Recommends using OpenLog or creating and emailing log documents to avoid performance impacts.
- Views with click-sorted columns and unnecessary views hurt performance. Recommends minimizing views and avoiding click-sort.
- Agents need to be well-behaved to avoid overloading servers. Suggests profiling agents, breaking large tasks into multiple runs, and not relying on Agent Manager to kill misbehaving agents.
- Code reuse is important for maintenance. Recommends creating
The document discusses how replacing certain Windows accessibility tool binaries, like sethc.exe, with cmd.exe allows gaining command prompt access on Windows systems. The authors developed a tool called Sticky Key Slayer that scans networks for systems vulnerable to this issue by automating the process of connecting via RDP, triggering the accessibility tools, and checking for command prompts. When tested on a large network, over 500 vulnerable systems were found. The document recommends remediation steps and warns that this technique is a sign of potential compromise.
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class Chris Gates
Derbycon 2011
This talk is about methodologies and tools that we use or have coded that make our lives and pentest schedule a little easier, and why we do things the way we do. Of course, there will be a healthy dose of Metasploit in the mix.
Google's Go is a relatively new systems programming language that has recently gained a lot of traction with developers. It brings together the ease and efficiency of development in modern interpreted languages like Python, Perl, and Ruby with the efficiency and safety of a statically typed, compiled language like C/C++ and Java.
On top of that, Go is a language built for modern hardware and problems. With built-in support for concurrency, programmers can easily build software to scale up to today's many-core beasts. Programming in Go is really nice, and in this tutorial, you will learn why.
We will cover an introduction to the Go programming language, and together we will build a multi-user network service demonstrating all of the major principles of programming in Go.
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013midnite_runr
Patching Windows Executives with the Backdoor Factory is a presentation about binary patching techniques. It discusses the history of patching, how key generators and Metasploit patch binaries, and how the author learned to manually patch binaries. The presentation then introduces the Backdoor Factory tool, which can automatically patch Windows binaries by injecting shellcode into code caves. It demonstrates patching via code cave insertion, single cave jumps, and cave jumping. Mitigations like self-validation and antivirus are discussed.
Curtailing Crustaceans with Geeky EnthusiasmRobert Coup
As a young and time-poor yachtie I need to get a leg up over the old barnacles who spend every afternoon out racing on the harbour. Can my two friends technology & data help me kick ass and take home the prizes?
Presented as a lightning talk at the Mix & Mash competition launch. Nov 2010, Wellington. http://www.mixandmash.org.nz/
Web maps are everywhere - but what do people really want to see? We need to start doing analytics on our maps in the same way we do with our other pages.
Ignite Spatial presentation, Oct 2009, FOSS4G Sydney
A quick introduction to Python's Twisted networking library, given at a NZPUG meeting in April 2009.
Covers some of the stuff you can do with Twisted really easily, like an XMPP bot and an SSH/Telnet shell into your running applications.
The document introduces Django, an open-source web framework written in Python. It discusses key features of Django, including object-relational mapping, forms, templates, an admin interface, and more. It then provides an overview of how to set up a Django project, including creating models, views, templates, and using the development server. Examples are given of building a sample application to manage yacht racing crews and races. Resources for learning and getting support with Django are also listed.
Distributed-ness: Distributed computing & the cloudsRobert Coup
Discussion on distributed apps and the cloud resources available to support them. Some discussion on the XMPP/Jabber based messaging system we use at Koordinates. Part of the seminar series for the Wellington Summer of Code programme.
The document discusses how maps on the web have evolved from static images to interactive slippy maps to 3D views. It argues that real estate and housing search websites currently fail to utilize the full potential of web maps by not making the map the primary interface. Lists of addresses are ineffective for spatial searches; the map should be used to filter results, add useful location-based data, and reduce the number of clicks needed to evaluate options. Web maps could be improved by allowing user annotations and printed versions to mirror real-world searching.
Robert Coup will discuss how to get involved in open source projects and potentially gain fame and fortune. Open source refers to software that is collaboratively created by a community. Major companies and organizations use and develop open source software. Getting involved can help your career and skills as a developer.
AI x Accessibility UXPA by Stew Smith and Olivier VroomUXPA Boston
This presentation explores how AI will transform traditional assistive technologies and create entirely new ways to increase inclusion. The presenters will focus specifically on AI's potential to better serve the deaf community - an area where both presenters have made connections and are conducting research. The presenters are conducting a survey of the deaf community to better understand their needs and will present the findings and implications during the presentation.
AI integration into accessibility solutions marks one of the most significant technological advancements of our time. For UX designers and researchers, a basic understanding of how AI systems operate, from simple rule-based algorithms to sophisticated neural networks, offers crucial knowledge for creating more intuitive and adaptable interfaces to improve the lives of 1.3 billion people worldwide living with disabilities.
Attendees will gain valuable insights into designing AI-powered accessibility solutions prioritizing real user needs. The presenters will present practical human-centered design frameworks that balance AI’s capabilities with real-world user experiences. By exploring current applications, emerging innovations, and firsthand perspectives from the deaf community, this presentation will equip UX professionals with actionable strategies to create more inclusive digital experiences that address a wide range of accessibility challenges.
Dark Dynamism: drones, dark factories and deurbanizationJakub Šimek
Startup villages are the next frontier on the road to network states. This book aims to serve as a practical guide to bootstrap a desired future that is both definite and optimistic, to quote Peter Thiel’s framework.
Dark Dynamism is my second book, a kind of sequel to Bespoke Balajisms I published on Kindle in 2024. The first book was about 90 ideas of Balaji Srinivasan and 10 of my own concepts, I built on top of his thinking.
In Dark Dynamism, I focus on my ideas I played with over the last 8 years, inspired by Balaji Srinivasan, Alexander Bard and many people from the Game B and IDW scenes.
Slack like a pro: strategies for 10x engineering teamsNacho Cougil
You know Slack, right? It's that tool that some of us have known for the amount of "noise" it generates per second (and that many of us mute as soon as we install it 😅).
But, do you really know it? Do you know how to use it to get the most out of it? Are you sure 🤔? Are you tired of the amount of messages you have to reply to? Are you worried about the hundred conversations you have open? Or are you unaware of changes in projects relevant to your team? Would you like to automate tasks but don't know how to do so?
In this session, I'll try to share how using Slack can help you to be more productive, not only for you but for your colleagues and how that can help you to be much more efficient... and live more relaxed 😉.
If you thought that our work was based (only) on writing code, ... I'm sorry to tell you, but the truth is that it's not 😅. What's more, in the fast-paced world we live in, where so many things change at an accelerated speed, communication is key, and if you use Slack, you should learn to make the most of it.
---
Presentation shared at JCON Europe '25
Feedback form:
http://tiny.cc/slack-like-a-pro-feedback
Digital Technologies for Culture, Arts and Heritage: Insights from Interdisci...Vasileios Komianos
Keynote speech at 3rd Asia-Europe Conference on Applied Information Technology 2025 (AETECH), titled “Digital Technologies for Culture, Arts and Heritage: Insights from Interdisciplinary Research and Practice". The presentation draws on a series of projects, exploring how technologies such as XR, 3D reconstruction, and large language models can shape the future of heritage interpretation, exhibition design, and audience participation — from virtual restorations to inclusive digital storytelling.
DevOpsDays SLC - Platform Engineers are Product Managers.pptxJustin Reock
Platform Engineers are Product Managers: 10x Your Developer Experience
Discover how adopting this mindset can transform your platform engineering efforts into a high-impact, developer-centric initiative that empowers your teams and drives organizational success.
Platform engineering has emerged as a critical function that serves as the backbone for engineering teams, providing the tools and capabilities necessary to accelerate delivery. But to truly maximize their impact, platform engineers should embrace a product management mindset. When thinking like product managers, platform engineers better understand their internal customers' needs, prioritize features, and deliver a seamless developer experience that can 10x an engineering team’s productivity.
In this session, Justin Reock, Deputy CTO at DX (getdx.com), will demonstrate that platform engineers are, in fact, product managers for their internal developer customers. By treating the platform as an internally delivered product, and holding it to the same standard and rollout as any product, teams significantly accelerate the successful adoption of developer experience and platform engineering initiatives.
A national workshop bringing together government, private sector, academia, and civil society to discuss the implementation of Digital Nepal Framework 2.0 and shape the future of Nepal’s digital transformation.
Building Connected Agents: An Overview of Google's ADK and A2A ProtocolSuresh Peiris
Google's Agent Development Kit (ADK) provides a framework for building AI agents, including complex multi-agent systems. It offers tools for development, deployment, and orchestration.
Complementing this, the Agent2Agent (A2A) protocol is an open standard by Google that enables these AI agents, even if from different developers or frameworks, to communicate and collaborate effectively. A2A allows agents to discover each other's capabilities and work together on tasks.
In essence, ADK helps create the agents, and A2A provides the common language for these connected agents to interact and form more powerful, interoperable AI solutions.
Slides of Limecraft Webinar on May 8th 2025, where Jonna Kokko and Maarten Verwaest discuss the latest release.
This release includes major enhancements and improvements of the Delivery Workspace, as well as provisions against unintended exposure of Graphic Content, and rolls out the third iteration of dashboards.
Customer cases include Scripted Entertainment (continuing drama) for Warner Bros, as well as AI integration in Avid for ITV Studios Daytime.
Integrating FME with Python: Tips, Demos, and Best Practices for Powerful Aut...Safe Software
FME is renowned for its no-code data integration capabilities, but that doesn’t mean you have to abandon coding entirely. In fact, Python’s versatility can enhance FME workflows, enabling users to migrate data, automate tasks, and build custom solutions. Whether you’re looking to incorporate Python scripts or use ArcPy within FME, this webinar is for you!
Join us as we dive into the integration of Python with FME, exploring practical tips, demos, and the flexibility of Python across different FME versions. You’ll also learn how to manage SSL integration and tackle Python package installations using the command line.
During the hour, we’ll discuss:
-Top reasons for using Python within FME workflows
-Demos on integrating Python scripts and handling attributes
-Best practices for startup and shutdown scripts
-Using FME’s AI Assist to optimize your workflows
-Setting up FME Objects for external IDEs
Because when you need to code, the focus should be on results—not compatibility issues. Join us to master the art of combining Python and FME for powerful automation and data migration.
Original presentation of Delhi Community Meetup with the following topics
▶️ Session 1: Introduction to UiPath Agents
- What are Agents in UiPath?
- Components of Agents
- Overview of the UiPath Agent Builder.
- Common use cases for Agentic automation.
▶️ Session 2: Building Your First UiPath Agent
- A quick walkthrough of Agent Builder, Agentic Orchestration, - - AI Trust Layer, Context Grounding
- Step-by-step demonstration of building your first Agent
▶️ Session 3: Healing Agents - Deep dive
- What are Healing Agents?
- How Healing Agents can improve automation stability by automatically detecting and fixing runtime issues
- How Healing Agents help reduce downtime, prevent failures, and ensure continuous execution of workflows
Build with AI events are communityled, handson activities hosted by Google Developer Groups and Google Developer Groups on Campus across the world from February 1 to July 31 2025. These events aim to help developers acquire and apply Generative AI skills to build and integrate applications using the latest Google AI technologies, including AI Studio, the Gemini and Gemma family of models, and Vertex AI. This particular event series includes Thematic Hands on Workshop: Guided learning on specific AI tools or topics as well as a prequel to the Hackathon to foster innovation using Google AI tools.
Join us for the Multi-Stakeholder Consultation Program on the Implementation of Digital Nepal Framework (DNF) 2.0 and the Way Forward, a high-level workshop designed to foster inclusive dialogue, strategic collaboration, and actionable insights among key ICT stakeholders in Nepal. This national-level program brings together representatives from government bodies, private sector organizations, academia, civil society, and international development partners to discuss the roadmap, challenges, and opportunities in implementing DNF 2.0. With a focus on digital governance, data sovereignty, public-private partnerships, startup ecosystem development, and inclusive digital transformation, the workshop aims to build a shared vision for Nepal’s digital future. The event will feature expert presentations, panel discussions, and policy recommendations, setting the stage for unified action and sustained momentum in Nepal’s digital journey.
AI-proof your career by Olivier Vroom and David WIlliamsonUXPA Boston
This talk explores the evolving role of AI in UX design and the ongoing debate about whether AI might replace UX professionals. The discussion will explore how AI is shaping workflows, where human skills remain essential, and how designers can adapt. Attendees will gain insights into the ways AI can enhance creativity, streamline processes, and create new challenges for UX professionals.
AI’s influence on UX is growing, from automating research analysis to generating design prototypes. While some believe AI could make most workers (including designers) obsolete, AI can also be seen as an enhancement rather than a replacement. This session, featuring two speakers, will examine both perspectives and provide practical ideas for integrating AI into design workflows, developing AI literacy, and staying adaptable as the field continues to change.
The session will include a relatively long guided Q&A and discussion section, encouraging attendees to philosophize, share reflections, and explore open-ended questions about AI’s long-term impact on the UX profession.
Refactoring meta-rauc-community: Cleaner Code, Better Maintenance, More MachinesLeon Anavi
RAUC is a widely used open-source solution for robust and secure software updates on embedded Linux devices. In 2020, the Yocto/OpenEmbedded layer meta-rauc-community was created to provide demo RAUC integrations for a variety of popular development boards. The goal was to support the embedded Linux community by offering practical, working examples of RAUC in action - helping developers get started quickly.
Since its inception, the layer has tracked and supported the Long Term Support (LTS) releases of the Yocto Project, including Dunfell (April 2020), Kirkstone (April 2022), and Scarthgap (April 2024), alongside active development in the main branch. Structured as a collection of layers tailored to different machine configurations, meta-rauc-community has delivered demo integrations for a wide variety of boards, utilizing their respective BSP layers. These include widely used platforms such as the Raspberry Pi, NXP i.MX6 and i.MX8, Rockchip, Allwinner, STM32MP, and NVIDIA Tegra.
Five years into the project, a significant refactoring effort was launched to address increasing duplication and divergence in the layer’s codebase. The new direction involves consolidating shared logic into a dedicated meta-rauc-community base layer, which will serve as the foundation for all supported machines. This centralization reduces redundancy, simplifies maintenance, and ensures a more sustainable development process.
The ongoing work, currently taking place in the main branch, targets readiness for the upcoming Yocto Project release codenamed Wrynose (expected in 2026). Beyond reducing technical debt, the refactoring will introduce unified testing procedures and streamlined porting guidelines. These enhancements are designed to improve overall consistency across supported hardware platforms and make it easier for contributors and users to extend RAUC support to new machines.
The community's input is highly valued: What best practices should be promoted? What features or improvements would you like to see in meta-rauc-community in the long term? Let’s start a discussion on how this layer can become even more helpful, maintainable, and future-ready - together.
This guide highlights the best 10 free AI character chat platforms available today, covering a range of options from emotionally intelligent companions to adult-focused AI chats. Each platform brings something unique—whether it's romantic interactions, fantasy roleplay, or explicit content—tailored to different user preferences. From Soulmaite’s personalized 18+ characters and Sugarlab AI’s NSFW tools, to creative storytelling in AI Dungeon and visual chats in Dreamily, this list offers a diverse mix of experiences. Whether you're seeking connection, entertainment, or adult fantasy, these AI platforms provide a private and customizable way to engage with virtual characters for free.
14. Handler
• does something with log messages
• stderr, files, syslog, HTTP, email, …
• filtering on logger hierarchy & level
15. Formatter
• formats the log output for a Handler
• time, file/line/function, thread, process, …
16. Logging Example
• log everything to /tmp/machine.log
• log startup and shutdown events to syslog
• quieten some noisy libraries (log warnings
& errors only)
• email errors in machine.core to
[email protected]
#4: When we encounter a problem with our live applications (on the web or elsewhere), we often have no opportunity to follow the normal debugging process through to its conclusion. The app needs to get back up, stat! And trying to piece together logs afterwards is hard.
#5: I believe in logging virtually everything - if it helps during development it’ll probably help during debugging. Certainly beats “turning up” or adding logging, restarting the app, and waiting for the problem to happen again.
#7: What about this? Standard error is good, right? Separates our logging from any real output...
#8: the problem with these is you end up commenting everything just to make it shut the hell up. And then have to uncomment to start talking again.
http://www.flickr.com/photos/larimdame/2575986601
#9: whoa? an actual logging framework? Yes, Python has a powerful builtin logging framework with the logging module, we should use it.
#10: Logging separates the source of the messages from the output. So you can turn up and down the level in configuration (live even), or point logs somewhere else, without ever going back into the code itself.
#11: Python’s logging module gets a real bad rap about the place...
http://www.flickr.com/photos/theeerin/1108095143
#12: Lots of people think it’s based too closely on log4j. How many ways are there to specify log.debug? It’s actually a pretty clean design that works fast.
http://www.flickr.com/photos/lumaxart/2136948489
#13: Others say its too hard. Seriously, 3x lines of code to get file logging going for an entire app is not “too hard”
#14: The first key component of logging is a Logger, which generates log messages. Loggers are named by the developer, usually based on where the code is. The names form a hierarchy using the dots. Then we have the debugging methods at different levels. For the exception() one it’ll just pick up on the current exception and log a traceback all by itself. And all the logging methods accept % formatting via their arguments, so we don’t have to build strings just to chuck them away.
#15: Handlers do something with log messages. They might write it to the console, to a file, send to a web server, post an email, stick it in Syslog or the NT event log, or a multitude of other things. They can filter out which messages they apply to, so we can log everything to a file as well as email just the critical errors.
#16: The last one is a formatter. What are our log messages going to look like? The formatter has access to the code location where the log message came from, as well as the process, thread, the time, and so on.
#17: So lets start with an example. We have our “machine” application, which wants to log different things to various places.
#18: So in our code, we don’t need much. Somewhere we call fileConfig to set things up, pointing to our ini-style config. After that we just get logger objects by name, then call methods on them.
#19: so, we want to send everything to a file by default. This bit of config will do that. We set up a format for our log lines. Since the loggers form a hierarchy, the root one is at the top and everything floats up there eventually. And we tell it to use a FileHandler pointing to our log.
#20: Next, startup/shutdown messages to syslog. Anything logged by a logger named machine.startstop.something will end up here. We use a SysLogHandler to get it into syslog for us.
#21: We want to squash the debug & info messages for three libraries: noisy, chatty, loud. We do this by setting propagate=0, which prevents the messages from bubbling up to the root logger. And we have no handler, so they don’t go anywhere else.
#22: Then we want to send core errors (machine.core.anything) by email. We use level=error to filter out just the errors. And then we use a SMTPHandler to log via email.
#23: And that’s prettymuch logging. There are some other tools I’m fond of, since you’re logging everything... Syslog-ng can help pull logs from multiple machines into one place. ack & less are the awesome duo of finding anything in text. And Splunk is a great tool for matching and tracing lots of events across multiple servers.
#26: The next thing in our debugging arsenal is a remote console. Don’t you wish you could just look inside your app and find out what it’s thinking, rather than hypothesising? Remote consoles certainly beats trial and error, or reconstructing chains of events from log files. We have the technology to just ask it :)
http://www.flickr.com/photos/pasukaru76/3959355664/
#27: Who’s heard of Twisted? The twisted library does lots of magic things, but one of the cool ones is a telnet or ssh server that gives access into a running python environment. You can read and change variables, call methods, whatever you want. (DEMO 2-1.py)
#28: And the code is pretty simple. Basically we create a dictionary object we use as a namespace for where the user ends up. We specify an IP and a port (and encryption keys if you want an ssh shell), and a file with usernames and passwords. that’s it. At least, if you have a Twisted app.
#29: Twisted is an asynchronous framework, it’s single threaded with an event loop, and doesn’t work in the same way most Python code does. But we can run the Twisted part (which does our manhole) in a separate thread, leaving our normal code alone. The only downside? we have to handle concurrency if we’re changing things :) (DEMO 2-2.py)
#30: The 3rd idea i want to talk about is robots. We can review our app’s progress with logs. We can telnet right inside it for hardcore inspection. But we can also get it talking to us via instant messaging.
http://saiogaman.deviantart.com/art/Danbo-Wallpaper-107237965
#31: everybody runs IM of some sort, its already open on the desktop, it just works. Our apps can say to us, in real time: “hey, Rob, I’m not happy”. Plus, the marketing guy down the hall might like to get pinged if someone orders 100 copies of our awesome software. Bots can do this.
#32: Among its arsenal of networking awesomeness, twisted also does XMPP (also known as Jabber). It’ll also do IRC and some other stuff, but we’ll focus on XMPP for now. Basically it’s an asynchronous protocol for passing bits of XML around. No polling required. There’s a library called Wokkel which makes XMPP even easier than Words does. (DEMO 3-1.py)
#33: This is the talk-ey part of the code for that example. It gets a message object in, then composes and sends a reply. Do whatever you want in these methods. And your app can call .send() itself anytime to send messages.
#34: And this is basically what I’d like you to take away. Arm yourself with some great tools and debugging and keeping an eye on your apps will be a lot easier. Trial and error sucks, move on!