This document summarizes the Minko 3D graphics engine. Minko 3 will allow scripting 3D apps with Lua and C++ across platforms like Windows, Mac, Linux, Android, iOS, HTML5 and Flash. Key points include:
- Minko 3 is being developed to target new platforms while maintaining a "design once, deploy everywhere" workflow and improving performance.
- It will use C++11 as the core framework with plugins and Lua for scripting 3D apps, allowing development once and deployment across platforms.
- Lua was chosen over ActionScript for its better performance, operators overloading, and support for coroutines which allow non-blocking functions.
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?Albert Mietus
About (a stalled hunt for) a new programming paradigma: ‘CC’; experimenting with the new syntax and semantics to create the ‘Castle’ language. I had to code syntax-highlighting tools for example-programmes, editor-plugins, etc. I started to build a compiler using model-based engineering tactics for {our domain} specific language. I wrote a lexer/parser grammar; build an AST; I studied LLVM, to use it as back-end. And …
How could I ever imagine I could do that? But it was FUN!
--------------
Presented at 040coders.nl; Thursday, April 18, 2019
JavaOne 2015 : How I Rediscovered My Coding Mojo by Building an IoT/Robotics ...Mark West
Is your project dragging you down? Are you stuck with the same old technologies? Are you bored with coding? If you answer “yes” to any of these questions, you may have lost your coding mojo—just like this session’s speaker did a few years back. Come hear how he learned new technologies and rediscovered his coding mojo by building an IoT/robotics prototype: a voice-controlled robot. Along the way, you’ll hear about HTML5 speech recognition, controlling hardware with Node.js and Johnny-Five, using WebSocket and MQTT for communication between components, and finally how you can easily combine the Raspberry Pi and Arduino platforms to gain ultimate power over your own projects.
Zend con 2016 bdd with behat for beginnersAdam Englander
Learn the basics of behavioral driven development (BDD) with Behat to build high quality and well documented applications. You'll learn how BDD can help you deliver greater business value more efficiently while accurately documenting the functionality of your application along the way. You'll learn how to utilize Behat as your BDD tool. With Behat, you'll create tests for the features in your application by utilizing a natural language syntax called Gherkin backed by PHP code to execute the steps executed in the feature's scenarios.
This will be a hands-on tutorial. You'll learn how to implement BDD for a web application. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and hosted integration services utilizing Selenium.
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Eugene Kurko
f you want to share the code between Android and iOS but you don't feel like doing C++/JNI, React Native, Flutter, you must try Kotlin/Native! In this presentation we will see how Kotlin/Native is different and in some aspects superior, and how easy it becomes to develop, debug and maintain a common codebase with JetBrains tools and without sacrificing runtime performance.
CC-Castle; The best Real-Time/Embedded/HighTech language EVER?Albert Mietus
About (a stalled hunt for) a new programming paradigma: ‘CC’; experimenting with the new syntax and semantics to create the ‘Castle’ language. I had to code syntax-highlighting tools for example-programmes, editor-plugins, etc. I started to build a compiler using model-based engineering tactics for {our domain} specific language. I wrote a lexer/parser grammar; build an AST; I studied LLVM, to use it as back-end. And …
How could I ever imagine I could do that? But it was FUN!
--------------
Presented at 040coders.nl; Thursday, April 18, 2019
JavaOne 2015 : How I Rediscovered My Coding Mojo by Building an IoT/Robotics ...Mark West
Is your project dragging you down? Are you stuck with the same old technologies? Are you bored with coding? If you answer “yes” to any of these questions, you may have lost your coding mojo—just like this session’s speaker did a few years back. Come hear how he learned new technologies and rediscovered his coding mojo by building an IoT/robotics prototype: a voice-controlled robot. Along the way, you’ll hear about HTML5 speech recognition, controlling hardware with Node.js and Johnny-Five, using WebSocket and MQTT for communication between components, and finally how you can easily combine the Raspberry Pi and Arduino platforms to gain ultimate power over your own projects.
Zend con 2016 bdd with behat for beginnersAdam Englander
Learn the basics of behavioral driven development (BDD) with Behat to build high quality and well documented applications. You'll learn how BDD can help you deliver greater business value more efficiently while accurately documenting the functionality of your application along the way. You'll learn how to utilize Behat as your BDD tool. With Behat, you'll create tests for the features in your application by utilizing a natural language syntax called Gherkin backed by PHP code to execute the steps executed in the feature's scenarios.
This will be a hands-on tutorial. You'll learn how to implement BDD for a web application. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and hosted integration services utilizing Selenium.
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Eugene Kurko
f you want to share the code between Android and iOS but you don't feel like doing C++/JNI, React Native, Flutter, you must try Kotlin/Native! In this presentation we will see how Kotlin/Native is different and in some aspects superior, and how easy it becomes to develop, debug and maintain a common codebase with JetBrains tools and without sacrificing runtime performance.
To review computer basics, programs, and operating systems
To explore the relationship between Java and the World Wide Web
To distinguish the terms API, IDE, and JDK
To write a simple Java program
To display output on the console
To explain the basic syntax of a Java program
To create, compile, and run Java programs
(GUI) To display output using the JOptionPane output dialog boxes
Kotlin Multiplatform has opened a new world of sharing code among multiple platforms (Android, iOS, Mac, etc). With Kotlin Multiplatform Mobile (KMM), you can save time and effort by writing the business logic for your iOS and Android apps just once, in pure Kotlin.
In this presentation, you will learn what Kotlin Multiplatform is, why you should embrace it and how to get started with it.
You will get to know some resources that could help you get started easily, find help when needed, and how the KMM community is key.
Introduction to the Eclipse scripting tool Groovy Monkey. Groovy Monkey allows for you to engage in API exploration, Task Automation, Plugin prototyping and collaboration in a lightweight and simple way.
Php Dependency Management with Composer ZendCon 2016Clark Everetts
A deep-dive for beginners into Composer, the dependency manager for PHP. Learn how Composer helps you obtain the components your applications depend upon, installs them into your project, and controls their update to newer versions.
Building kubectl plugins with Quarkus | DevNation Tech TalkRed Hat Developers
We all know how flexible Kubernetes extensions can be - Tekton and Knative are examples. But did you know it's also pretty easy to extend kubectl, the Kubernetes superstar CLI? In this session we see how a kubectl plugin is designed and then from scratch, we will build our own plugin using Quarkus. That will give us the opportunity to discover the command mode of Quarkus, rediscover how native compilation can create super fast binaries, and see how the Kubernetes-client extensions make it super easy to interact with a Kubernetes cluster.
Scripting is not something you do with Java. You use bash, python, groovy, kotlin, or something else other than Java. What if I told you that it does not need to be that way? Since January 2020 there has been a way to use Java as a language for scripting. No maven, no gradle, no scaffolding–just a single .java file that can use external libraries and you are off the races. This session will cover how jbang came to be, what challenges it solves, and how it helps you to explore and teach Java.
Speaker: Max Rydahl Andersen
Choosing the Right Framework for Running Docker Containers in ProdJosh Padnick
In this talk, I cover the key elements of running multiple Docker containers per VM, the major frameworks available to assist with this, and when to choose each.
To review computer basics, programs, and operating systems
To explore the relationship between Java and the World Wide Web
To distinguish the terms API, IDE, and JDK
To write a simple Java program
To display output on the console
To explain the basic syntax of a Java program
To create, compile, and run Java programs
(GUI) To display output using the JOptionPane output dialog boxes
Kotlin Multiplatform has opened a new world of sharing code among multiple platforms (Android, iOS, Mac, etc). With Kotlin Multiplatform Mobile (KMM), you can save time and effort by writing the business logic for your iOS and Android apps just once, in pure Kotlin.
In this presentation, you will learn what Kotlin Multiplatform is, why you should embrace it and how to get started with it.
You will get to know some resources that could help you get started easily, find help when needed, and how the KMM community is key.
Introduction to the Eclipse scripting tool Groovy Monkey. Groovy Monkey allows for you to engage in API exploration, Task Automation, Plugin prototyping and collaboration in a lightweight and simple way.
Php Dependency Management with Composer ZendCon 2016Clark Everetts
A deep-dive for beginners into Composer, the dependency manager for PHP. Learn how Composer helps you obtain the components your applications depend upon, installs them into your project, and controls their update to newer versions.
Building kubectl plugins with Quarkus | DevNation Tech TalkRed Hat Developers
We all know how flexible Kubernetes extensions can be - Tekton and Knative are examples. But did you know it's also pretty easy to extend kubectl, the Kubernetes superstar CLI? In this session we see how a kubectl plugin is designed and then from scratch, we will build our own plugin using Quarkus. That will give us the opportunity to discover the command mode of Quarkus, rediscover how native compilation can create super fast binaries, and see how the Kubernetes-client extensions make it super easy to interact with a Kubernetes cluster.
Scripting is not something you do with Java. You use bash, python, groovy, kotlin, or something else other than Java. What if I told you that it does not need to be that way? Since January 2020 there has been a way to use Java as a language for scripting. No maven, no gradle, no scaffolding–just a single .java file that can use external libraries and you are off the races. This session will cover how jbang came to be, what challenges it solves, and how it helps you to explore and teach Java.
Speaker: Max Rydahl Andersen
Choosing the Right Framework for Running Docker Containers in ProdJosh Padnick
In this talk, I cover the key elements of running multiple Docker containers per VM, the major frameworks available to assist with this, and when to choose each.
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
The new version of the .NET Framework called vNext brings a lots of news, which are believed to be able to return to the popularity of Microsoft tools and products.
Principles that guided the development team when developing new versions of frameworks are:
• Speed, Runtime performance,
• Modularity,
• Cross-Platform,
• Open-source,
• Faster development cycle,
• Custom code editors and tools.
Polyglot Programming as a technique is not new and as a paradigm was coined in 2006 by Neal Ford. In today's world, we often architect solutions which need to be highly scalable, secure, efficient, have an engaging GUI, be extensible with low technical debt in parts or whole. To work with a single tech stack promotes a sense of mono culture which is detrimental and limiting the way a solution can be designed. Moreover, with multi-core machines available, processing now can leverage parallel processing and it maybe make more sense to use a language which takes away the overhead of the intricacies of multi-thread programming.
In other words, in many cases, engaging in Polyglot Programming helps you focus more on the domain and adds to developer productivity.
On the flip side, increasing the moving parts also means that if not designed well, Polyglot Programming could be a double edged sword and produce more mess in the way different pieces interact with each other.
In this talk, we will showcase an ecosystem we built, involving a desktop device configuration backed, an OS-agnostic desktop GUI, a cloud service, a cloud cluster configuration tool and how we used the Agile principles, namely TDD, Continuous Integration and the works to be able to keep the polyglot ecosystem sane.
Name wise, the languages/tools/etc which we used in our Polyglot case -- Google Go, Node-Webkit, JS (Knockout/RequireJS), Ruby, Cucumber, RIAK, Chef, Lisp, Jenkins
Sascha Corti
With Internet Explorer 9, Microsoft has entered the league of HTML 5 browsers and with its active participation in the W3C working groups, the company proves its engagements towards the new and emerging standards. Developers however are often left wondering where the boundaries are drawn between HTML5 web site, plug-in based rich internet application and smart client or “app”.
This session intends to answer this question and uses many examples to show you some of the most important enhancements introduced by HTML5, CSS3, SVG, DOM, WOFF and ECMA script. You will learn now the standards are still evolving and how Microsoft is contributing.
http://soft-shake.ch/2011/conference/sessions/microsoft/2011/09/06/introduction-to-html5.html
This session discusses the business aspects of Microsoft Silverlight, including how to ramp up an agency to be ready for Silverlight and how to pitch Silverlight to your clients. Learn how to optimize current workflow, ramp up a team, and achieve a return on Silverlight investments. Learn how the differences between Silverlight 1.0 and 2 affect business and staffing strategy.
For the full video of this presentation, please visit:
http://www.embedded-vision.com/platinum-members/embedded-vision-alliance/embedded-vision-training/videos/pages/may-2016-embedded-vision-summit-khronos
For more information about embedded vision, please visit:
http://www.embedded-vision.com
Neil Trevett, President of the Khronos Group, presents the "Vision API Maze: Options and Trade-offs" tutorial at the May 2016 Embedded Vision Summit.
It’s been a busy year in the world of hardware acceleration APIs. Many industry-standard APIs, such as OpenCL and OpenVX, have been upgraded, and the industry has begun to adopt the new generation of low-level, explicit GPU APIs, such as Vulkan, that tightly integrate graphics and compute. Some of these APIs, like OpenVX and OpenCV, are vision-specific, while others, like OpenCL and Vulkan, are general-purpose. Some, like CUDA and Renderscript, are supplier-specific, while others are open standards that any supplier can adopt. Which ones should you use for your project?
In this presentation, Neil Trevett, President of the Khronos Group standards organization, updates the landscape of APIs for vision software development, explaining where each one fits in the development flow. Neil also highlights where these APIs overlap and where they complement each other, and previews some of the latest developments in these APIs.
Scaleable PHP Applications in KubernetesRobert Lemke
Kubernetes is also called the "distributed Linux of the cloud" – which implies that it provides fundamental infrastructure, which can solve a lot of challenges. Let’s see how PHP applications fit into this picture. In this presentation, we are going to explore when Kubernetes is a good fit for operating your PHP application and how it can be done in practice. We’ll look at the whole lifecycle: how to build your application, create or choose the right Docker images, deploy and scale, and how to deal with performance and monitoring. At the end you will have a good understanding about all the different stages and building blocks for running a PHP application with Kubernetes in production.
Similar to Minko - Scripting 3D apps with Lua and C++ (20)
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
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.
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.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
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.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
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
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
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.
3. New Minko 2 Features
Editor
– Auto-save
– Multiple optimizations
Framework
– Mutiple fixes on the lighting system
Available today!
http://minko.io/download
5. Motivations
Target new platforms
– Keep the « design once, deploy everywhere » workflow
– Larger community
Increase performances, epecially CPU-wise
– Multi-threading?
Leverage existing codebase
6. Technological choices
C++11 core framework and plugins
Develop once, deploy everywhere
– Windows, Mac, Linux
– Android, iOS
– HTML5, Flash
Work with all the tools you like
8. Babolat Play - First commercial project!
http://www.youtube.com/watch?v=ewUUerxdZ7U
9. Babolat Play - Fallback
Run web app.
yes
Is
WebGL
available
?
no
Generate JPEG on the
server
Thanks to Minko 3, the same code runs on the server side
and in the browser.
11. How can I help?
Show your love for Crossbridge and Minko on the dedicated
feature request on Github!
– https://github.com/adobe-flash/crossbridge/issues/28
Please leave a comment, even just a +1
13. Effect files
Store a fully setup multi-pass rendering effect
Include 3rd party shaders and plug them in the engine using
bindings
Support über-shaders using automated macro definition
based on bindings
Handle multiple rendering techniques to choose from at
runtime
Can fallback to another specific technique when the selected
one fails (WIP)
14. « flash » technique
« windows » technique
Portable Effects & Shaders
"techniques" : [
{
"configuration" : [ "windows" ],
"passes" : [
{
"vertexShader" : …
"fragmentShader" : …
}
},
{
"configuration" : [ "flash" ],
"passes" : [
{
"vertexShader" : …
"fragmentShader" : …
},
{
"vertexShader" : …
"fragmentShader" : …
}
}
]
Group passes in a named
« technique »
Select that technique at
runtime based on some
flags
– Platform
– Available features/plugins
– Custom flags
18. C++11 is great, but…
Is a new language for most developers
It’s too complex for prototyping game design
Requires some setup to get started
Slow iteration times
19. Core Framework Language
Fast
Rich & expressive
Optimized for each target
C, C++, Java, C#...
VS
Javascript, Python, AS3…
Scripting Language
Simple
Interpreted
Dynamic
20. Complaints about ActionScript
Garbage collector is messy
No operators overloading
Bad performances
No (easy) concurrency
21. We chose… Lua!
Fits all the requirements of a scripting language
Vastly used by the video game industry (World of Warcraft, Fable
II & III, Neverwinter Nights, …)
– Complete list of games scripted with Lua
Very (very) fast
– LuaJIT is comparable to Javascript V8, if not faster
Designed to be embedded
Designed to script games
– Simple but very efficient syntax
– Minimalistic set of features but very extensible
– Coroutines!
22. C++ Lua? LuaGlue!
C++/Lua bindings
Open source project
– https://github.com/Tomasu/LuaGlue
– We contribute as much as possible
Leverage C++11
– Optimize as compile time as much as possible
– Simple binding interface
Used to bind 90% of Minko’s C++ API
– Write 100% of your app in Lua
23. ActionScript VS Lua
ActionScript
Messy garbage
collector
Lua
Customizable garbage
collector
No operators
overloading
Operators overloading
Bad performances
Very fast + custom
C/C++ bindings
No easy concurrency
Coroutines
24. Minko 3 VS Flash
Application
Application
Flash Runtime
Minko 3
ActionScript VM
Lua VM
Core Library
OS
ANE
Core Framework & Plugins
OS
28. Coroutines
A function can suspend its execution…
– coroutine.yield()
… and then resume « sometime later »
– coroutine.resume()
Gives the illusion of parallelism
– Yet no complicated threading stuff
– Fully cross-platform
Allow the creation of non-blocking (heavy) functions
Can (always?) be used in place of events/callbacks
31. Event driven
Coroutine driven
Action => reaction
Breaks the code in multiple handlers
Messy execution flow
Messy scopes
Wait for « something » to
happen
Non-blocking
Simple execution flow
Meaningful and readable
32. You chose!
C++
– Performances
– Rich and powerful language
Lua
– Simple and efficient
– Fast iteration times
Mix both in any project on any target
33. 2014
New Minko editor
–
–
–
–
–
Script editor
Live coding
ShaderLab
Animations editor
Plugins system
http://www.youtube.com/watch?v=yuR1e1PjU8Y
Open beta of Minko 3 (January)
An amazing new Minko product for businesses and teams
34. Don’t forget to check http://minko.io !
JOYEUX NOEL!
THANK YOU SERGEY